├── Services
├── app
│ ├── .gitignore
│ ├── libs
│ │ └── classes.jar
│ ├── proguard-rules.pro
│ ├── src
│ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ └── java
│ │ │ └── ly
│ │ │ └── count
│ │ │ └── unity
│ │ │ └── push_fcm
│ │ │ ├── MessageStore.java
│ │ │ └── NotificationBroadcastReceiver.java
│ └── build.gradle
├── notifications
│ ├── .gitignore
│ ├── src
│ │ ├── main
│ │ │ ├── res
│ │ │ │ ├── raw
│ │ │ │ │ └── boing.mp3
│ │ │ │ ├── drawable-hdpi
│ │ │ │ │ └── ic_stat.png
│ │ │ │ ├── drawable-mdpi
│ │ │ │ │ └── ic_stat.png
│ │ │ │ ├── values
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ └── google-services.xml
│ │ │ │ ├── drawable-xhdpi
│ │ │ │ │ └── ic_stat.png
│ │ │ │ ├── drawable-xxhdpi
│ │ │ │ │ └── ic_stat.png
│ │ │ │ └── drawable-xxxhdpi
│ │ │ │ │ └── ic_stat.png
│ │ │ └── AndroidManifest.xml
│ │ ├── test
│ │ │ └── java
│ │ │ │ └── ly
│ │ │ │ └── count
│ │ │ │ └── unity
│ │ │ │ └── push_fcm
│ │ │ │ └── ExampleUnitTest.java
│ │ └── androidTest
│ │ │ └── java
│ │ │ └── ly
│ │ │ └── count
│ │ │ └── unity
│ │ │ └── push_fcm
│ │ │ └── ExampleInstrumentedTest.java
│ ├── build.gradle
│ └── proguard-rules.pro
├── settings.gradle
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── .idea
│ ├── encodings.xml
│ ├── misc.xml
│ ├── runConfigurations.xml
│ └── gradle.xml
├── .gitignore
├── build.gradle
├── gradle.properties
└── gradlew.bat
├── Assets
├── Countly
│ ├── csc.rsp
│ ├── Plugins
│ │ ├── Android
│ │ │ ├── Notifications
│ │ │ │ ├── res
│ │ │ │ │ ├── raw
│ │ │ │ │ │ ├── boing.mp3
│ │ │ │ │ │ └── boing.mp3.meta
│ │ │ │ │ ├── values
│ │ │ │ │ │ ├── colors.xml
│ │ │ │ │ │ ├── colors.xml.meta
│ │ │ │ │ │ ├── strings.xml.meta
│ │ │ │ │ │ ├── google-services.xml.meta
│ │ │ │ │ │ ├── strings.xml
│ │ │ │ │ │ └── google-services.xml
│ │ │ │ │ ├── drawable-hdpi
│ │ │ │ │ │ ├── ic_stat.png
│ │ │ │ │ │ └── ic_stat.png.meta
│ │ │ │ │ ├── drawable-mdpi
│ │ │ │ │ │ ├── ic_stat.png
│ │ │ │ │ │ └── ic_stat.png.meta
│ │ │ │ │ ├── drawable-xhdpi
│ │ │ │ │ │ ├── ic_stat.png
│ │ │ │ │ │ └── ic_stat.png.meta
│ │ │ │ │ ├── drawable-xxhdpi
│ │ │ │ │ │ ├── ic_stat.png
│ │ │ │ │ │ └── ic_stat.png.meta
│ │ │ │ │ ├── drawable-xxxhdpi
│ │ │ │ │ │ ├── ic_stat.png
│ │ │ │ │ │ └── ic_stat.png.meta
│ │ │ │ │ ├── raw.meta
│ │ │ │ │ ├── values.meta
│ │ │ │ │ ├── drawable-hdpi.meta
│ │ │ │ │ ├── drawable-mdpi.meta
│ │ │ │ │ ├── drawable-xhdpi.meta
│ │ │ │ │ ├── drawable-xxhdpi.meta
│ │ │ │ │ └── drawable-xxxhdpi.meta
│ │ │ │ ├── project.properties
│ │ │ │ ├── libs
│ │ │ │ │ ├── countly_notifications.jar
│ │ │ │ │ └── countly_notifications.jar.meta
│ │ │ │ ├── build.gradle.meta
│ │ │ │ ├── AndroidManifest.xml.meta
│ │ │ │ ├── libs.meta
│ │ │ │ ├── res.meta
│ │ │ │ ├── project.properties.meta
│ │ │ │ ├── build.gradle
│ │ │ │ └── AndroidManifest.xml
│ │ │ └── Notifications.meta
│ │ ├── Notifications.meta
│ │ ├── iBoxDB
│ │ │ ├── Dao.cs.meta
│ │ │ ├── iBoxDB.NET2.dll
│ │ │ └── iBoxDB.NET2.dll.meta
│ │ ├── CountlySDK
│ │ │ ├── Editor.meta
│ │ │ ├── Services.meta
│ │ │ ├── Countly.cs.meta
│ │ │ ├── Persistance.meta
│ │ │ ├── CountlyUtils.cs.meta
│ │ │ ├── Persistance
│ │ │ │ ├── Dao.meta
│ │ │ │ ├── Entities.meta
│ │ │ │ ├── IModel.cs.meta
│ │ │ │ ├── Repositories.meta
│ │ │ │ ├── Dao
│ │ │ │ │ ├── SegmentDao.cs.meta
│ │ │ │ │ └── SegmentDao.cs
│ │ │ │ ├── Entities
│ │ │ │ │ ├── IEntity.cs.meta
│ │ │ │ │ ├── ConfigEntity.cs.meta
│ │ │ │ │ ├── EventEntity.cs.meta
│ │ │ │ │ ├── RequestEntity.cs.meta
│ │ │ │ │ ├── SegmentEntity.cs.meta
│ │ │ │ │ ├── EventNumberInSameSessionEntity.cs.meta
│ │ │ │ │ ├── IEntity.cs
│ │ │ │ │ ├── ConfigEntity.cs
│ │ │ │ │ ├── EventEntity.cs
│ │ │ │ │ ├── RequestEntity.cs
│ │ │ │ │ ├── SegmentEntity.cs
│ │ │ │ │ └── EventNumberInSameSessionEntity.cs
│ │ │ │ ├── Repositories
│ │ │ │ │ ├── Impls.meta
│ │ │ │ │ ├── Repository.cs.meta
│ │ │ │ │ ├── RequestRepository.cs.meta
│ │ │ │ │ ├── AbstractEventRepository.cs.meta
│ │ │ │ │ ├── Impls
│ │ │ │ │ │ ├── ViewEventRepository.cs.meta
│ │ │ │ │ │ ├── NonViewEventRepository.cs.meta
│ │ │ │ │ │ ├── NonViewEventRepository.cs
│ │ │ │ │ │ └── ViewEventRepository.cs
│ │ │ │ │ ├── RequestRepository.cs
│ │ │ │ │ ├── AbstractEventRepository.cs
│ │ │ │ │ └── Repository.cs
│ │ │ │ └── IModel.cs
│ │ │ ├── Models
│ │ │ │ ├── SegmentModel.cs.meta
│ │ │ │ ├── CountlyAuthModel.cs.meta
│ │ │ │ ├── CountlyAuthModel.cs
│ │ │ │ ├── TimeMetricModel.cs.meta
│ │ │ │ ├── CountlyConfigModel.cs.meta
│ │ │ │ ├── CountlyConfiguration.cs.meta
│ │ │ │ ├── CountlyEventModel.cs.meta
│ │ │ │ ├── CountlyRequestModel.cs.meta
│ │ │ │ ├── CountlyUserDetailsModel.cs.meta
│ │ │ │ ├── CountlyExceptionDetailModel.cs.meta
│ │ │ │ ├── SegmentModel.cs
│ │ │ │ ├── CountlyRequestModel.cs
│ │ │ │ ├── CountlyExceptionDetailModel.cs
│ │ │ │ ├── TimeMetricModel.cs
│ │ │ │ ├── CountlyUserDetailsModel.cs
│ │ │ │ ├── CountlyConfigModel.cs
│ │ │ │ └── CountlyEventModel.cs
│ │ │ ├── Helpers
│ │ │ │ ├── FirstLaunchAppHelper.cs.meta
│ │ │ │ ├── RequestCountlyHelper.cs.meta
│ │ │ │ ├── StorageAndMigrationHelper.cs.meta
│ │ │ │ ├── Constants.cs.meta
│ │ │ │ ├── Converter.cs.meta
│ │ │ │ ├── MetricHelper.cs.meta
│ │ │ │ ├── RequestBuilder.cs.meta
│ │ │ │ ├── CountlyLogHelper.cs.meta
│ │ │ │ ├── CountlyResponse.cs.meta
│ │ │ │ ├── SafeIDGenerator.cs.meta
│ │ │ │ ├── SafeIDGenerator.cs
│ │ │ │ ├── CountlyResponse.cs
│ │ │ │ ├── CountlyLogHelper.cs
│ │ │ │ ├── FirstLaunchAppHelper.cs
│ │ │ │ ├── Constants.cs
│ │ │ │ └── RequestBuilder.cs
│ │ │ ├── Services
│ │ │ │ ├── ConsentCountlyService.cs.meta
│ │ │ │ ├── EventCountlyService.cs.meta
│ │ │ │ ├── PushCountlyService.cs.meta
│ │ │ │ ├── SessionCountlyService.cs.meta
│ │ │ │ ├── ViewCountlyService.cs.meta
│ │ │ │ ├── DeviceIdCountlyService.cs.meta
│ │ │ │ ├── RemoteConfigCountlyService.cs.meta
│ │ │ │ ├── StarRatingCountlyService.cs.meta
│ │ │ │ ├── InitializationCountlyService.cs.meta
│ │ │ │ ├── Legacy
│ │ │ │ │ └── UserDetailsCountlyService.cs.meta
│ │ │ │ ├── Legacy.meta
│ │ │ │ ├── UserProfile.cs.meta
│ │ │ │ ├── LocationService.cs.meta
│ │ │ │ ├── AbstractBaseService.cs.meta
│ │ │ │ ├── CrashReportsCountlyService.cs.meta
│ │ │ │ ├── InitializationCountlyService.cs
│ │ │ │ └── StarRatingCountlyService.cs
│ │ │ ├── Interfaces
│ │ │ │ ├── IViewIDProvider.cs
│ │ │ │ ├── IViewModule.cs.meta
│ │ │ │ ├── IViewIDProvider.cs.meta
│ │ │ │ ├── IUserProfileModule.cs.meta
│ │ │ │ └── IUserProfileModule.cs
│ │ │ ├── Prefabs
│ │ │ │ ├── Countly.prefab.meta
│ │ │ │ └── Countly.prefab
│ │ │ ├── Enums.meta
│ │ │ ├── Helpers.meta
│ │ │ ├── Interfaces.meta
│ │ │ ├── Models.meta
│ │ │ ├── Prefabs.meta
│ │ │ ├── Enums
│ │ │ │ ├── DeviceIdType.cs
│ │ │ │ ├── Consents.cs.meta
│ │ │ │ ├── TestMode.cs.meta
│ │ │ │ ├── DeviceIdType.cs.meta
│ │ │ │ ├── Consents.cs
│ │ │ │ └── TestMode.cs
│ │ │ ├── CountlyMainThreadHandler.cs.meta
│ │ │ ├── Editor
│ │ │ │ ├── CountlyBuildProcessor.cs.meta
│ │ │ │ ├── EditorConfigSolutionFileGenerator.cs.meta
│ │ │ │ ├── CountlyBuildProcessor.cs
│ │ │ │ └── EditorConfigSolutionFileGenerator.cs
│ │ │ └── CountlyMainThreadHandler.cs
│ │ ├── Notifications
│ │ │ ├── Impls.meta
│ │ │ ├── Impls
│ │ │ │ ├── iOs.meta
│ │ │ │ ├── Android.meta
│ │ │ │ ├── Android
│ │ │ │ │ ├── AndroidBridge.cs.meta
│ │ │ │ │ ├── AndroidNotificationsService.cs.meta
│ │ │ │ │ └── AndroidBridge.cs
│ │ │ │ ├── ProxyNotificationsService.cs.meta
│ │ │ │ ├── iOs
│ │ │ │ │ ├── iOsNotificationsService.cs.meta
│ │ │ │ │ ├── IOSBridge.cs.meta
│ │ │ │ │ ├── IOSBridge.cs
│ │ │ │ │ └── iOsNotificationsService.cs
│ │ │ │ ├── NotificationsCallbackService.cs.meta
│ │ │ │ ├── ProxyNotificationsService.cs
│ │ │ │ └── NotificationsCallbackService.cs
│ │ │ ├── INotificationsService.cs.meta
│ │ │ └── INotificationsService.cs
│ │ ├── Editor.meta
│ │ ├── iBoxDB.meta
│ │ ├── iOS.meta
│ │ ├── Android.meta
│ │ ├── Countly.Core.asmdef.meta
│ │ ├── CountlySDK.meta
│ │ ├── Editor
│ │ │ ├── CountlyEditorMenu.cs.meta
│ │ │ └── CountlyEditorMenu.cs
│ │ ├── Countly.Core.asmdef
│ │ └── iOS
│ │ │ ├── CountlyPushHandlerInternal.h
│ │ │ ├── CountlyNotificationService.h.meta
│ │ │ ├── CountlyNotificationService.m.meta
│ │ │ ├── CountlyPushHandlerInternal.h.meta
│ │ │ ├── CountlyPushHandlerInternal.m.meta
│ │ │ └── CountlyNotificationService.h
│ ├── Example
│ │ ├── UI
│ │ │ ├── Cross.png
│ │ │ ├── CloseButton.prefab.meta
│ │ │ ├── DeviceIDUI.prefab.meta
│ │ │ ├── MainMenuUI.prefab.meta
│ │ │ ├── UserProfile.prefab.meta
│ │ │ ├── CrashReportingUI.prefab.meta
│ │ │ ├── CustomEventsUI.prefab.meta
│ │ │ ├── ViewsTrackingUI.prefab.meta
│ │ │ ├── LegacyUserDetailsUI.prefab.meta
│ │ │ ├── LegacyViewsTrackingUI.prefab.meta
│ │ │ └── Cross.png.meta
│ │ ├── Scenes.meta
│ │ ├── UI.meta
│ │ ├── Scenes
│ │ │ ├── ExampleUsageScene.unity.meta
│ │ │ └── FeatureTestScene.unity.meta
│ │ ├── Scripts.meta
│ │ └── Scripts
│ │ │ ├── Helpers.meta
│ │ │ ├── DeviceId.cs.meta
│ │ │ ├── UserDetail.cs.meta
│ │ │ ├── CrashReporting.cs.meta
│ │ │ ├── CustomEvents.cs.meta
│ │ │ ├── ViewTracking.cs.meta
│ │ │ ├── CountlyEntryPoint.cs.meta
│ │ │ ├── Helpers
│ │ │ ├── UIHelper.cs.meta
│ │ │ └── UIHelper.cs
│ │ │ ├── TestingEntryPoint.cs.meta
│ │ │ ├── DeviceId.cs
│ │ │ ├── CrashReporting.cs
│ │ │ └── CustomEvents.cs
│ ├── csc.rsp.meta
│ ├── License.txt.meta
│ ├── Example.meta
│ ├── Plugins.meta
│ └── License.txt
├── Countly.meta
├── Tests.meta
└── Tests
│ ├── PlayModeTests.meta
│ └── PlayModeTests
│ ├── Legacy Tests.meta
│ ├── PlayModeTests.asmdef.meta
│ ├── Scenarios.meta
│ ├── ConsentTests.cs.meta
│ ├── CrashTests.cs.meta
│ ├── DeviceIdTests.cs.meta
│ ├── EventTests.cs.meta
│ ├── HelpersTests.cs.meta
│ ├── LocationTests.cs.meta
│ ├── MigrationTests.cs.meta
│ ├── SessionTests.cs.meta
│ ├── TestUtility.cs.meta
│ ├── UtilsTests.cs.meta
│ ├── ViewsTests.cs.meta
│ ├── ConfigurationTests.cs.meta
│ ├── CustomIdProvider.cs.meta
│ ├── Scenarios
│ ├── UT_Utils.cs.meta
│ ├── MV_ManualView.cs.meta
│ ├── UP_UserProfile.cs.meta
│ └── UT_Utils.cs
│ ├── StarRatingTests.cs.meta
│ ├── UserProfileTests.cs.meta
│ ├── Legacy Tests
│ └── UserCustomDetailsTests.cs.meta
│ ├── CustomIdProvider.cs
│ └── PlayModeTests.asmdef
├── .vscode
├── extensions.json
├── launch.json
└── settings.json
├── ProjectSettings
├── ProjectVersion.txt
├── ClusterInputManager.asset
├── NetworkManager.asset
├── VersionControlSettings.asset
├── TimeManager.asset
├── VFXManager.asset
├── EditorBuildSettings.asset
├── PresetManager.asset
├── AudioManager.asset
├── TagManager.asset
├── EditorSettings.asset
├── UnityConnectSettings.asset
├── DynamicsManager.asset
├── PackageManagerSettings.asset
├── Physics2DSettings.asset
├── Packages
│ └── com.unity.testtools.codecoverage
│ │ └── Settings.json
├── NavMeshAreas.asset
├── GraphicsSettings.asset
└── AndroidResolverDependencies.xml
├── packages.config
├── SECURITY.md
├── LICENSE
├── .markdownlint.json
├── .gitignore
├── .github
└── workflows
│ └── release_notice.yml
├── app.config
└── Packages
└── manifest.json
/Services/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/Assets/Countly/csc.rsp:
--------------------------------------------------------------------------------
1 | -r:System.Web.dll
--------------------------------------------------------------------------------
/Services/notifications/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/Services/notifications/src/main/res/raw/boing.mp3:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Android/Notifications/res/raw/boing.mp3:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Services/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app', ':notifications'
2 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Android/Notifications/project.properties:
--------------------------------------------------------------------------------
1 | target=android-19
2 | android.library=true
3 |
--------------------------------------------------------------------------------
/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": [
3 | "visualstudiotoolsforunity.vstuc"
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/Services/app/libs/classes.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Countly/countly-sdk-unity/HEAD/Services/app/libs/classes.jar
--------------------------------------------------------------------------------
/ProjectSettings/ProjectVersion.txt:
--------------------------------------------------------------------------------
1 | m_EditorVersion: 2020.3.11f1
2 | m_EditorVersionWithRevision: 2020.3.11f1 (99c7afb366b3)
3 |
--------------------------------------------------------------------------------
/Assets/Countly/Example/UI/Cross.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Countly/countly-sdk-unity/HEAD/Assets/Countly/Example/UI/Cross.png
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Notifications.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 032260739e00402e9acb68fef6052a78
3 | timeCreated: 1558805361
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/iBoxDB/Dao.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a21c26461e7d46e6ab92bfdf33202c0a
3 | timeCreated: 1558447266
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Editor.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 89ecc09e84024fddb5ba47347451fcf2
3 | timeCreated: 1558562059
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Services.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 4681c00bc2ce43a2b6a15ca5a5f36a0a
3 | timeCreated: 1558168810
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Notifications/Impls.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 6a988d6d743842169d4213023aeb73cc
3 | timeCreated: 1558805423
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Countly.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 3830ecbe0f874710af3c6377b4540a81
3 | timeCreated: 1558362112
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Persistance.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 78056916108d4abbbdd9ef6a6b02fd51
3 | timeCreated: 1558505411
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Notifications/Impls/iOs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 66793682e5d9430b96f24079e8aca304
3 | timeCreated: 1565183227
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/CountlyUtils.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 3228d29bd25f4f828a05e88aa3fe434d
3 | timeCreated: 1558879568
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Persistance/Dao.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: f983d718392b4f5291d9b20089e6df6b
3 | timeCreated: 1558587304
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Notifications/Impls/Android.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: e53165b796114acea0f3bf58f60d53e4
3 | timeCreated: 1558980059
--------------------------------------------------------------------------------
/Services/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Countly/countly-sdk-unity/HEAD/Services/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Models/SegmentModel.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 723c2ed6e5b04e368b85ef9a77bc7ace
3 | timeCreated: 1558586214
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Persistance/Entities.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 729b37a54f994dafa498951910d4a497
3 | timeCreated: 1558584814
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Persistance/IModel.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: aacad08f0d3f414fb29161492dbc8986
3 | timeCreated: 1558560483
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/iBoxDB/iBoxDB.NET2.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Countly/countly-sdk-unity/HEAD/Assets/Countly/Plugins/iBoxDB/iBoxDB.NET2.dll
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Models/CountlyAuthModel.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d0f40ff388c54f758ada9d29b6dce774
3 | timeCreated: 1558361965
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Persistance/Repositories.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 080902998c13411ebfd4f2f72449a8b7
3 | timeCreated: 1558559709
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Notifications/INotificationsService.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 164a5816f19145c2b1f4133e7db7c481
3 | timeCreated: 1558805383
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Helpers/FirstLaunchAppHelper.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 8cdc40a19ec94e87b450dca94c53c531
3 | timeCreated: 1561647792
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Helpers/RequestCountlyHelper.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 10068d8aa2d74079b7015ede45faa9ab
3 | timeCreated: 1558169636
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Persistance/Dao/SegmentDao.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 4d452538c8634102b2234ce14e4c1f1f
3 | timeCreated: 1558587310
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Persistance/Entities/IEntity.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c896daf60a6842349a0472b2fb99b418
3 | timeCreated: 1558595301
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Persistance/Repositories/Impls.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c38df62caed94c26a8057fe50db8cdea
3 | timeCreated: 1558790076
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Services/ConsentCountlyService.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 72c3ce7d33ea438aa6c4b8d17afb144e
3 | timeCreated: 1558168477
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Services/EventCountlyService.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 1a4c2f93faf746cb948941574c4c8741
3 | timeCreated: 1558168445
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Services/PushCountlyService.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 1aa26b96f7c44a41b25433c47c0e59c6
3 | timeCreated: 1558167003
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Services/SessionCountlyService.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d77293e485014fb1a0e8e2faf28cf737
3 | timeCreated: 1558166452
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Services/ViewCountlyService.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: fc5d108d3fe148e4ac4e4bc72cf05c3d
3 | timeCreated: 1558167957
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Notifications/Impls/Android/AndroidBridge.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 004a2bc839324d6ea50ae41214158219
3 | timeCreated: 1558980070
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Helpers/StorageAndMigrationHelper.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 15f82e900ca34febb540457a1680e2c3
3 | timeCreated: 1558447278
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Persistance/Entities/ConfigEntity.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 102eadb1d1dc48a3862c8521ad8bbfcb
3 | timeCreated: 1558879303
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Persistance/Entities/EventEntity.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 13d290097367478699fed39c06cde61d
3 | timeCreated: 1558505424
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Persistance/Entities/RequestEntity.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c737b431ae4f4bc68605df05421c1e11
3 | timeCreated: 1558559474
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Persistance/Entities/SegmentEntity.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: edcec07aa0e542c8a39bda1dc2139ac8
3 | timeCreated: 1558585247
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Persistance/Repositories/Repository.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 4df9564071d345988369a6e7636d335a
3 | timeCreated: 1558558528
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Services/DeviceIdCountlyService.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: e495083a4dda4c55be0f9454a9aa1643
3 | timeCreated: 1558166363
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Services/RemoteConfigCountlyService.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 6bd5dd84b2ae4c9db1afc8c01d20dbc0
3 | timeCreated: 1558178944
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Services/StarRatingCountlyService.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 9fc426533bc643cf992366b6c4e4a30a
3 | timeCreated: 1558167990
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Notifications/Impls/ProxyNotificationsService.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 4fc63e171b0c4e4cac55de2533158c1a
3 | timeCreated: 1558805531
--------------------------------------------------------------------------------
/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Services/InitializationCountlyService.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 5c6a4805a6164d80af8a1d1fcbb656a4
3 | timeCreated: 1558167250
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Notifications/Impls/iOs/iOsNotificationsService.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d69e3d75acc447a9ab55ee580a6a3175
3 | timeCreated: 1565183242
--------------------------------------------------------------------------------
/Services/notifications/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Persistance/Repositories/RequestRepository.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 238b3016d4ec401ea4d26ddbd6fda13b
3 | timeCreated: 1558559842
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Services/Legacy/UserDetailsCountlyService.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 82059bc884b140ce80eb5a8f9cc0249a
3 | timeCreated: 1558168052
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Notifications/Impls/Android/AndroidNotificationsService.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: fc5fd451b33c4a8883272fa90c273ac7
3 | timeCreated: 1558804290
--------------------------------------------------------------------------------
/Services/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Persistance/Repositories/AbstractEventRepository.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: f57c43c600064a94b9409ca758a2d991
3 | timeCreated: 1558507819
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Persistance/Repositories/Impls/ViewEventRepository.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c90836d26c3c4ebab87f686de579e436
3 | timeCreated: 1558790083
--------------------------------------------------------------------------------
/ProjectSettings/ClusterInputManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!236 &1
4 | ClusterInputManager:
5 | m_ObjectHideFlags: 0
6 | m_Inputs: []
7 |
--------------------------------------------------------------------------------
/Services/notifications/src/main/res/drawable-hdpi/ic_stat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Countly/countly-sdk-unity/HEAD/Services/notifications/src/main/res/drawable-hdpi/ic_stat.png
--------------------------------------------------------------------------------
/Services/notifications/src/main/res/drawable-mdpi/ic_stat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Countly/countly-sdk-unity/HEAD/Services/notifications/src/main/res/drawable-mdpi/ic_stat.png
--------------------------------------------------------------------------------
/Services/notifications/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #009E60
4 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Persistance/Entities/EventNumberInSameSessionEntity.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 45bfebdfce334479975783a0c5afa68b
3 | timeCreated: 1561559472
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Persistance/Repositories/Impls/NonViewEventRepository.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: bd0cbfcfc9af48dfac72610baefcd38a
3 | timeCreated: 1558790125
--------------------------------------------------------------------------------
/Services/notifications/src/main/res/drawable-xhdpi/ic_stat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Countly/countly-sdk-unity/HEAD/Services/notifications/src/main/res/drawable-xhdpi/ic_stat.png
--------------------------------------------------------------------------------
/Services/notifications/src/main/res/drawable-xxhdpi/ic_stat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Countly/countly-sdk-unity/HEAD/Services/notifications/src/main/res/drawable-xxhdpi/ic_stat.png
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Interfaces/IViewIDProvider.cs:
--------------------------------------------------------------------------------
1 | interface IViewIDProvider
2 | {
3 | public string GetCurrentViewId();
4 | public string GetPreviousViewId();
5 | }
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Persistance/IModel.cs:
--------------------------------------------------------------------------------
1 | namespace Plugins.CountlySDK.Persistance
2 | {
3 | public interface IModel
4 | {
5 | long Id { set; get; }
6 | }
7 | }
--------------------------------------------------------------------------------
/Services/notifications/src/main/res/drawable-xxxhdpi/ic_stat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Countly/countly-sdk-unity/HEAD/Services/notifications/src/main/res/drawable-xxxhdpi/ic_stat.png
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Android/Notifications/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #009E60
4 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Persistance/Entities/IEntity.cs:
--------------------------------------------------------------------------------
1 | namespace Plugins.CountlySDK.Persistance.Entities
2 | {
3 | public interface IEntity
4 | {
5 | long GetId();
6 | }
7 | }
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Android/Notifications/libs/countly_notifications.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Countly/countly-sdk-unity/HEAD/Assets/Countly/Plugins/Android/Notifications/libs/countly_notifications.jar
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Android/Notifications/res/drawable-hdpi/ic_stat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Countly/countly-sdk-unity/HEAD/Assets/Countly/Plugins/Android/Notifications/res/drawable-hdpi/ic_stat.png
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Android/Notifications/res/drawable-mdpi/ic_stat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Countly/countly-sdk-unity/HEAD/Assets/Countly/Plugins/Android/Notifications/res/drawable-mdpi/ic_stat.png
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Android/Notifications/res/drawable-xhdpi/ic_stat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Countly/countly-sdk-unity/HEAD/Assets/Countly/Plugins/Android/Notifications/res/drawable-xhdpi/ic_stat.png
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Android/Notifications/res/drawable-xxhdpi/ic_stat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Countly/countly-sdk-unity/HEAD/Assets/Countly/Plugins/Android/Notifications/res/drawable-xxhdpi/ic_stat.png
--------------------------------------------------------------------------------
/Assets/Countly/csc.rsp.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a24005f16a377574c88b9a818a391065
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Countly/License.txt.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: ac61644ce575a504d9b3aad5656edf8b
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Android/Notifications/res/drawable-xxxhdpi/ic_stat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Countly/countly-sdk-unity/HEAD/Assets/Countly/Plugins/Android/Notifications/res/drawable-xxxhdpi/ic_stat.png
--------------------------------------------------------------------------------
/Assets/Countly.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 3b482047f13654c10b389c5670c49dc0
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Tests.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 99182625ac6c8428d80ae038968627f4
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/ProjectSettings/NetworkManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!149 &1
4 | NetworkManager:
5 | m_ObjectHideFlags: 0
6 | m_DebugLevel: 0
7 | m_Sendrate: 15
8 | m_AssetToPrefab: {}
9 |
--------------------------------------------------------------------------------
/Assets/Countly/Example.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 1f86eeccc47894b63abdac26fbfbac3e
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Countly/Example/UI/CloseButton.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 169d3975a40699b4ca9337a23ec6f745
3 | PrefabImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Countly/Example/UI/DeviceIDUI.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: efa0dfa14625d794b974ea9728fdb8c6
3 | PrefabImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Countly/Example/UI/MainMenuUI.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 50d4d41c61e965d44885fd3890c43f1a
3 | PrefabImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Countly/Example/UI/UserProfile.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 797d9b1b797d54814bc0f17642e3a00c
3 | PrefabImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 2e22156c8cc414bce86eab1672f91139
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Countly/Example/Scenes.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 7a6956c18c05c2c45b43ed37e6562615
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Countly/Example/UI.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c70b4e7122d350844bca609265e6e15d
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Countly/Example/UI/CrashReportingUI.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d516f76b3f712e942aa385abf849d1e5
3 | PrefabImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Countly/Example/UI/CustomEventsUI.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 69b8c2e134d943b45bdb9ae377d6ed17
3 | PrefabImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Countly/Example/UI/ViewsTrackingUI.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: bd1b25aef738848f1b716b400c793eef
3 | PrefabImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Editor.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: bae5b82d575b041f6ac929635a3a0af7
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/iBoxDB.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 520f49c5f44bf4772a404746fd6b6817
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/iOS.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 8be2de556eb24433ea13a2c0523dda7d
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Tests/PlayModeTests.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 79e2bd9e9b0f84f41ad460e51715d6a0
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/.vscode/launch.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "0.2.0",
3 | "configurations": [
4 | {
5 | "name": "Attach to Unity",
6 | "type": "vstuc",
7 | "request": "attach"
8 | }
9 | ]
10 | }
--------------------------------------------------------------------------------
/Assets/Countly/Example/Scenes/ExampleUsageScene.unity.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: eb9a0832f522bc04494538f872502d25
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Countly/Example/Scenes/FeatureTestScene.unity.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: f8c3091d14986484992b210a28ee7256
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Countly/Example/Scripts.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 0c5e84ea271405141a40781891894ca1
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Countly/Example/UI/LegacyUserDetailsUI.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: ba72491db5727ac49b1cac276852faef
3 | PrefabImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Countly/Example/UI/LegacyViewsTrackingUI.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: bd4a918108053bd4a89b25cfe870c6ae
3 | PrefabImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Android.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 42654a433bb069a41915ee252f235450
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Countly.Core.asmdef.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 097393a5382fd4a89a5a9de92743d1db
3 | AssemblyDefinitionImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: ab446465b50f345e2b1d5e33f79b9df9
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Prefabs/Countly.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: fa112482eec144a75b81bc5f456724c6
3 | PrefabImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/SECURITY.md:
--------------------------------------------------------------------------------
1 | # Security Policy
2 |
3 | Security is very important to us. If you discover any issue regarding security, please disclose the information responsibly by sending an email to security@count.ly and not by creating a GitHub issue.
4 |
--------------------------------------------------------------------------------
/Assets/Countly/Example/Scripts/Helpers.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 8f04bf5fe61651e4493e023c9b81b50e
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Android/Notifications/build.gradle.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a72242a9a49bb604792c563f1c745717
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Enums.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 7691f6e889a614b6d8c281cf9b7e34f8
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Tests/PlayModeTests/Legacy Tests.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 182897e366c1949f2b7f0f765609863f
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Tests/PlayModeTests/PlayModeTests.asmdef.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 677861e368dd54bc1a7353a9a7d00f5f
3 | AssemblyDefinitionImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Tests/PlayModeTests/Scenarios.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: fd0447047643343ba92a69e92d1fa3c6
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Android/Notifications/AndroidManifest.xml.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 8618fd90e6badcc4abc1b3022c3b9407
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Android/Notifications/res/raw/boing.mp3.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 3e32e563e3e27ad4b8d1bd5824d11fcd
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Helpers.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 927d480b8fdac49b6a0938d0eb5210c3
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Interfaces.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 9aafa2f9edac44a95ab66501602f97c5
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Models.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 2cb148f146f284e4b8f066c100d82723
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Prefabs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 7a3fe566f165d4cff988d4cc8e484eba
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Android/Notifications/libs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: eb5a9bfee7719454186dc3b2dd2fa303
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Android/Notifications/res.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: cd88834a2900f7343b800ff8b234dcd4
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Android/Notifications/res/values/colors.xml.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 8162efb213a02e14aa916b59d48b0e8d
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Android/Notifications/res/values/strings.xml.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 13e024fc58f4cc94b969e9c29edd8059
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Services/Legacy.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: e79b3b516b5f84eacad0fd5ebff61be5
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Android/Notifications/libs/countly_notifications.jar.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: da2c1f759b264a94cbe2456e2801a556
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Android/Notifications/res/drawable-hdpi/ic_stat.png.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 2974d04a15623be449833e09064fd561
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Android/Notifications/res/drawable-mdpi/ic_stat.png.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 0207c1890ee33024884518ba3737acb5
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Android/Notifications/res/drawable-xhdpi/ic_stat.png.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d2571a66aae04d24f8906a74ceb5e1ad
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Android/Notifications/res/raw.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 074b7b48bb5f5d94db4dcad18f50ec23
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Android/Notifications/res/values/google-services.xml.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 44c805c6ebf027a41a051869720c8ed8
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Android/Notifications/res/drawable-xxhdpi/ic_stat.png.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: cc8857bb1e7b4654db79d99fe3a2fd55
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Android/Notifications/res/drawable-xxxhdpi/ic_stat.png.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c7877cc89683b6647b4242d2af1d5c6d
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Android/Notifications/res/values.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 45232d7fb5be6834fa17f17990c15551
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/ProjectSettings/VersionControlSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!890905787 &1
4 | VersionControlSettings:
5 | m_ObjectHideFlags: 0
6 | m_Mode: Visible Meta Files
7 | m_CollabEditorSettings:
8 | inProgressEnabled: 1
9 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Android/Notifications/res/drawable-hdpi.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 36584b782bfbd184a84d13113e5ac06b
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Android/Notifications/res/drawable-mdpi.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: b8a43c4d5d8f31647a4a7425a3efa26f
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Android/Notifications/res/drawable-xhdpi.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 340c2ee999c2b4d43954fcf16f6c8178
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Android/Notifications/res/drawable-xxhdpi.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: ffc03b2be4a18b54da6e2e7fb4051dc6
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Enums/DeviceIdType.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 |
3 | namespace Plugins.CountlySDK.Enums
4 | {
5 | public enum DeviceIdType
6 | {
7 | SDKGenerated = 0,
8 | DeveloperProvided = 1,
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Android/Notifications/project.properties.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: be3c1034f104a9a44b544248460e4833
3 | timeCreated: 1427838343
4 | licenseType: Free
5 | DefaultImporter:
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Android/Notifications/res/drawable-xxxhdpi.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 9532dc1b68016b84a9316c6e91208cc1
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/ProjectSettings/TimeManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!5 &1
4 | TimeManager:
5 | m_ObjectHideFlags: 0
6 | Fixed Timestep: 0.0167
7 | Maximum Allowed Timestep: 0.1
8 | m_TimeScale: 1
9 | Maximum Particle Timestep: 0.03
10 |
--------------------------------------------------------------------------------
/Services/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/caches
5 | /.idea/libraries
6 | /.idea/modules.xml
7 | /.idea/workspace.xml
8 | /.idea/navEditor.xml
9 | /.idea/assetWizardSettings.xml
10 | .DS_Store
11 | /build
12 | /captures
13 | .externalNativeBuild
14 |
--------------------------------------------------------------------------------
/Services/notifications/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | notifications
3 | General Notifications
4 | News and Announcements
5 |
6 |
--------------------------------------------------------------------------------
/Services/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Sat May 25 18:10:41 SAMT 2019
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip
7 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Android/Notifications/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | notifications
3 | General Notifications
4 | News and Announcements
5 |
6 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Models/CountlyAuthModel.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Plugins.CountlySDK.Models
4 | {
5 | [Serializable]
6 | public class CountlyAuthModel
7 | {
8 | public string ServerUrl;
9 | public string AppKey;
10 | public string DeviceId;
11 | }
12 | }
--------------------------------------------------------------------------------
/Services/notifications/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 |
3 | android {
4 | compileSdkVersion 28
5 | defaultConfig {
6 | minSdkVersion 16
7 | targetSdkVersion 28
8 | }
9 | }
10 |
11 | dependencies {
12 | implementation fileTree(dir: 'libs', include: ['*.jar'])
13 | }
14 |
--------------------------------------------------------------------------------
/Assets/Countly/Example/Scripts/DeviceId.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: bc40b56949e26423f82bc1f375f080fc
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Countly/Example/Scripts/UserDetail.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 6b3a294868df74d8ba725e07dc0eb11a
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Tests/PlayModeTests/ConsentTests.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: e25b0e7acf6c7425692785d41bfab3d5
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Tests/PlayModeTests/CrashTests.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: ea1ca66a7e90146f8b2f4e611d7fb47d
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Tests/PlayModeTests/DeviceIdTests.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 002c482069ced49319aa1e62c9902c81
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Tests/PlayModeTests/EventTests.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 40d9829b7bd9b4e509437d8fd81b8328
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Tests/PlayModeTests/HelpersTests.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: e0e81efcd550110489d933d43bc02ebe
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Tests/PlayModeTests/LocationTests.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 8d5ec0db6ed2e40cdb0b7966cce4951c
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Tests/PlayModeTests/MigrationTests.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 7b401d54a115d79efb69489ebf064714
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Tests/PlayModeTests/SessionTests.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 7d9a5a59816d646c0900db2f880a9434
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Tests/PlayModeTests/TestUtility.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: cd5ddb89ea5a548bdba634f2dbc5735d
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Tests/PlayModeTests/UtilsTests.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d12ec71a8af9e894595ac10937bf398d
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Tests/PlayModeTests/ViewsTests.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 5cc29c9356dd147ddad9191134306d2f
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Countly/Example/Scripts/CrashReporting.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: e09eb3cfdc58e4716b202eb3b6955574
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Countly/Example/Scripts/CustomEvents.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 30efcc154dc024a6e8839fbbb2e80bc1
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Countly/Example/Scripts/ViewTracking.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: ab1106b6f017f417fb7d2071bebdda44
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Tests/PlayModeTests/ConfigurationTests.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d2fccd8df30714ae6acac61c7d12c630
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Tests/PlayModeTests/CustomIdProvider.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 27ba06a94d1aa470f95e7a8870136e58
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Tests/PlayModeTests/Scenarios/UT_Utils.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: e248ec36e4b014e8a92c331b9b0f7947
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Tests/PlayModeTests/StarRatingTests.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: faae09b82f5504050a7adc9293c79220
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Tests/PlayModeTests/UserProfileTests.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 2419e14de544b40e49875d4b422e2998
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Countly/Example/Scripts/CountlyEntryPoint.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d60fd5ed058d6424eb8f42a5f548adb1
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Countly/Example/Scripts/Helpers/UIHelper.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: bd6b66a6afc69da4fac235222f0d698d
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Countly/Example/Scripts/TestingEntryPoint.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 0fe17d91ff9ae4b6d94feac514b2327f
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Enums/Consents.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 312bd0051f5454b2f9bdeeafe3548650
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Enums/TestMode.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: e871812cbd7947f43acf93d4fba37d98
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Helpers/Constants.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: e9c27426cbaf3f745b77fb9cee7ab4dc
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Helpers/Converter.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 8aebe53c7fe746c7aa484d09ab8785d9
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Editor/CountlyEditorMenu.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 32c4e32b3d5203f439cd9e0d550fb7c5
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Tests/PlayModeTests/Scenarios/MV_ManualView.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c2514dbbbab034d21b1ec49ec662cf64
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Tests/PlayModeTests/Scenarios/UP_UserProfile.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d95fd5967952741c9a09df29efc47e2a
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Enums/DeviceIdType.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 5e994720d64abf343a472003f4946429
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Helpers/MetricHelper.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: e5ba923b54226f0448a3e813e934425c
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Helpers/RequestBuilder.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 76028af6f7ee06b4c9533efc184cd2e5
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Interfaces/IViewModule.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 9f64177a442064555be12500bf14702a
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Models/TimeMetricModel.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 1db3d80ff5737434cad3fc9628788346
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Persistance/Entities/ConfigEntity.cs:
--------------------------------------------------------------------------------
1 | namespace Plugins.CountlySDK.Persistance.Entities
2 | {
3 | public class ConfigEntity : IEntity
4 | {
5 | public long Id;
6 | public string Json;
7 |
8 | public long GetId()
9 | {
10 | return Id;
11 | }
12 | }
13 | }
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Services/UserProfile.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 87188717b779c4c55a63a5514631403a
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Notifications/Impls/iOs/IOSBridge.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 5686c0ae3520a47bf9ada096663a8e6c
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/ProjectSettings/VFXManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!937362698 &1
4 | VFXManager:
5 | m_ObjectHideFlags: 0
6 | m_IndirectShader: {fileID: 0}
7 | m_CopyBufferShader: {fileID: 0}
8 | m_SortShader: {fileID: 0}
9 | m_RenderPipeSettingsPath:
10 | m_FixedTimeStep: 0.016666668
11 | m_MaxDeltaTime: 0.05
12 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/CountlyMainThreadHandler.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 47f183e7dc5294e22be5312cb78a308d
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Helpers/CountlyLogHelper.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 02f7513d0313344848c218c05adf5d45
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Helpers/CountlyResponse.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a35ea7954d8a0924089d8e3861197947
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Helpers/SafeIDGenerator.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c96f6a909dd164ddfa160749dcc2a7d5
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Interfaces/IViewIDProvider.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 80996e89904c04b8f8377dee55fd5f10
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Models/CountlyConfigModel.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: fb910fd4fc64f234da4ed69935f44829
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Models/CountlyConfiguration.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: e9ef1b74c00ad4028808f7609052280c
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Models/CountlyEventModel.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 767d8c9a84f0dfb40971165a212e5de7
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Models/CountlyRequestModel.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 8c27ebd93d630574c8ba96a5b4b2e949
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Persistance/Entities/EventEntity.cs:
--------------------------------------------------------------------------------
1 | namespace Plugins.CountlySDK.Persistance.Entities
2 | {
3 | public class EventEntity : IEntity
4 | {
5 | public long Id;
6 | public string Json;
7 |
8 | public long GetId()
9 | {
10 | return Id;
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Persistance/Entities/RequestEntity.cs:
--------------------------------------------------------------------------------
1 | namespace Plugins.CountlySDK.Persistance.Entities
2 | {
3 | public class RequestEntity : IEntity
4 | {
5 | public long Id;
6 | public string Json;
7 |
8 | public long GetId()
9 | {
10 | return Id;
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Services/LocationService.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 9de1f429519cc4039a22fb816ea03108
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Editor/CountlyBuildProcessor.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 0a4be9509a66cd04492a8428de13b7ee
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Interfaces/IUserProfileModule.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a87287ad3b5ac461ab182b258b05cabe
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Models/CountlyUserDetailsModel.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: bab6d79f6f2ce1f4493960cde14543f8
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Services/AbstractBaseService.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 101ce125fb920429cbb218bf7a78fb09
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Tests/PlayModeTests/Legacy Tests/UserCustomDetailsTests.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 520237029ff0a4165a53734f02f37b59
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Models/CountlyExceptionDetailModel.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 42df6c050b4af69498630216a70a1858
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Services/CrashReportsCountlyService.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 587fbe5dae4b6204799773100d0dd099
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Notifications/Impls/NotificationsCallbackService.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 462a4f2a0083e784f87301dfd6f0ce86
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/ProjectSettings/EditorBuildSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!1045 &1
4 | EditorBuildSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_Scenes:
8 | - enabled: 1
9 | path: Assets/Countly/Example/Scenes/ExampleUsageScene.unity
10 | guid: eb9a0832f522bc04494538f872502d25
11 | m_configObjects: {}
12 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Editor/EditorConfigSolutionFileGenerator.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 056bfdedc1c541d4b9a62aab34f642a3
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Enums/Consents.cs:
--------------------------------------------------------------------------------
1 | namespace Plugins.CountlySDK.Enums
2 | {
3 | public enum Consents
4 | {
5 | Push,
6 | Views,
7 | Users,
8 | Events,
9 | Clicks,
10 | Crashes,
11 | Location,
12 | Sessions,
13 | Feedback,
14 | StarRating,
15 | RemoteConfig
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Persistance/Entities/SegmentEntity.cs:
--------------------------------------------------------------------------------
1 | namespace Plugins.CountlySDK.Persistance.Entities
2 | {
3 | public class SegmentEntity : IEntity
4 | {
5 | public long Id;
6 | public string Json;
7 | public long EventId;
8 |
9 | public long GetId()
10 | {
11 | return Id;
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Editor/CountlyEditorMenu.cs:
--------------------------------------------------------------------------------
1 | using UnityEngine;
2 | using UnityEditor;
3 |
4 | #if UNITY_EDITOR
5 | public class CountlyEditorMenu
6 | {
7 | [MenuItem("Countly/SDK Documentation")]
8 | private static void SDKDocumentation()
9 | {
10 | Application.OpenURL("https://support.count.ly/hc/en-us/articles/360037813851-Unity");
11 | }
12 | }
13 | #endif
14 |
--------------------------------------------------------------------------------
/Services/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Assets/Tests/PlayModeTests/CustomIdProvider.cs:
--------------------------------------------------------------------------------
1 | using Plugins.CountlySDK;
2 |
3 | ///
4 | /// CustomIdProvider class is for testing purposes
5 | ///
6 | public class CustomIdProvider : ISafeIDGenerator
7 | {
8 | private int viewCount;
9 |
10 | public string GenerateValue()
11 | {
12 | viewCount++;
13 | return "idv" + viewCount.ToString();
14 | }
15 | }
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Persistance/Entities/EventNumberInSameSessionEntity.cs:
--------------------------------------------------------------------------------
1 | namespace Plugins.CountlySDK.Persistance.Entities
2 | {
3 | public class EventNumberInSameSessionEntity : IEntity
4 | {
5 | public long Id;
6 | public string EventKey;
7 | public int Number;
8 |
9 | public long GetId()
10 | {
11 | return Id;
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Countly.Core.asmdef:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Countly.Core",
3 | "references": [],
4 | "includePlatforms": [],
5 | "excludePlatforms": [],
6 | "allowUnsafeCode": false,
7 | "overrideReferences": false,
8 | "precompiledReferences": [],
9 | "autoReferenced": true,
10 | "defineConstraints": [],
11 | "versionDefines": [],
12 | "noEngineReferences": false
13 | }
--------------------------------------------------------------------------------
/ProjectSettings/PresetManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!1386491679 &1
4 | PresetManager:
5 | m_ObjectHideFlags: 0
6 | m_DefaultList:
7 | - type:
8 | m_NativeTypeID: 20
9 | m_ManagedTypePPtr: {fileID: 0}
10 | m_ManagedTypeFallback:
11 | defaultPresets:
12 | - m_Preset: {fileID: 2655988077585873504, guid: bfcfc320427f8224bbb7a96f3d3aebad,
13 | type: 2}
14 |
--------------------------------------------------------------------------------
/ProjectSettings/AudioManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!11 &1
4 | AudioManager:
5 | m_ObjectHideFlags: 0
6 | m_Volume: 1
7 | Rolloff Scale: 1
8 | Doppler Factor: 1
9 | Default Speaker Mode: 2
10 | m_SampleRate: 0
11 | m_DSPBufferSize: 1024
12 | m_VirtualVoiceCount: 512
13 | m_RealVoiceCount: 32
14 | m_SpatializerPlugin:
15 | m_AmbisonicDecoderPlugin:
16 | m_DisableAudio: 0
17 | m_VirtualizeEffects: 1
18 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Helpers/SafeIDGenerator.cs:
--------------------------------------------------------------------------------
1 | using System.Collections;
2 | using System.Collections.Generic;
3 | using UnityEngine;
4 |
5 | namespace Plugins.CountlySDK
6 | {
7 | public interface ISafeIDGenerator
8 | {
9 | string GenerateValue();
10 | }
11 |
12 | public class SafeIDGenerator : ISafeIDGenerator
13 | {
14 | public string GenerateValue()
15 | {
16 | return CountlyUtils.SafeRandomVal();
17 | }
18 | }
19 | }
20 |
21 |
--------------------------------------------------------------------------------
/Services/notifications/src/test/java/ly/count/unity/push_fcm/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package ly.count.unity.push_fcm;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.*;
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * @see Testing documentation
11 | */
12 | public class ExampleUnitTest {
13 | @Test
14 | public void addition_isCorrect() {
15 | assertEquals(4, 2 + 2);
16 | }
17 | }
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Notifications/INotificationsService.cs:
--------------------------------------------------------------------------------
1 | using Plugins.CountlySDK.Helpers;
2 | using System;
3 | using System.Threading.Tasks;
4 |
5 | namespace Notifications
6 | {
7 | public interface INotificationsService
8 | {
9 | bool IsInitializedWithoutError { get; set; }
10 | void GetToken(Action result);
11 | void OnNotificationClicked(Action result);
12 | void OnNotificationReceived(Action result);
13 | Task ReportPushActionAsync();
14 | }
15 | }
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Helpers/CountlyResponse.cs:
--------------------------------------------------------------------------------
1 | namespace Plugins.CountlySDK.Helpers
2 | {
3 | public struct CountlyResponse
4 | {
5 | public int StatusCode { get; set; }
6 | public bool IsSuccess { get; set; }
7 | public string ErrorMessage { get; set; }
8 | public string Data { get; set; }
9 |
10 | public override string ToString()
11 | {
12 | return $"{nameof(StatusCode)}: {StatusCode}, {nameof(IsSuccess)}: {IsSuccess}, {nameof(ErrorMessage)}: {ErrorMessage}, {nameof(Data)}: {Data}";
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Services/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
12 |
--------------------------------------------------------------------------------
/ProjectSettings/TagManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!78 &1
4 | TagManager:
5 | serializedVersion: 2
6 | tags:
7 | - BtnStartEvent
8 | - BtnReportView
9 | layers:
10 | - Default
11 | - TransparentFX
12 | - Ignore Raycast
13 | -
14 | - Water
15 | - UI
16 | -
17 | -
18 | -
19 | -
20 | -
21 | -
22 | -
23 | -
24 | -
25 | -
26 | -
27 | -
28 | -
29 | -
30 | -
31 | -
32 | -
33 | -
34 | -
35 | -
36 | -
37 | -
38 | -
39 | -
40 | -
41 | -
42 | m_SortingLayers:
43 | - name: Default
44 | uniqueID: 0
45 | locked: 0
46 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Enums/TestMode.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 |
3 | namespace Plugins.CountlySDK.Enums
4 | {
5 | public enum TestMode
6 | {
7 | None = -1,
8 | // NOTE: The integer values assigned are NOT MEANT TO BE CHANGED
9 | [Description("Used for Android/iOS Production build")]
10 | ProductionToken = 0,
11 | [Description("Used for iOS Debug/Development/Test build")]
12 | iOSTestToken = 1,
13 | [Description("Used for Android Debug/Development/Test build")]
14 | AndroidTestToken = 2,
15 | [Description("Used for iOS AdHoc build")]
16 | iOSAdHocToken = 2
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Services/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 | repositories {
5 | google()
6 | jcenter()
7 |
8 | }
9 | dependencies {
10 | classpath 'com.android.tools.build:gradle:3.4.0'
11 |
12 | // NOTE: Do not place your application dependencies here; they belong
13 | // in the individual module build.gradle files
14 | }
15 | }
16 |
17 | allprojects {
18 | repositories {
19 | google()
20 | jcenter()
21 |
22 | }
23 | }
24 |
25 | task clean(type: Delete) {
26 | delete rootProject.buildDir
27 | }
28 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Models/SegmentModel.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Linq;
3 | using Plugins.CountlySDK.Persistance;
4 |
5 | namespace Plugins.CountlySDK.Models
6 | {
7 | public class SegmentModel : Dictionary, IModel
8 | {
9 | public long Id { get; set; }
10 |
11 | public SegmentModel()
12 | {
13 | }
14 |
15 | public SegmentModel(IDictionary dictionary) : base(dictionary)
16 | {
17 | }
18 |
19 | public override string ToString()
20 | {
21 | return string.Join(";", this.Select(x => x.Key + "=" + x.Value).ToArray());
22 | }
23 | }
24 | }
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Persistance/Repositories/Impls/NonViewEventRepository.cs:
--------------------------------------------------------------------------------
1 | using Plugins.CountlySDK.Models;
2 | using Plugins.CountlySDK.Persistance.Dao;
3 | using Plugins.CountlySDK.Persistance.Entities;
4 | using Plugins.iBoxDB;
5 |
6 | namespace Plugins.CountlySDK.Persistance.Repositories.Impls
7 | {
8 | public class NonViewEventRepository : AbstractEventRepository
9 | {
10 | public NonViewEventRepository(Dao dao, SegmentDao segmentDao, CountlyLogHelper log) : base(dao, segmentDao, log)
11 | {
12 | }
13 |
14 | protected override bool ValidateModelBeforeEnqueue(CountlyEventModel model)
15 | {
16 | return true;
17 | }
18 | }
19 | }
--------------------------------------------------------------------------------
/Assets/Countly/Example/Scripts/DeviceId.cs:
--------------------------------------------------------------------------------
1 | using Notifications;
2 | using Plugins.CountlySDK;
3 | using Plugins.CountlySDK.Enums;
4 | using Plugins.CountlySDK.Models;
5 | using System;
6 | using System.Collections.Generic;
7 | using System.Threading;
8 | using System.Threading.Tasks;
9 | using UnityEngine;
10 | using UnityEngine.SceneManagement;
11 |
12 | public class DeviceId : MonoBehaviour
13 | {
14 | public async void ChangeDeviceIdWithMerge()
15 | {
16 | await Countly.Instance.Device.ChangeDeviceIdWithMerge("device-id");
17 |
18 | }
19 |
20 | public async void ChangeDeviceIdWithoutMerge()
21 | {
22 | await Countly.Instance.Device.ChangeDeviceIdWithoutMerge("new_device_id");
23 |
24 | }
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/iBoxDB/iBoxDB.NET2.dll.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 83a20d87ba4d643d4b3636a0b3f59ca5
3 | PluginImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | iconMap: {}
7 | executionOrder: {}
8 | isPreloaded: 0
9 | isOverridable: 0
10 | platformData:
11 | - first:
12 | Any:
13 | second:
14 | enabled: 1
15 | settings: {}
16 | - first:
17 | Editor: Editor
18 | second:
19 | enabled: 0
20 | settings:
21 | DefaultValueInitialized: true
22 | - first:
23 | Windows Store Apps: WindowsStoreApps
24 | second:
25 | enabled: 0
26 | settings:
27 | CPU: AnyCPU
28 | userData:
29 | assetBundleName:
30 | assetBundleVariant:
31 |
--------------------------------------------------------------------------------
/Assets/Tests/PlayModeTests/PlayModeTests.asmdef:
--------------------------------------------------------------------------------
1 | {
2 | "name": "PlayModeTests",
3 | "rootNamespace": "",
4 | "references": [
5 | "Countly.Core",
6 | "UnityEngine.TestRunner",
7 | "UnityEditor.TestRunner"
8 | ],
9 | "includePlatforms": [],
10 | "excludePlatforms": [],
11 | "allowUnsafeCode": false,
12 | "overrideReferences": true,
13 | "precompiledReferences": [
14 | "nunit.framework.dll",
15 | "nunit.framework.dll",
16 | "Newtonsoft.Json.dll",
17 | "iBoxDB.NET2.dll"
18 | ],
19 | "autoReferenced": false,
20 | "defineConstraints": [
21 | "UNITY_INCLUDE_TESTS",
22 | "UNITY_INCLUDE_TESTS"
23 | ],
24 | "versionDefines": [],
25 | "noEngineReferences": false
26 | }
--------------------------------------------------------------------------------
/ProjectSettings/EditorSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!159 &1
4 | EditorSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 7
7 | m_ExternalVersionControlSupport: Visible Meta Files
8 | m_SerializationMode: 2
9 | m_LineEndingsForNewScripts: 2
10 | m_DefaultBehaviorMode: 1
11 | m_SpritePackerMode: 4
12 | m_SpritePackerPaddingPower: 1
13 | m_EtcTextureCompressorBehavior: 1
14 | m_EtcTextureFastCompressor: 1
15 | m_EtcTextureNormalCompressor: 2
16 | m_EtcTextureBestCompressor: 4
17 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef
18 | m_ProjectGenerationRootNamespace:
19 | m_UserGeneratedProjectSuffix:
20 | m_CollabEditorSettings:
21 | inProgressEnabled: 1
22 | m_EnableTextureStreamingInPlayMode: 1
23 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Android/Notifications/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 |
3 | dependencies {
4 | implementation fileTree(dir: 'bin', include: ['*.jar'])
5 | implementation fileTree(dir: 'libs', include: ['*.jar'])
6 | implementation 'com.google.firebase:firebase-messaging:20.2.4'
7 | }
8 |
9 | android {
10 | sourceSets {
11 | main {
12 | manifest.srcFile 'AndroidManifest.xml'
13 | res.srcDirs = ['res']
14 | assets.srcDirs = ['assets']
15 | jniLibs.srcDirs = ['libs']
16 | }
17 | }
18 |
19 | compileSdkVersion 30
20 | buildToolsVersion '29.0.2'
21 | defaultConfig {
22 | targetSdkVersion 19
23 | }
24 |
25 | lintOptions {
26 | abortOnError false
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Services/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 | # IDE (e.g. Android Studio) users:
3 | # Gradle settings configured through the IDE *will override*
4 | # any settings specified in this file.
5 | # For more details on how to configure your build environment visit
6 | # http://www.gradle.org/docs/current/userguide/build_environment.html
7 | # Specifies the JVM arguments used for the daemon process.
8 | # The setting is particularly useful for tweaking memory settings.
9 | org.gradle.jvmargs=-Xmx1536m
10 | # When configured, Gradle will run in incubating parallel mode.
11 | # This option should only be used with decoupled projects. More details, visit
12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
13 | # org.gradle.parallel=true
14 |
15 |
16 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Android/Notifications.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 80ac5f13c7b6c784aa41eea769bb8b54
3 | folderAsset: yes
4 | PluginImporter:
5 | externalObjects: {}
6 | serializedVersion: 2
7 | iconMap: {}
8 | executionOrder: {}
9 | defineConstraints: []
10 | isPreloaded: 0
11 | isOverridable: 0
12 | isExplicitlyReferenced: 0
13 | validateReferences: 1
14 | platformData:
15 | - first:
16 | Android: Android
17 | second:
18 | enabled: 1
19 | settings: {}
20 | - first:
21 | Any:
22 | second:
23 | enabled: 0
24 | settings: {}
25 | - first:
26 | Editor: Editor
27 | second:
28 | enabled: 0
29 | settings:
30 | DefaultValueInitialized: true
31 | userData:
32 | assetBundleName:
33 | assetBundleVariant:
34 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/iOS/CountlyPushHandlerInternal.h:
--------------------------------------------------------------------------------
1 |
2 | #import
3 |
4 | #import
5 |
6 | @interface UIApplication(SupressWarnings)
7 |
8 | - (void)application:(UIApplication *)application countlydidRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings;
9 | - (void)application:(UIApplication *)application countlydidRegisterForRemoteNotificationsWithDeviceToken:(NSData *)devToken;
10 | - (void)application:(UIApplication *)application countlydidFailToRegisterForRemoteNotificationsWithError:(NSError *)err;
11 | - (void)application:(UIApplication *)application countlydidReceiveRemoteNotification:(NSDictionary *)userInfo;
12 |
13 | - (BOOL)application:(UIApplication *)application countlydidFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
14 | @end
15 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/iOS/CountlyNotificationService.h.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 341a46fdb94064f65935b32be09742bb
3 | PluginImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | iconMap: {}
7 | executionOrder: {}
8 | defineConstraints: []
9 | isPreloaded: 0
10 | isOverridable: 0
11 | isExplicitlyReferenced: 0
12 | validateReferences: 1
13 | platformData:
14 | - first:
15 | Any:
16 | second:
17 | enabled: 0
18 | settings: {}
19 | - first:
20 | Editor: Editor
21 | second:
22 | enabled: 0
23 | settings:
24 | DefaultValueInitialized: true
25 | - first:
26 | iPhone: iOS
27 | second:
28 | enabled: 1
29 | settings:
30 | AddToEmbeddedBinaries: false
31 | userData:
32 | assetBundleName:
33 | assetBundleVariant:
34 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/iOS/CountlyNotificationService.m.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 72326c29947eb4e6199ffc8686933e35
3 | PluginImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | iconMap: {}
7 | executionOrder: {}
8 | defineConstraints: []
9 | isPreloaded: 0
10 | isOverridable: 0
11 | isExplicitlyReferenced: 0
12 | validateReferences: 1
13 | platformData:
14 | - first:
15 | Any:
16 | second:
17 | enabled: 0
18 | settings: {}
19 | - first:
20 | Editor: Editor
21 | second:
22 | enabled: 0
23 | settings:
24 | DefaultValueInitialized: true
25 | - first:
26 | iPhone: iOS
27 | second:
28 | enabled: 1
29 | settings:
30 | AddToEmbeddedBinaries: false
31 | userData:
32 | assetBundleName:
33 | assetBundleVariant:
34 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/iOS/CountlyPushHandlerInternal.h.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 157e082c4af974fada8300a38b2a9460
3 | PluginImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | iconMap: {}
7 | executionOrder: {}
8 | defineConstraints: []
9 | isPreloaded: 0
10 | isOverridable: 0
11 | isExplicitlyReferenced: 0
12 | validateReferences: 1
13 | platformData:
14 | - first:
15 | Any:
16 | second:
17 | enabled: 0
18 | settings: {}
19 | - first:
20 | Editor: Editor
21 | second:
22 | enabled: 0
23 | settings:
24 | DefaultValueInitialized: true
25 | - first:
26 | iPhone: iOS
27 | second:
28 | enabled: 1
29 | settings:
30 | AddToEmbeddedBinaries: false
31 | userData:
32 | assetBundleName:
33 | assetBundleVariant:
34 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/iOS/CountlyPushHandlerInternal.m.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 59eb895887ba84d27afa48e1197514f2
3 | PluginImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | iconMap: {}
7 | executionOrder: {}
8 | defineConstraints: []
9 | isPreloaded: 0
10 | isOverridable: 0
11 | isExplicitlyReferenced: 0
12 | validateReferences: 1
13 | platformData:
14 | - first:
15 | Any:
16 | second:
17 | enabled: 0
18 | settings: {}
19 | - first:
20 | Editor: Editor
21 | second:
22 | enabled: 0
23 | settings:
24 | DefaultValueInitialized: true
25 | - first:
26 | iPhone: iOS
27 | second:
28 | enabled: 1
29 | settings:
30 | AddToEmbeddedBinaries: false
31 | userData:
32 | assetBundleName:
33 | assetBundleVariant:
34 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Interfaces/IUserProfileModule.cs:
--------------------------------------------------------------------------------
1 | using System.Collections;
2 | using System.Collections.Generic;
3 | using UnityEngine;
4 |
5 | public interface IUserProfileModule
6 | {
7 | public void Increment(string key);
8 | public void IncrementBy(string key, double value);
9 | public void SaveMax(string key, double value);
10 | public void SaveMin(string key, double value);
11 | public void Multiply(string key, double value);
12 | public void Pull(string key, string value);
13 | public void Push(string key, string value);
14 | public void PushUnique(string key, string value);
15 | public void Save();
16 | public void SetOnce(string key, string value);
17 | public void SetProperties(Dictionary data);
18 | public void SetProperty(string key, object value);
19 | }
--------------------------------------------------------------------------------
/Services/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Persistance/Repositories/Impls/ViewEventRepository.cs:
--------------------------------------------------------------------------------
1 | using Plugins.CountlySDK.Models;
2 | using Plugins.CountlySDK.Persistance.Dao;
3 | using Plugins.CountlySDK.Persistance.Entities;
4 | using Plugins.iBoxDB;
5 | using UnityEngine;
6 |
7 | namespace Plugins.CountlySDK.Persistance.Repositories.Impls
8 | {
9 | public class ViewEventRepository : AbstractEventRepository
10 | {
11 |
12 | public ViewEventRepository(Dao dao, SegmentDao segmentDao, CountlyLogHelper log) : base(dao, segmentDao, log)
13 | {
14 | }
15 |
16 | protected override bool ValidateModelBeforeEnqueue(CountlyEventModel model)
17 | {
18 | Log.Debug("[ViewEventRepository] Validate model: \n" + model);
19 | return model.Key.Equals(CountlyEventModel.ViewEvent);
20 | }
21 | }
22 | }
--------------------------------------------------------------------------------
/Assets/Countly/Example/Scripts/Helpers/UIHelper.cs:
--------------------------------------------------------------------------------
1 | using System.Collections;
2 | using System.Collections.Generic;
3 | using UnityEngine;
4 |
5 | public class UIHelper : MonoBehaviour
6 | {
7 | [SerializeField] List testMenus = new List();
8 | [SerializeField] GameObject closeButton;
9 |
10 | public void OpenRelatedMenu(GameObject menu)
11 | {
12 | OpenCloseMenus(menu, true);
13 | }
14 | public void ReturnToMainMenu(GameObject menu)
15 | {
16 | OpenCloseMenus(menu, false);
17 | }
18 | private void OpenCloseMenus(GameObject menu, bool isCloseButtonEnabled)
19 | {
20 | for (int i = 0; i < testMenus.Count; i++) {
21 | testMenus[i].SetActive(false);
22 | }
23 | menu.SetActive(true);
24 | closeButton.SetActive(isCloseButtonEnabled);
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Services/notifications/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Models/CountlyRequestModel.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Plugins.CountlySDK.Persistance;
3 |
4 | namespace Plugins.CountlySDK.Models
5 | {
6 | public class CountlyRequestModel : IModel
7 | {
8 | public CountlyRequestModel(string requestUrl, string requestData)
9 | {
10 | RequestUrl = requestUrl;
11 | RequestData = requestData;
12 | }
13 |
14 | //the request URL field does not seem to be used and probably exists only for migration purposes
15 | public string RequestUrl { get; set; }
16 | public string RequestData { get; set; }
17 | public long Id { get; set; }
18 |
19 | public override string ToString()
20 | {
21 | return $"{nameof(RequestUrl)}: {RequestUrl}, {nameof(RequestData)}: {RequestData}, {nameof(Id)}: {Id}";
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/Services/notifications/src/androidTest/java/ly/count/unity/push_fcm/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | package ly.count.unity.push_fcm;
2 |
3 | import android.content.Context;
4 | import android.support.test.InstrumentationRegistry;
5 | import android.support.test.runner.AndroidJUnit4;
6 |
7 | import org.junit.Test;
8 | import org.junit.runner.RunWith;
9 |
10 | import static org.junit.Assert.*;
11 |
12 | /**
13 | * Instrumented test, which will execute on an Android device.
14 | *
15 | * @see Testing documentation
16 | */
17 | @RunWith(AndroidJUnit4.class)
18 | public class ExampleInstrumentedTest {
19 | @Test
20 | public void useAppContext() {
21 | // Context of the app under test.
22 | Context appContext = InstrumentationRegistry.getTargetContext();
23 |
24 | assertEquals("ly.count.unity.push_fcm.notifications.test", appContext.getPackageName());
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/iOS/CountlyNotificationService.h:
--------------------------------------------------------------------------------
1 | #import
2 | #import
3 |
4 | NS_ASSUME_NONNULL_BEGIN
5 |
6 | extern NSString* const kCountlyActionIdentifier;
7 |
8 | extern NSString* const kCountlyPNKeyCountlyPayload;
9 | extern NSString* const kCountlyPNKeyNotificationID;
10 | extern NSString* const kCountlyPNKeyButtons;
11 | extern NSString* const kCountlyPNKeyDefaultURL;
12 | extern NSString* const kCountlyPNKeyAttachment;
13 | extern NSString* const kCountlyPNKeyActionButtonIndex;
14 | extern NSString* const kCountlyPNKeyActionButtonTitle;
15 | extern NSString* const kCountlyPNKeyActionButtonURL;
16 |
17 | @interface CountlyNotificationService : NSObject
18 | #if TARGET_OS_IOS
19 | + (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent *))contentHandler API_AVAILABLE(ios(10.0));
20 | #endif
21 |
22 | NS_ASSUME_NONNULL_END
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/Assets/Tests/PlayModeTests/Scenarios/UT_Utils.cs:
--------------------------------------------------------------------------------
1 | using NUnit.Framework;
2 | using Plugins.CountlySDK;
3 |
4 | namespace Assets.Tests.PlayModeTests.Scenarios
5 | {
6 | public class UT_Utils
7 | {
8 | // 'SafeRandomVal' in CountlyUtils
9 | // Generates a random value which matches with required pattern
10 | // Generator should produce different values each time with given pattern.
11 | [Test]
12 | public void UT_001_validatingIDGenerator()
13 | {
14 | string result1 = CountlyUtils.SafeRandomVal();
15 | string result2 = CountlyUtils.SafeRandomVal();
16 |
17 | Assert.NotNull(result1);
18 | Assert.NotNull(result2);
19 | Assert.AreNotEqual(result1, result2);
20 | Assert.IsTrue(TestUtility.IsBase64String(result1));
21 | Assert.IsTrue(TestUtility.IsBase64String(result2));
22 | Assert.AreEqual(21, result2.Length, result1.Length);
23 | }
24 | }
25 | }
26 |
27 |
--------------------------------------------------------------------------------
/ProjectSettings/UnityConnectSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!310 &1
4 | UnityConnectSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 1
7 | m_Enabled: 1
8 | m_TestMode: 0
9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events
10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events
11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com
12 | m_TestInitMode: 0
13 | CrashReportingSettings:
14 | m_EventUrl: https://perf-events.cloud.unity3d.com
15 | m_Enabled: 0
16 | m_LogBufferSize: 10
17 | m_CaptureEditorExceptions: 1
18 | UnityPurchasingSettings:
19 | m_Enabled: 0
20 | m_TestMode: 0
21 | UnityAnalyticsSettings:
22 | m_Enabled: 1
23 | m_TestMode: 0
24 | m_InitializeOnStartup: 1
25 | UnityAdsSettings:
26 | m_Enabled: 0
27 | m_InitializeOnStartup: 1
28 | m_TestMode: 0
29 | m_IosGameId:
30 | m_AndroidGameId:
31 | m_GameIds: {}
32 | m_GameId:
33 | PerformanceReportingSettings:
34 | m_Enabled: 0
35 |
--------------------------------------------------------------------------------
/Services/.idea/gradle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Android/Notifications/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
17 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Services/notifications/src/main/res/values/google-services.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 1023543927679-h78clj7uigb6b6hpg6na2s7rhrv8c2n7.apps.googleusercontent.com
4 | https://zombie-wars-test.firebaseio.com
5 | 1023543927679
6 | AIzaSyA2axxcQQwgyyi3nLXVwUT9haZ2lkmTDho
7 | 1:1023543927679:android:1236a4264c85a11b
8 | AIzaSyA2axxcQQwgyyi3nLXVwUT9haZ2lkmTDho
9 | zombie-wars-test.appspot.com
10 | zombie-wars-test
11 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Android/Notifications/res/values/google-services.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 763416529650-nj96lag3j5kpk3rt26igaiedpmnml8vh.apps.googleusercontent.com
4 | https://count-ly-demo.firebaseio.com
5 | 763416529650
6 | AIzaSyDdsbf20fuwYpiat8uVg-WmmLqnUwupBfg
7 | 1:763416529650:android:db64399f607db1079d9e6b
8 | AIzaSyDdsbf20fuwYpiat8uVg-WmmLqnUwupBfg
9 | count-ly-demo.appspot.com
10 | count-ly-demo
11 |
--------------------------------------------------------------------------------
/Assets/Countly/License.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) 2018 Countly, Ltd.
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy
4 | of this software and associated documentation files (the “Software”), to deal
5 | in the Software without restriction, including without limitation the rights
6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 | copies of the Software, and to permit persons to whom the Software is
8 | furnished to do so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in
11 | all copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 | THE SOFTWARE.
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2013 Countly
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Persistance/Repositories/RequestRepository.cs:
--------------------------------------------------------------------------------
1 | using Plugins.CountlySDK.Helpers;
2 | using Plugins.CountlySDK.Models;
3 | using Plugins.CountlySDK.Persistance.Entities;
4 | using Plugins.iBoxDB;
5 |
6 | namespace Plugins.CountlySDK.Persistance.Repositories
7 | {
8 | internal class RequestRepository : Repository
9 | {
10 | public RequestRepository(Dao dao, CountlyLogHelper config) : base(dao, config)
11 | {
12 | }
13 |
14 | protected override CountlyRequestModel ConvertEntityToModel(RequestEntity entity)
15 | {
16 | return Converter.ConvertRequestEntityToRequestModel(entity);
17 | }
18 |
19 | protected override RequestEntity ConvertModelToEntity(CountlyRequestModel model)
20 | {
21 | return Converter.ConvertRequestModelToRequestEntity(model, model.Id > 0 ? model.Id : GenerateNewId());
22 | }
23 |
24 | protected override bool ValidateModelBeforeEnqueue(CountlyRequestModel model)
25 | {
26 | return true;
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/ProjectSettings/DynamicsManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!55 &1
4 | PhysicsManager:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 7
7 | m_Gravity: {x: 0, y: -9.81, z: 0}
8 | m_DefaultMaterial: {fileID: 0}
9 | m_BounceThreshold: 2
10 | m_SleepThreshold: 0.005
11 | m_DefaultContactOffset: 0.01
12 | m_DefaultSolverIterations: 6
13 | m_DefaultSolverVelocityIterations: 1
14 | m_QueriesHitBackfaces: 0
15 | m_QueriesHitTriggers: 1
16 | m_EnableAdaptiveForce: 0
17 | m_ClothInterCollisionDistance: 0
18 | m_ClothInterCollisionStiffness: 0
19 | m_ContactsGeneration: 1
20 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
21 | m_AutoSimulation: 1
22 | m_AutoSyncTransforms: 1
23 | m_ClothInterCollisionSettingsToggle: 0
24 | m_ContactPairsMode: 0
25 | m_BroadphaseType: 0
26 | m_WorldBounds:
27 | m_Center: {x: 0, y: 0, z: 0}
28 | m_Extent: {x: 250, y: 250, z: 250}
29 | m_WorldSubdivisions: 8
30 |
--------------------------------------------------------------------------------
/Services/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
19 |
20 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/ProjectSettings/PackageManagerSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &1
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 61
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0}
13 | m_Name:
14 | m_EditorClassIdentifier:
15 | m_EnablePreviewPackages: 0
16 | m_EnablePackageDependencies: 0
17 | m_AdvancedSettingsExpanded: 1
18 | m_ScopedRegistriesSettingsExpanded: 1
19 | oneTimeWarningShown: 0
20 | m_Registries:
21 | - m_Id: main
22 | m_Name:
23 | m_Url: https://packages.unity.com
24 | m_Scopes: []
25 | m_IsDefault: 1
26 | m_Capabilities: 7
27 | m_UserSelectedRegistryName:
28 | m_UserAddingNewScopedRegistry: 0
29 | m_RegistryInfoDraft:
30 | m_ErrorMessage:
31 | m_Original:
32 | m_Id:
33 | m_Name:
34 | m_Url:
35 | m_Scopes: []
36 | m_IsDefault: 0
37 | m_Capabilities: 0
38 | m_Modified: 0
39 | m_Name:
40 | m_Url:
41 | m_Scopes:
42 | -
43 | m_SelectedScopeIndex: 0
44 |
--------------------------------------------------------------------------------
/.markdownlint.json:
--------------------------------------------------------------------------------
1 | {
2 | "MD001": true,
3 | "MD002": false,
4 | "MD003": true,
5 | "MD004": true,
6 | "MD005": true,
7 | "MD006": true,
8 | "MD007": { "indent": 2 },
9 | "MD009": false,
10 | "MD010": false,
11 | "MD011": true,
12 | "MD012": { "maximum": 1 },
13 | "MD013": { "line_length": 300 },
14 | "MD014": false,
15 | "MD018": true,
16 | "MD019": true,
17 | "MD020": true,
18 | "MD021": true,
19 | "MD022": false,
20 | "MD023": true,
21 | "MD024": true,
22 | "MD025": true,
23 | "MD026": true,
24 | "MD027": true,
25 | "MD028": true,
26 | "MD029": true,
27 | "MD030": true,
28 | "MD031": true,
29 | "MD032": false,
30 | "MD033": false,
31 | "MD034": false,
32 | "MD035": true,
33 | "MD036": true,
34 | "MD037": true,
35 | "MD038": true,
36 | "MD039": true,
37 | "MD040": true,
38 | "MD041": false,
39 | "MD042": true,
40 | "MD043": false,
41 | "MD044": true,
42 | "MD045": true,
43 | "MD046": true,
44 | "MD047": true,
45 | "MD048": true,
46 | "MD049": true,
47 | "MD050": true,
48 | "MD051": true,
49 | "MD052": true,
50 | "MD053": true
51 | }
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # MacOSX
2 | .DS_Store
3 |
4 | # VIM
5 | *.swp
6 |
7 | # packages
8 | /packages
9 |
10 | .idea
11 | /Logs
12 |
13 | # Android
14 | /android/bin/*
15 | /android/libs/*
16 | /android/gen
17 | /android/proguard.cfg
18 | /android/proguard-project.txt
19 | /android/local.properties
20 |
21 | # Unity
22 | /unity/Library
23 | /unity/Assembly-*
24 | /unity/*.pidb
25 | /unity/*.userprefs
26 | /unity/Temp
27 |
28 | /unity/Assets/Plugins/Android/Countly.jar
29 | /unity/Assets/Plugins/Android/Countly.jar.meta
30 | /unity/Assets/Plugins/Android.meta
31 |
32 | /unity/UserSettings/EditorUserSettings.asset
33 |
34 | [Ll]ibrary/
35 | [Tt]emp/
36 | [Oo]bj/
37 | [Bb]uild/
38 | [Bb]uilds/
39 | [Cc]odeCoverage/
40 | Assets/AssetStoreTools*
41 |
42 | # Visual Studio cache directory
43 | .vs/
44 |
45 | # Autogenerated VS/MD/Consulo solution and project files
46 | ExportedObj/
47 | .consulo/
48 | .vsconfig
49 | *.csproj
50 | *.unityproj
51 | *.sln
52 | *.suo
53 | *.tmp
54 | *.user
55 | *.userprefs
56 | *.pidb
57 | *.booproj
58 | *.svd
59 | *.pdb
60 | *.opendb
61 |
62 | # Unity3D generated meta files
63 | *.pidb.meta
64 | *.pdb.meta
65 |
66 | # Unity3D Generated File On Crash Reports
67 | sysinfo.txt
68 |
69 | # Builds
70 | *.apk
71 | *.unitypackage
72 | UserSettings/EditorUserSettings.asset
73 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Services/InitializationCountlyService.cs:
--------------------------------------------------------------------------------
1 | using System.Linq;
2 | using System.Threading.Tasks;
3 | using Plugins.CountlySDK.Enums;
4 | using Plugins.CountlySDK.Models;
5 |
6 | namespace Plugins.CountlySDK.Services
7 | {
8 | public class InitializationCountlyService : AbstractBaseService
9 | {
10 | private readonly LocationService _locationService;
11 | private readonly SessionCountlyService _sessionService;
12 |
13 | internal InitializationCountlyService(CountlyConfiguration configuration, CountlyLogHelper logHelper, LocationService locationService, SessionCountlyService sessionCountlyService, ConsentCountlyService consentService) : base(configuration, logHelper, consentService)
14 | {
15 | Log.Debug("[InitializationCountlyService] Initializing.");
16 |
17 | _locationService = locationService;
18 | _sessionService = sessionCountlyService;
19 | }
20 |
21 | internal async Task OnInitialisationComplete()
22 | {
23 | lock (LockObj) {
24 | _ = _consentService.SendConsentChanges();
25 | _ = _sessionService.StartSessionService();
26 | }
27 |
28 | await Task.CompletedTask;
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/Services/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 |
3 | buildscript {
4 | repositories {
5 | google()
6 | jcenter()
7 |
8 | }
9 | dependencies {
10 | classpath 'com.android.tools.build:gradle:3.4.0'
11 |
12 | // NOTE: Do not place your application dependencies here; they belong
13 | // in the individual module build.gradle files
14 | }
15 | }
16 |
17 | android {
18 | compileSdkVersion 28
19 | defaultConfig {
20 | minSdkVersion 16
21 | targetSdkVersion 28
22 | }
23 | }
24 |
25 | dependencies {
26 | implementation fileTree(dir: 'libs', include: ['*.jar'])
27 | implementation 'com.google.firebase:firebase-messaging:20.2.4'
28 | implementation files('libs\\classes.jar')
29 | implementation project(path: ':notifications')
30 | }
31 |
32 | //task to delete old jar
33 | task deleteOldJar(type: Delete){
34 | delete '../../Assets/Plugins/Android/Notifications/libs/countly_notifications.jar'
35 | }
36 |
37 | //export jar
38 | task exportJar(type: Copy){
39 | from('build/intermediates/packaged-classes/release')
40 | //export jar into unity project
41 | into('../../Assets/Plugins/Android/Notifications/libs/')
42 | include('classes.jar')
43 | //the name
44 | rename('classes.jar','countly_notifications.jar')
45 | }
46 |
47 | exportJar.dependsOn(deleteOldJar,build)
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Editor/CountlyBuildProcessor.cs:
--------------------------------------------------------------------------------
1 | #if ENABLE_VSTU
2 |
3 | #if UNITY_ANDROID
4 | using System.IO;
5 | using UnityEngine;
6 | #endif
7 |
8 | #if !UNITY_2017
9 | using UnityEditor.Build.Reporting;
10 | #endif
11 | using UnityEditor;
12 | using UnityEditor.Build;
13 |
14 | namespace Plugins.CountlySDK.Editor
15 | {
16 |
17 | #if UNITY_2017
18 | internal class CountlyBuildProcessor : IPreprocessBuild
19 | {
20 |
21 | public void OnPreprocessBuild(BuildTarget target, string path)
22 | {
23 | #else
24 | internal class CountlyBuildProcessor : IPreprocessBuildWithReport
25 | {
26 | public void OnPreprocessBuild(BuildReport report)
27 | {
28 | #endif
29 |
30 | #if UNITY_ANDROID
31 | string directoryPath = "/Plugins/Android/Notifications/";
32 | string filePath = "/Plugins/Android/Notifications/libs/countly_notifications.jar";
33 | if (!File.Exists(Application.dataPath + "" + filePath)) {
34 | if (Directory.Exists(Application.dataPath + directoryPath) && !File.Exists(Application.dataPath + "" + filePath)) {
35 | Debug.LogError("[CountlyBuildProcessor] notifications.jar not found at: " + filePath);
36 | }
37 | }
38 | #endif
39 | }
40 | public int callbackOrder { get { return 0; } }
41 | }
42 |
43 |
44 | }
45 | #endif
--------------------------------------------------------------------------------
/Assets/Countly/Example/Scripts/CrashReporting.cs:
--------------------------------------------------------------------------------
1 | using Plugins.CountlySDK;
2 | using System;
3 | using System.Collections.Generic;
4 | using UnityEngine;
5 | using UnityEngine.SceneManagement;
6 |
7 | public class CrashReporting : MonoBehaviour
8 | {
9 | public async void CustomCrashLogs()
10 | {
11 | Dictionary seg = new Dictionary{
12 | { "Time Spent", "1234455"},
13 | { "Retry Attempts", "10"}
14 | };
15 | await Countly.Instance.CrashReports.SendCrashReportAsync("Exception", "Stacktrace", seg);
16 |
17 |
18 | }
19 | public void RecordUnhandledException()
20 | {
21 | throw new NullReferenceException("Test Unhandled Exception");
22 | }
23 |
24 | public async void RecordHandledException()
25 | {
26 | try {
27 |
28 | throw new DivideByZeroException();
29 | } catch (Exception ex) {
30 | Dictionary seg = new Dictionary{
31 | { "Fail Message", "Please retry"},
32 | { "Retry Left", "2"}
33 | };
34 |
35 | await Countly.Instance.CrashReports.SendCrashReportAsync(ex.Message, ex.StackTrace, seg, nonfatal: true);
36 | }
37 |
38 | }
39 |
40 | public void AddBreadCrumb()
41 | {
42 | Countly.Instance.CrashReports.AddBreadcrumbs("Breadcrumb 1");
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Helpers/CountlyLogHelper.cs:
--------------------------------------------------------------------------------
1 | using Plugins.CountlySDK.Models;
2 |
3 | public class CountlyLogHelper
4 | {
5 | private const string TAG = "[Countly]";
6 | private readonly CountlyConfiguration _configuration;
7 | internal CountlyLogHelper(CountlyConfiguration configuration)
8 | {
9 | _configuration = configuration;
10 | }
11 |
12 | internal void Info(string message)
13 | {
14 | if (_configuration.EnableConsoleLogging) {
15 | UnityEngine.Debug.Log("[Info]" + TAG + message);
16 | }
17 |
18 | }
19 |
20 | internal void Debug(string message)
21 | {
22 | if (_configuration.EnableConsoleLogging) {
23 | UnityEngine.Debug.Log("[Debug]" + TAG + message);
24 | }
25 |
26 | }
27 |
28 | internal void Verbose(string message)
29 | {
30 | if (_configuration.EnableConsoleLogging) {
31 | UnityEngine.Debug.Log("[Verbose]" + TAG + message);
32 | }
33 |
34 | }
35 |
36 | internal void Error(string message)
37 | {
38 | if (_configuration.EnableConsoleLogging) {
39 | UnityEngine.Debug.LogError("[Error]" + TAG + message);
40 | }
41 | }
42 |
43 | internal void Warning(string message)
44 | {
45 | if (_configuration.EnableConsoleLogging) {
46 | UnityEngine.Debug.LogWarning("[Warning]" + TAG + message);
47 | }
48 | }
49 |
50 | }
51 |
--------------------------------------------------------------------------------
/ProjectSettings/Physics2DSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!19 &1
4 | Physics2DSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 3
7 | m_Gravity: {x: 0, y: -9.81}
8 | m_DefaultMaterial: {fileID: 0}
9 | m_VelocityIterations: 8
10 | m_PositionIterations: 3
11 | m_VelocityThreshold: 1
12 | m_MaxLinearCorrection: 0.2
13 | m_MaxAngularCorrection: 8
14 | m_MaxTranslationSpeed: 100
15 | m_MaxRotationSpeed: 360
16 | m_BaumgarteScale: 0.2
17 | m_BaumgarteTimeOfImpactScale: 0.75
18 | m_TimeToSleep: 0.5
19 | m_LinearSleepTolerance: 0.01
20 | m_AngularSleepTolerance: 2
21 | m_DefaultContactOffset: 0.01
22 | m_AutoSimulation: 1
23 | m_QueriesHitTriggers: 1
24 | m_QueriesStartInColliders: 1
25 | m_ChangeStopsCallbacks: 0
26 | m_CallbacksOnDisable: 1
27 | m_AutoSyncTransforms: 1
28 | m_AlwaysShowColliders: 0
29 | m_ShowColliderSleep: 1
30 | m_ShowColliderContacts: 0
31 | m_ShowColliderAABB: 0
32 | m_ContactArrowScale: 0.2
33 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412}
34 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432}
35 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745}
36 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804}
37 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
38 |
--------------------------------------------------------------------------------
/ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "m_Name": "Settings",
3 | "m_Path": "ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json",
4 | "m_Dictionary": {
5 | "m_DictionaryValues": [
6 | {
7 | "type": "System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",
8 | "key": "IncludeAssemblies",
9 | "value": "{\"m_Value\":\"PlayModeTests,PluginAssembly\"}"
10 | },
11 | {
12 | "type": "System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",
13 | "key": "Path",
14 | "value": "{\"m_Value\":\"{ProjectPath}\"}"
15 | },
16 | {
17 | "type": "System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",
18 | "key": "HistoryPath",
19 | "value": "{\"m_Value\":\"{ProjectPath}\"}"
20 | },
21 | {
22 | "type": "System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",
23 | "key": "PathsToInclude",
24 | "value": "{\"m_Value\":\"\"}"
25 | },
26 | {
27 | "type": "System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",
28 | "key": "EnableCodeCoverage",
29 | "value": "{\"m_Value\":false}"
30 | }
31 | ]
32 | }
33 | }
--------------------------------------------------------------------------------
/.github/workflows/release_notice.yml:
--------------------------------------------------------------------------------
1 | name: Release Notice
2 | on:
3 | release:
4 | types: [published]
5 | workflow_dispatch:
6 | jobs:
7 | build:
8 | runs-on: ubuntu-latest
9 | steps:
10 | # To check the github context
11 | - name: Dump Github context
12 | env:
13 | GITHUB_CONTEXT: ${{ toJSON(github) }}
14 | run: echo "$GITHUB_CONTEXT"
15 | - name: Send custom JSON data to Slack workflow
16 | id: slack
17 | uses: slackapi/slack-github-action@v1.23.0
18 | with:
19 | # This data can be any valid JSON from a previous step in the GitHub Action
20 | payload: |
21 | {
22 | "repository": "${{ github.repository }}",
23 | "tag_name": "${{ github.event.release.tag_name }}",
24 | "actor": "${{ github.actor }}",
25 | "body": ${{ toJSON(github.event.release.body) }},
26 | "html_url": "${{ github.event.release.html_url }}"
27 | }
28 | env:
29 | SLACK_WEBHOOK_URL: ${{ secrets.SLACK_RELEASE }}
30 | - name: Send custom JSON data to Discord
31 | uses: sarisia/actions-status-discord@v1.13.0
32 | with:
33 | webhook: ${{ secrets.DISCORD_WEBHOOK_URL }}
34 | nodetail: true
35 | title: New ${{ github.repository }} version ${{ github.event.release.tag_name }} published by ${{ github.actor }}
36 | description: |
37 | Release URL: ${{ github.event.release.html_url }}
38 | Click [here](https://github.com/Countly/countly-server/blob/master/CHANGELOG.md) to view the change log.
39 | `${{ github.event.release.body }}`
40 |
--------------------------------------------------------------------------------
/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/ProjectSettings/NavMeshAreas.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!126 &1
4 | NavMeshProjectSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | areas:
8 | - name: Walkable
9 | cost: 1
10 | - name: Not Walkable
11 | cost: 1
12 | - name: Jump
13 | cost: 2
14 | - name:
15 | cost: 1
16 | - name:
17 | cost: 1
18 | - name:
19 | cost: 1
20 | - name:
21 | cost: 1
22 | - name:
23 | cost: 1
24 | - name:
25 | cost: 1
26 | - name:
27 | cost: 1
28 | - name:
29 | cost: 1
30 | - name:
31 | cost: 1
32 | - name:
33 | cost: 1
34 | - name:
35 | cost: 1
36 | - name:
37 | cost: 1
38 | - name:
39 | cost: 1
40 | - name:
41 | cost: 1
42 | - name:
43 | cost: 1
44 | - name:
45 | cost: 1
46 | - name:
47 | cost: 1
48 | - name:
49 | cost: 1
50 | - name:
51 | cost: 1
52 | - name:
53 | cost: 1
54 | - name:
55 | cost: 1
56 | - name:
57 | cost: 1
58 | - name:
59 | cost: 1
60 | - name:
61 | cost: 1
62 | - name:
63 | cost: 1
64 | - name:
65 | cost: 1
66 | - name:
67 | cost: 1
68 | - name:
69 | cost: 1
70 | - name:
71 | cost: 1
72 | m_LastAgentTypeID: -887442657
73 | m_Settings:
74 | - serializedVersion: 2
75 | agentTypeID: 0
76 | agentRadius: 0.5
77 | agentHeight: 2
78 | agentSlope: 45
79 | agentClimb: 0.75
80 | ledgeDropHeight: 0
81 | maxJumpAcrossDistance: 0
82 | minRegionArea: 2
83 | manualCellSize: 0
84 | cellSize: 0.16666667
85 | manualTileSize: 0
86 | tileSize: 256
87 | accuratePlacement: 0
88 | debug:
89 | m_Flags: 0
90 | m_SettingNames:
91 | - Humanoid
92 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "files.exclude": {
3 | "**/.DS_Store": true,
4 | "**/.git": true,
5 | "**/.vs": true,
6 | "**/.gitmodules": true,
7 | "**/.vsconfig": true,
8 | "**/*.booproj": true,
9 | "**/*.pidb": true,
10 | "**/*.suo": true,
11 | "**/*.user": true,
12 | "**/*.userprefs": true,
13 | "**/*.unityproj": true,
14 | "**/*.dll": true,
15 | "**/*.exe": true,
16 | "**/*.pdf": true,
17 | "**/*.mid": true,
18 | "**/*.midi": true,
19 | "**/*.wav": true,
20 | "**/*.gif": true,
21 | "**/*.ico": true,
22 | "**/*.jpg": true,
23 | "**/*.jpeg": true,
24 | "**/*.png": true,
25 | "**/*.psd": true,
26 | "**/*.tga": true,
27 | "**/*.tif": true,
28 | "**/*.tiff": true,
29 | "**/*.3ds": true,
30 | "**/*.3DS": true,
31 | "**/*.fbx": true,
32 | "**/*.FBX": true,
33 | "**/*.lxo": true,
34 | "**/*.LXO": true,
35 | "**/*.ma": true,
36 | "**/*.MA": true,
37 | "**/*.obj": true,
38 | "**/*.OBJ": true,
39 | "**/*.asset": true,
40 | "**/*.cubemap": true,
41 | "**/*.flare": true,
42 | "**/*.mat": true,
43 | "**/*.meta": true,
44 | "**/*.prefab": true,
45 | "**/*.unity": true,
46 | "build/": true,
47 | "Build/": true,
48 | "Library/": true,
49 | "library/": true,
50 | "obj/": true,
51 | "Obj/": true,
52 | "Logs/": true,
53 | "logs/": true,
54 | "ProjectSettings/": true,
55 | "UserSettings/": true,
56 | "temp/": true,
57 | "Temp/": true
58 | },
59 | "dotnet.defaultSolution": "countly-sdk-unity.sln"
60 | }
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Persistance/Dao/SegmentDao.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Text;
3 | using iBoxDB.LocalServer;
4 | using Plugins.CountlySDK.Models;
5 | using Plugins.CountlySDK.Persistance.Entities;
6 | using Plugins.iBoxDB;
7 | using UnityEngine;
8 |
9 | namespace Plugins.CountlySDK.Persistance.Dao
10 | {
11 | public class SegmentDao : Dao
12 | {
13 | private readonly CountlyLogHelper Log;
14 | private readonly StringBuilder _stringBuilder = new StringBuilder();
15 |
16 | public SegmentDao(AutoBox auto, string table, CountlyLogHelper log) : base(auto, table, log)
17 | {
18 | Log = log;
19 | }
20 |
21 |
22 | public SegmentEntity GetByEventId(long eventId)
23 | {
24 |
25 | Log.Debug("[SegmentDao] GetByEventId: eventId = " + eventId);
26 |
27 | _stringBuilder.Clear();
28 |
29 | string ql = _stringBuilder.Append("from ").Append(Table).Append(" where EventId==?").ToString();
30 |
31 | try {
32 | System.Collections.Generic.List entities = Auto.Select(ql, eventId);
33 | if (entities.Count > 1) {
34 | throw new ArgumentException("Only one or zero segment can be assigned to entity with id " + eventId + ". "
35 | + entities.Count + " segments found.");
36 | }
37 |
38 | if (entities.Count == 0) {
39 | return null;
40 | }
41 |
42 | return entities[0];
43 | } catch (Exception ex) {
44 | Log.Debug("[SegmentDao] GetByEventId: Couldn't complete db operation, [" + ex.Message + "]");
45 | return null;
46 | }
47 | }
48 |
49 | }
50 | }
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Notifications/Impls/Android/AndroidBridge.cs:
--------------------------------------------------------------------------------
1 | using Newtonsoft.Json.Linq;
2 | using Plugins.CountlySDK.Models;
3 | using System;
4 | using UnityEngine;
5 |
6 | namespace Notifications.Impls.Android
7 | {
8 | public class AndroidBridge : MonoBehaviour
9 | {
10 | private Action _onTokenResult;
11 | private Action _OnNotificationReceiveResult;
12 | private Action _OnNotificationClickResult;
13 |
14 | public CountlyLogHelper Log { get; set; }
15 |
16 | public void ListenTokenResult(Action result) => _onTokenResult = result;
17 | public void ListenReceiveResult(Action result) => _OnNotificationReceiveResult = result;
18 | public void ListenClickResult(Action result) => _OnNotificationClickResult = result;
19 |
20 |
21 | private void Awake()
22 | {
23 | DontDestroyOnLoad(gameObject);
24 | }
25 |
26 | public void OnTokenResult(string token)
27 | {
28 | _onTokenResult?.Invoke(token);
29 | Log.Debug("[AndroidBridge] AndroidBridge Firebase token: " + token);
30 |
31 | }
32 |
33 | public void OnNotificationReceived(string data)
34 | {
35 | _OnNotificationReceiveResult?.Invoke(data);
36 | Log.Debug("[AndroidBridge] onMessageReceived");
37 |
38 | }
39 |
40 | public void OnNotificationClicked(string data)
41 | {
42 | int index = 0;
43 |
44 | JObject jObject = JObject.Parse(data);
45 |
46 | if (jObject != null) {
47 | index = (int)jObject.GetValue("click_index");
48 | }
49 | _OnNotificationClickResult?.Invoke(data, index);
50 | Log.Debug("[AndroidBridge] OnNotificationClicked");
51 | }
52 | }
53 | }
--------------------------------------------------------------------------------
/Packages/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "dependencies": {
3 | "com.unity.ide.rider": "2.0.7",
4 | "com.unity.ide.visualstudio": "2.0.21",
5 | "com.unity.ide.vscode": "1.2.5",
6 | "com.unity.nuget.newtonsoft-json": "3.0.2",
7 | "com.unity.test-framework": "1.1.27",
8 | "com.unity.testtools.codecoverage": "1.2.4",
9 | "com.unity.timeline": "1.4.8",
10 | "com.unity.ugui": "1.0.0",
11 | "com.unity.modules.ai": "1.0.0",
12 | "com.unity.modules.androidjni": "1.0.0",
13 | "com.unity.modules.animation": "1.0.0",
14 | "com.unity.modules.assetbundle": "1.0.0",
15 | "com.unity.modules.audio": "1.0.0",
16 | "com.unity.modules.cloth": "1.0.0",
17 | "com.unity.modules.director": "1.0.0",
18 | "com.unity.modules.imageconversion": "1.0.0",
19 | "com.unity.modules.imgui": "1.0.0",
20 | "com.unity.modules.jsonserialize": "1.0.0",
21 | "com.unity.modules.particlesystem": "1.0.0",
22 | "com.unity.modules.physics": "1.0.0",
23 | "com.unity.modules.physics2d": "1.0.0",
24 | "com.unity.modules.screencapture": "1.0.0",
25 | "com.unity.modules.terrain": "1.0.0",
26 | "com.unity.modules.terrainphysics": "1.0.0",
27 | "com.unity.modules.tilemap": "1.0.0",
28 | "com.unity.modules.ui": "1.0.0",
29 | "com.unity.modules.uielements": "1.0.0",
30 | "com.unity.modules.umbra": "1.0.0",
31 | "com.unity.modules.unityanalytics": "1.0.0",
32 | "com.unity.modules.unitywebrequest": "1.0.0",
33 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0",
34 | "com.unity.modules.unitywebrequestaudio": "1.0.0",
35 | "com.unity.modules.unitywebrequesttexture": "1.0.0",
36 | "com.unity.modules.unitywebrequestwww": "1.0.0",
37 | "com.unity.modules.vehicles": "1.0.0",
38 | "com.unity.modules.video": "1.0.0",
39 | "com.unity.modules.vr": "1.0.0",
40 | "com.unity.modules.wind": "1.0.0",
41 | "com.unity.modules.xr": "1.0.0"
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Prefabs/Countly.prefab:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!1 &1270423401348912
4 | GameObject:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | serializedVersion: 6
10 | m_Component:
11 | - component: {fileID: 4847215846838172}
12 | - component: {fileID: 114679878964049358}
13 | m_Layer: 0
14 | m_Name: Countly
15 | m_TagString: Untagged
16 | m_Icon: {fileID: 0}
17 | m_NavMeshLayer: 0
18 | m_StaticEditorFlags: 0
19 | m_IsActive: 1
20 | --- !u!4 &4847215846838172
21 | Transform:
22 | m_ObjectHideFlags: 0
23 | m_CorrespondingSourceObject: {fileID: 0}
24 | m_PrefabInstance: {fileID: 0}
25 | m_PrefabAsset: {fileID: 0}
26 | m_GameObject: {fileID: 1270423401348912}
27 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
28 | m_LocalPosition: {x: 0, y: 0, z: 0}
29 | m_LocalScale: {x: 1, y: 1, z: 1}
30 | m_Children: []
31 | m_Father: {fileID: 0}
32 | m_RootOrder: 0
33 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
34 | --- !u!114 &114679878964049358
35 | MonoBehaviour:
36 | m_ObjectHideFlags: 0
37 | m_CorrespondingSourceObject: {fileID: 0}
38 | m_PrefabInstance: {fileID: 0}
39 | m_PrefabAsset: {fileID: 0}
40 | m_GameObject: {fileID: 1270423401348912}
41 | m_Enabled: 1
42 | m_EditorHideFlags: 0
43 | m_Script: {fileID: 11500000, guid: 3830ecbe0f874710af3c6377b4540a81, type: 3}
44 | m_Name:
45 | m_EditorClassIdentifier:
46 | Auth:
47 | ServerUrl: https://try.count.ly/
48 | AppKey: YOUR_APP_KEY
49 | DeviceId:
50 | Config:
51 | Salt:
52 | EnableFirstAppLaunchSegment: 0
53 | EnablePost: 0
54 | EnableTestMode: 0
55 | EnableConsoleLogging: 1
56 | IgnoreSessionCooldown: 0
57 | NotificationMode: -1
58 | SessionDuration: 60
59 | EventQueueThreshold: 10
60 | StoredRequestLimit: 1000
61 | TotalBreadcrumbsAllowed: 100
62 | EnableAutomaticCrashReporting: 1
63 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Helpers/FirstLaunchAppHelper.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using UnityEngine;
3 |
4 | namespace Plugins.CountlySDK.Helpers
5 | {
6 | ///
7 | /// Helper class for managing and tracking the first launch of the application.
8 | ///
9 | internal static class FirstLaunchAppHelper
10 | {
11 | private static bool? _firstLaunchApp;
12 |
13 | ///
14 | /// Processes the first launch of the application.
15 | ///
16 | ///
17 | /// This method checks if the application has been launched for the first time.
18 | /// If it is the first launch, it sets the appropriate flag and saves it to PlayerPrefs.
19 | ///
20 | ///
21 | public static void Process()
22 | {
23 | if (!PlayerPrefs.HasKey(Constants.FirstAppLaunch)) {
24 | PlayerPrefs.SetInt(Constants.FirstAppLaunch, 1);
25 | PlayerPrefs.Save();
26 | _firstLaunchApp = true;
27 | } else {
28 | PlayerPrefs.SetInt(Constants.FirstAppLaunch, 0);
29 | PlayerPrefs.Save();
30 | _firstLaunchApp = false;
31 | }
32 | }
33 |
34 | ///
35 | /// Gets a value indicating whether this is the first launch of the application.
36 | ///
37 | ///
38 | /// true if this is the first launch of the application; otherwise, false.
39 | ///
40 | public static bool IsFirstLaunchApp
41 | {
42 | get {
43 | if (!_firstLaunchApp.HasValue) {
44 | Debug.LogWarning("[FirstLaunchAppHelper] IsFirstLaunchApp : Process should be called when session begins");
45 | Process();
46 | }
47 | return _firstLaunchApp.Value;
48 | }
49 | }
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Editor/EditorConfigSolutionFileGenerator.cs:
--------------------------------------------------------------------------------
1 | #if ENABLE_VSTU
2 | using UnityEditor;
3 | using SyntaxTree.VisualStudio.Unity.Bridge;
4 |
5 | ///
6 | /// This class hooks into the Visual Studio .sln generation step and modifies the file
7 | /// to include .editorconfig, which enforces consistent formatting standards and naming
8 | /// conventions.
9 | /// https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-code-style-settings-reference?view=vs-2017
10 | ///
11 | [InitializeOnLoad]
12 | public class EditorConfigSolutionFileGenerator
13 | {
14 | public static string kEditorConfigProjectFindStr = "EndProject\r\nGlobal";
15 | public static string kEditorConfigProjectReplaceStr =
16 | "EndProject\r\n" +
17 | "Project(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\") = \"Solution Items\", \"Solution Items\", \"{B24FE069-BB5F-4F16-BCDA-61C28EABC46B}\"\r\n" +
18 | " ProjectSection(SolutionItems) = preProject\r\n" +
19 | " .editorconfig = .editorconfig\r\n" +
20 | " EndProjectSection\r\n" +
21 | "EndProject\r\n" +
22 | "Global";
23 |
24 | public static string kGlobalSectionFindStr = "EndGlobalSection\r\nEndGlobal";
25 | public static string kGlobalSectionReplaceStr =
26 | "EndGlobalSection\r\n" +
27 | " GlobalSection(ExtensibilityGlobals) = postSolution\r\n" +
28 | " SolutionGuid = {FD87994B-C032-4821-BD72-E057C33083EF}\r\n" +
29 | " EndGlobalSection\r\n" +
30 | "EndGlobal";
31 |
32 | static EditorConfigSolutionFileGenerator()
33 | {
34 | ProjectFilesGenerator.SolutionFileGeneration += AppendEditorConfig;
35 | }
36 |
37 | protected static string AppendEditorConfig(string fileName, string fileContent)
38 | {
39 | fileContent = fileContent.Replace(kEditorConfigProjectFindStr, kEditorConfigProjectReplaceStr);
40 | fileContent = fileContent.Replace(kGlobalSectionFindStr, kGlobalSectionReplaceStr);
41 |
42 | return fileContent;
43 | }
44 | }
45 | #endif
46 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Helpers/Constants.cs:
--------------------------------------------------------------------------------
1 |
2 | using UnityEngine;
3 |
4 | namespace Plugins.CountlySDK.Helpers
5 | {
6 | internal class Constants
7 | {
8 | public const string SdkVersion = "24.8.0";
9 |
10 | #if UNITY_EDITOR
11 | public const string SdkName = "csharp-unity-editor";
12 | #elif UNITY_ANDROID
13 | public const string SdkName = "csharp-unity-android";
14 | #elif UNITY_IOS
15 | public const string SdkName = "csharp-unity-ios";
16 | #elif UNITY_STANDALONE_WIN
17 | public const string SdkName = "csharp-unity-windows";
18 | #elif UNITY_STANDALONE_OSX
19 | public const string SdkName = "csharp-unity-osx";
20 | #elif UNITY_STANDALONE_LINUX
21 | public const string SdkName = "csharp-unity-linux";
22 | #elif UNITY_WEBGL
23 | public const string SdkName = "csharp-unity-webgl";
24 | #elif UNITY_TVOS
25 | public const string SdkName = "csharp-unity-tvos";
26 | #elif UNITY_WSA_10_0
27 | public const string SdkName = "csharp-unity-uwp";
28 | #elif UNITY_PS4
29 | public const string SdkName = "csharp-unity-ps4"
30 | #elif UNITY_XBOXONE
31 | public const string SdkName = "csharp-unity-xboxone"
32 | #else
33 | public const string SdkName = "generic";
34 | #endif
35 |
36 | public const string CountlyServerUrl = "https://us-try.count.ly/";
37 | public const string DeviceIDKey = "DeviceID";
38 | public const string DeviceIDTypeKey = "DeviceIDType";
39 |
40 |
41 | public const string SchemaVersion = "Countly.SchemaVersion";
42 | public const string FirstAppLaunch = "Countly.FirstAppLaunch";
43 | public const string FirstAppLaunchSegment = "firstAppLaunch";
44 |
45 | #region Notification Keys
46 |
47 | public const string MessageIDKey = "c.i";
48 | public const string TitleDataKey = "title";
49 | public const string MessageDataKey = "message";
50 | public const string ImageUrlKey = "c.m";
51 | public const string ActionButtonKey = "c.b";
52 | public const string SoundDataKey = "sound";
53 |
54 | #endregion
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Helpers/RequestBuilder.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections;
3 | using System.Collections.Generic;
4 | using System.Text;
5 | using Plugins.CountlySDK;
6 | using Plugins.CountlySDK.Models;
7 | using UnityEngine;
8 |
9 | internal class RequestBuilder
10 | {
11 |
12 | internal RequestBuilder()
13 | {
14 | }
15 |
16 | ///
17 | /// Builds request by adding Base params into supplied queryParams parameters.
18 | /// The data is appended in the URL.
19 | ///
20 | ///
21 | ///
22 | internal CountlyRequestModel BuildRequest(IDictionary baseParams, IDictionary queryParams)
23 | {
24 | //Metrics added to each request
25 | IDictionary requestData = baseParams;
26 | foreach (KeyValuePair item in queryParams) {
27 | requestData.Add(item.Key, item.Value);
28 | }
29 |
30 | string data = BuildQueryString(requestData);
31 | CountlyRequestModel requestModel = new CountlyRequestModel(null, data);
32 |
33 | return requestModel;
34 | }
35 |
36 | ///
37 | /// Builds query string using supplied queryParams parameters.
38 | ///
39 | ///
40 | ///
41 | internal string BuildQueryString(IDictionary queryParams)
42 | {
43 | // Dictionary queryParams = JsonConvert.DeserializeObject>(data);
44 | StringBuilder requestStringBuilder = new StringBuilder();
45 |
46 | //Query params supplied for creating request
47 | foreach (KeyValuePair item in queryParams) {
48 | if (!string.IsNullOrEmpty(item.Key) && item.Value != null) {
49 | requestStringBuilder.AppendFormat(requestStringBuilder.Length == 0 ? "{0}={1}" : "&{0}={1}", item.Key,
50 | Convert.ToString(item.Value));
51 | }
52 | }
53 |
54 | string result = requestStringBuilder.ToString();
55 |
56 | return Uri.EscapeUriString(result);
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/CountlyMainThreadHandler.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Threading;
3 | using Plugins.CountlySDK;
4 | using UnityEngine;
5 |
6 | public class CountlyMainThreadHandler : MonoBehaviour
7 | {
8 | private static CountlyMainThreadHandler _instance;
9 | private Thread mainThread;
10 | private Action _queuedAction;
11 | private readonly object lockObject = new object(); // For thread safety
12 |
13 | public static CountlyMainThreadHandler Instance
14 | {
15 | get {
16 | if (_instance == null) {
17 | // If instance is null, add this script to the created Countly object
18 | GameObject gameObject = Countly.Instance.gameObject;
19 | _instance = gameObject.AddComponent();
20 | }
21 | return _instance;
22 | }
23 | internal set {
24 | // Allow internal setting of the instance (used during cleanup)
25 | _instance = value;
26 | }
27 | }
28 |
29 | private void Awake()
30 | {
31 | // Record the main thread when the script is first initialized
32 | mainThread = Thread.CurrentThread;
33 | }
34 |
35 | ///
36 | /// Checks if the current thread is the main thread
37 | ///
38 | ///
39 | public bool IsMainThread()
40 | {
41 | return Thread.CurrentThread.ManagedThreadId == mainThread.ManagedThreadId;
42 | }
43 |
44 | public void RunOnMainThread(Action action)
45 | {
46 | // Check if we are on the main thread
47 | if (IsMainThread()) {
48 | // If on the main thread, invoke the action immediately
49 | action.Invoke();
50 | } else {
51 | // If on a different thread, queue the action to be executed on the main thread
52 | lock (lockObject) {
53 | _queuedAction = action;
54 | }
55 | }
56 | }
57 |
58 | private void Update()
59 | {
60 | // Execute any queued action on the main thread during the Unity Update phase
61 | if (_queuedAction != null) {
62 | lock (lockObject) {
63 | _queuedAction.Invoke();
64 | _queuedAction = null;
65 | }
66 | }
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/ProjectSettings/GraphicsSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!30 &1
4 | GraphicsSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 13
7 | m_Deferred:
8 | m_Mode: 1
9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0}
10 | m_DeferredReflections:
11 | m_Mode: 1
12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0}
13 | m_ScreenSpaceShadows:
14 | m_Mode: 1
15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0}
16 | m_LegacyDeferred:
17 | m_Mode: 1
18 | m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0}
19 | m_DepthNormals:
20 | m_Mode: 1
21 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0}
22 | m_MotionVectors:
23 | m_Mode: 1
24 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0}
25 | m_LightHalo:
26 | m_Mode: 1
27 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0}
28 | m_LensFlare:
29 | m_Mode: 1
30 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0}
31 | m_AlwaysIncludedShaders:
32 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0}
33 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0}
34 | - {fileID: 17000, guid: 0000000000000000f000000000000000, type: 0}
35 | - {fileID: 16000, guid: 0000000000000000f000000000000000, type: 0}
36 | - {fileID: 16001, guid: 0000000000000000f000000000000000, type: 0}
37 | - {fileID: 16003, guid: 0000000000000000f000000000000000, type: 0}
38 | m_PreloadedShaders: []
39 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000,
40 | type: 0}
41 | m_CustomRenderPipeline: {fileID: 0}
42 | m_TransparencySortMode: 0
43 | m_TransparencySortAxis: {x: 0, y: 0, z: 1}
44 | m_DefaultRenderingPath: 1
45 | m_DefaultMobileRenderingPath: 1
46 | m_TierSettings: []
47 | m_LightmapStripping: 0
48 | m_FogStripping: 0
49 | m_InstancingStripping: 0
50 | m_LightmapKeepPlain: 1
51 | m_LightmapKeepDirCombined: 1
52 | m_LightmapKeepDynamicPlain: 1
53 | m_LightmapKeepDynamicDirCombined: 1
54 | m_LightmapKeepShadowMask: 1
55 | m_LightmapKeepSubtractive: 1
56 | m_FogKeepLinear: 1
57 | m_FogKeepExp: 1
58 | m_FogKeepExp2: 1
59 | m_AlbedoSwatchInfos: []
60 | m_LightsUseLinearIntensity: 0
61 | m_LightsUseColorTemperature: 0
62 | m_LogWhenShaderIsCompiled: 0
63 | m_AllowEnlightenSupportForUpgradedProject: 1
64 |
--------------------------------------------------------------------------------
/Services/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | set DIRNAME=%~dp0
12 | if "%DIRNAME%" == "" set DIRNAME=.
13 | set APP_BASE_NAME=%~n0
14 | set APP_HOME=%DIRNAME%
15 |
16 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
17 | set DEFAULT_JVM_OPTS=
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windows variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 |
53 | :win9xME_args
54 | @rem Slurp the command line arguments.
55 | set CMD_LINE_ARGS=
56 | set _SKIP=2
57 |
58 | :win9xME_args_slurp
59 | if "x%~1" == "x" goto execute
60 |
61 | set CMD_LINE_ARGS=%*
62 |
63 | :execute
64 | @rem Setup the command line
65 |
66 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
67 |
68 | @rem Execute Gradle
69 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
70 |
71 | :end
72 | @rem End local scope for the variables with windows NT shell
73 | if "%ERRORLEVEL%"=="0" goto mainEnd
74 |
75 | :fail
76 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
77 | rem the _cmd.exe /c_ return code!
78 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
79 | exit /b 1
80 |
81 | :mainEnd
82 | if "%OS%"=="Windows_NT" endlocal
83 |
84 | :omega
85 |
--------------------------------------------------------------------------------
/Assets/Countly/Example/UI/Cross.png.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 185511a7ab08e0e4cbbcf01bea1299b6
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 11
7 | mipmaps:
8 | mipMapMode: 0
9 | enableMipMap: 0
10 | sRGBTexture: 1
11 | linearTexture: 0
12 | fadeOut: 0
13 | borderMipMap: 0
14 | mipMapsPreserveCoverage: 0
15 | alphaTestReferenceValue: 0.5
16 | mipMapFadeDistanceStart: 1
17 | mipMapFadeDistanceEnd: 3
18 | bumpmap:
19 | convertToNormalMap: 0
20 | externalNormalMap: 0
21 | heightScale: 0.25
22 | normalMapFilter: 0
23 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | grayScaleToAlpha: 0
28 | generateCubemap: 6
29 | cubemapConvolution: 0
30 | seamlessCubemap: 0
31 | textureFormat: 1
32 | maxTextureSize: 2048
33 | textureSettings:
34 | serializedVersion: 2
35 | filterMode: 1
36 | aniso: 1
37 | mipBias: 0
38 | wrapU: 1
39 | wrapV: 1
40 | wrapW: 1
41 | nPOTScale: 0
42 | lightmap: 0
43 | compressionQuality: 50
44 | spriteMode: 1
45 | spriteExtrude: 1
46 | spriteMeshType: 1
47 | alignment: 0
48 | spritePivot: {x: 0.5, y: 0.5}
49 | spritePixelsToUnits: 100
50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
51 | spriteGenerateFallbackPhysicsShape: 1
52 | alphaUsage: 1
53 | alphaIsTransparency: 1
54 | spriteTessellationDetail: -1
55 | textureType: 8
56 | textureShape: 1
57 | singleChannelComponent: 0
58 | flipbookRows: 1
59 | flipbookColumns: 1
60 | maxTextureSizeSet: 0
61 | compressionQualitySet: 0
62 | textureFormatSet: 0
63 | ignorePngGamma: 0
64 | applyGammaDecoding: 0
65 | platformSettings:
66 | - serializedVersion: 3
67 | buildTarget: DefaultTexturePlatform
68 | maxTextureSize: 2048
69 | resizeAlgorithm: 0
70 | textureFormat: -1
71 | textureCompression: 1
72 | compressionQuality: 50
73 | crunchedCompression: 0
74 | allowsAlphaSplitting: 0
75 | overridden: 0
76 | androidETC2FallbackOverride: 0
77 | forceMaximumCompressionQuality_BC6H_BC7: 0
78 | spriteSheet:
79 | serializedVersion: 2
80 | sprites: []
81 | outline: []
82 | physicsShape: []
83 | bones: []
84 | spriteID: 5e97eb03825dee720800000000000000
85 | internalID: 0
86 | vertices: []
87 | indices:
88 | edges: []
89 | weights: []
90 | secondaryTextures: []
91 | spritePackingTag:
92 | pSDRemoveMatte: 0
93 | pSDShowRemoveMatteOption: 0
94 | userData:
95 | assetBundleName:
96 | assetBundleVariant:
97 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Models/CountlyExceptionDetailModel.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using Newtonsoft.Json;
4 | using Plugins.CountlySDK.Helpers;
5 | using UnityEngine;
6 |
7 | namespace Plugins.CountlySDK.Models
8 | {
9 | [Serializable]
10 | internal class CountlyExceptionDetailModel
11 | {
12 | //device metrics
13 | [JsonProperty("_os")]
14 | public string OS { get; set; }
15 | [JsonProperty("_os_version")]
16 | public string OSVersion { get; set; }
17 | [JsonProperty("_manufacture")]
18 | public string Manufacture { get; set; }
19 |
20 | [JsonProperty("_device")]
21 | public string Device { get; set; }
22 | [JsonProperty("_resolution")]
23 | public string Resolution { get; set; }
24 | [JsonProperty("_app_version")]
25 | public string AppVersion { get; set; }
26 | [JsonProperty("_cpu")]
27 | public string Cpu { get; set; }
28 | [JsonProperty("_opengl")]
29 | public string Opengl { get; set; }
30 |
31 | //state of device
32 | [JsonProperty("_ram_current")]
33 | public string RamCurrent { get; set; }
34 | [JsonProperty("_ram_total")]
35 | public string RamTotal { get; set; }
36 | [JsonProperty("_disk_current")]
37 | public string DiskCurrent { get; set; }
38 | [JsonProperty("_disk_total")]
39 | public string DiskTotal { get; set; }
40 | [JsonProperty("_bat")]
41 | public string Battery { get; set; }
42 | [JsonProperty("_orientation")]
43 | public string Orientation { get; set; }
44 |
45 | [JsonProperty("_root")]
46 | public string Root { get; set; }
47 | [JsonProperty("_online")]
48 | public string Online { get; set; }
49 | [JsonProperty("_muted")]
50 | public string Muted { get; set; }
51 | [JsonProperty("_background")]
52 | public string Background { get; set; }
53 | [JsonProperty("_name")]
54 | public string Name { get; set; }
55 | [JsonProperty("_error")]
56 | public string Error { get; set; }
57 | [JsonProperty("_nonfatal")]
58 | public bool Nonfatal { get; set; }
59 | [JsonProperty("_logs")]
60 | public string Logs { get; set; }
61 | [JsonProperty("_run")]
62 | public string Run { get; set; }
63 | [JsonProperty("_custom")]
64 | public Dictionary Custom { get; set; }
65 | internal CountlyExceptionDetailModel() { }
66 | }
67 | }
68 |
--------------------------------------------------------------------------------
/Services/app/src/main/java/ly/count/unity/push_fcm/MessageStore.java:
--------------------------------------------------------------------------------
1 | package ly.count.unity.push_fcm;
2 |
3 | import android.content.Context;
4 | import android.content.SharedPreferences;
5 | import android.util.Log;
6 |
7 | import org.json.JSONArray;
8 | import org.json.JSONException;
9 | import org.json.JSONObject;
10 |
11 |
12 | public class MessageStore {
13 | private static SharedPreferences messagePreferences;
14 | private static final String MESSAGE_DATA = "MESSAGE_DATA";
15 | private static final String MESSAGE_PREFERENCES = "MESSAGE_PREFERENCES";
16 |
17 | private MessageStore() {
18 | }
19 |
20 | public static void init(final Context context) {
21 | if (messagePreferences == null) {
22 | messagePreferences = context.getSharedPreferences(MESSAGE_PREFERENCES, Context.MODE_PRIVATE);
23 | }
24 | CountlyPushPlugin.log("MessageStore init", CountlyPushPlugin.LogLevel.DEBUG);
25 | }
26 |
27 | public static boolean storeMessageData(String messageId, String index) {
28 | if (!isInitialized()) {
29 | CountlyPushPlugin.log("MessageStore isn't initialized", CountlyPushPlugin.LogLevel.DEBUG);
30 | return false;
31 | }
32 |
33 | String messagesData = getMessagesData();
34 | try {
35 | JSONArray jsonArray = null;
36 |
37 | if (messagesData == null) {
38 | jsonArray = new JSONArray();
39 | } else {
40 | jsonArray = new JSONArray(messagesData);
41 | }
42 |
43 | JSONObject jsonObject = new JSONObject();
44 |
45 | jsonObject.put("action_index", index);
46 | jsonObject.put("messageId", messageId);
47 |
48 | jsonArray.put(jsonObject);
49 |
50 | messagePreferences.edit().putString(MESSAGE_DATA, jsonArray.toString()).apply();
51 |
52 | } catch (JSONException e) {
53 | e.printStackTrace();
54 | return false;
55 | }
56 |
57 | return true;
58 | }
59 |
60 | public static void clearMessagesData() {
61 | if (isInitialized()) {
62 | messagePreferences.edit().remove(MESSAGE_DATA).apply();
63 | } else {
64 | CountlyPushPlugin.log("MessageStore isn't initialized", CountlyPushPlugin.LogLevel.DEBUG);
65 | }
66 | }
67 |
68 | public static String getMessagesData() {
69 | if (isInitialized()) {
70 | return messagePreferences.getString(MESSAGE_DATA, null);
71 | }
72 |
73 | CountlyPushPlugin.log("MessageStore isn't initialized", CountlyPushPlugin.LogLevel.DEBUG);
74 | return null;
75 | }
76 |
77 | public static boolean isInitialized() {
78 | return messagePreferences != null;
79 | }
80 | }
81 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Models/TimeMetricModel.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Globalization;
4 | using Newtonsoft.Json;
5 |
6 | namespace Plugins.CountlySDK.Models
7 | {
8 | internal class TimeMetricModel
9 | {
10 | [JsonProperty("timestamp")]
11 | public long Timestamp { get; set; }
12 | [JsonProperty("hour")]
13 | public int Hour { get; set; }
14 | [JsonProperty("dow")]
15 | public int DayOfWeek { get; set; }
16 | [JsonProperty("tz")]
17 | public string Timezone { get; set; }
18 |
19 | //variable to hold last used timestamp
20 | private DateTimeOffset _lastMilliSecTimeStamp = DateTimeOffset.UtcNow;
21 |
22 | static TimeMetricModel() { }
23 | private TimeMetricModel() { }
24 |
25 | internal static Dictionary GetTimeMetricModel()
26 | {
27 | TimeMetricModel model = TimeMetricModel.GetTimeZoneInfoForRequest();
28 | return new Dictionary
29 | {
30 | {"timestamp", model.Timestamp },
31 | {"hour", model.Hour },
32 | {"dow", model.DayOfWeek },
33 | {"tz", model.Timezone },
34 | };
35 | }
36 |
37 | private long GetUniqueMilliSecTimeStamp(DateTime? requestedDatetime = null)
38 | {
39 | //get current timestamp in miliseconds
40 | DateTimeOffset currentMilliSecTimeStamp = DateTimeOffset.UtcNow;
41 |
42 | if (requestedDatetime.HasValue) {
43 | currentMilliSecTimeStamp = requestedDatetime.Value;
44 |
45 | _lastMilliSecTimeStamp = _lastMilliSecTimeStamp >= currentMilliSecTimeStamp
46 | ? _lastMilliSecTimeStamp.AddMilliseconds(1)
47 | : _lastMilliSecTimeStamp = currentMilliSecTimeStamp;
48 | } else {
49 | _lastMilliSecTimeStamp = currentMilliSecTimeStamp;
50 | }
51 |
52 | return _lastMilliSecTimeStamp.ToUnixTimeMilliseconds();
53 | }
54 |
55 | internal static TimeMetricModel GetTimeZoneInfoForRequest()
56 | {
57 | DateTime currentDateTime = DateTime.Now;
58 | TimeMetricModel model =
59 | new TimeMetricModel {
60 | Hour = currentDateTime.TimeOfDay.Hours,
61 | DayOfWeek = (int)currentDateTime.DayOfWeek,
62 | Timezone = TimeZone.CurrentTimeZone.GetUtcOffset(currentDateTime).TotalMinutes.ToString(CultureInfo.InvariantCulture)
63 | };
64 |
65 | model.Timestamp = model.GetUniqueMilliSecTimeStamp(currentDateTime);
66 | return model;
67 | }
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Notifications/Impls/iOs/IOSBridge.cs:
--------------------------------------------------------------------------------
1 | using UnityEngine;
2 | using System;
3 | using Plugins.CountlySDK.Models;
4 | using Newtonsoft.Json.Linq;
5 |
6 | public class IOSBridge : MonoBehaviour
7 | {
8 | public string MessageId { get; set; }
9 | public string ButtonIndex { get; set; }
10 |
11 | public CountlyLogHelper Log { get; set; }
12 |
13 | private Action _onTokenResult;
14 | private Action _OnNotificationReceiveResult;
15 | private Action _OnNotificationClickResult;
16 |
17 | public void ListenTokenResult(Action result) => _onTokenResult = result;
18 | public void ListenReceiveResult(Action result) => _OnNotificationReceiveResult = result;
19 | public void ListenClickResult(Action result) => _OnNotificationClickResult = result;
20 |
21 | private void Awake()
22 | {
23 | DontDestroyOnLoad(gameObject);
24 | }
25 |
26 | #if !UNITY_EDITOR && COUNTLY_ENABLE_IOS_PUSH
27 | [System.Runtime.InteropServices.DllImport("__Internal")]
28 | extern static public void registerForRemoteNotifications();
29 | #endif
30 |
31 | public void GetToken()
32 | {
33 |
34 | #if !UNITY_EDITOR && COUNTLY_ENABLE_IOS_PUSH
35 | registerForRemoteNotifications();
36 | #endif
37 |
38 | }
39 |
40 |
41 | //Sent when the application successfully registered with Apple Push Notification Service (APNS).
42 | void OnDidRegisterForRemoteNotificationsWithDeviceToken(string deviceToken)
43 | {
44 | Log.Debug("[IOSBridge] OnDidRegisterForRemoteNotificationsWithDeviceToken Token: " + deviceToken);
45 |
46 | if (deviceToken != null && deviceToken.Length != 0) {
47 | _onTokenResult?.Invoke(deviceToken);
48 | }
49 | }
50 |
51 | //Sent when the application failed to be registered with Apple Push Notification Service (APNS).
52 | void OnDidFailToRegisterForRemoteNotificcallBackationsWithError(string error)
53 | {
54 | Log.Debug("[IOSBridge] OnDidFailToRegisterForRemoteNotificcallBackationsWithError error: " + error);
55 |
56 | }
57 |
58 |
59 | void OnPushNotificationsReceived(string pushData)
60 | {
61 | Log.Debug("[IOSBridge] OnPushNotificationsReceived: " + pushData);
62 |
63 | _OnNotificationReceiveResult?.Invoke(pushData);
64 |
65 | }
66 |
67 | void OnPushNotificationsClicked(string pushData)
68 | {
69 | Log.Debug("[IOSBridge] OnPushNotificationsClicked: " + pushData);
70 |
71 | JObject item = JObject.Parse(pushData);
72 |
73 | MessageId = (string)item["c"]["i"];
74 | ButtonIndex = (string)item["action_index"];
75 |
76 | _OnNotificationClickResult?.Invoke(pushData, int.Parse(ButtonIndex));
77 |
78 | }
79 |
80 |
81 | void OnDidRegisterUserNotificationSettings(string setting)
82 | {
83 | Log.Debug("[IOSBridge] OnDidRegisterUserNotificationSettings error: " + setting);
84 | }
85 |
86 | }
87 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Notifications/Impls/ProxyNotificationsService.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections;
3 | using System.IO;
4 | using System.Threading.Tasks;
5 | using Plugins.CountlySDK.Enums;
6 | using Plugins.CountlySDK.Helpers;
7 | using Plugins.CountlySDK.Models;
8 | using Plugins.CountlySDK.Services;
9 | using UnityEngine;
10 |
11 | namespace Notifications.Impls
12 | {
13 | public class ProxyNotificationsService : INotificationsService
14 | {
15 | private readonly CountlyLogHelper _logHelper;
16 | private readonly Transform _countlyGameObject;
17 | private readonly INotificationsService _service;
18 | public bool IsInitializedWithoutError { get; set; }
19 |
20 | internal ProxyNotificationsService(Transform countlyGameObject, CountlyConfiguration config, CountlyLogHelper logHelper, Action startCoroutine, EventCountlyService eventCountlyService)
21 | {
22 | _logHelper = logHelper;
23 | _logHelper.Debug("[ProxyNotificationsService] Initializing.");
24 |
25 | _countlyGameObject = countlyGameObject;
26 |
27 | if (config.NotificationMode == TestMode.None) {
28 | return;
29 | }
30 |
31 | #if UNITY_ANDROID
32 | _service = new Notifications.Impls.Android.AndroidNotificationsService(_countlyGameObject, config, logHelper, eventCountlyService);
33 | #elif UNITY_IOS
34 | _service = new Notifications.Impls.iOs.IOsNotificationsService(_countlyGameObject, config, logHelper, startCoroutine, eventCountlyService);
35 | #endif
36 | IsInitializedWithoutError = true;
37 | if (_service != null && !_service.IsInitializedWithoutError) {
38 | _service = null;
39 | IsInitializedWithoutError = false;
40 | }
41 | }
42 |
43 | public void GetToken(Action result)
44 | {
45 | _logHelper.Verbose("[ProxyNotificationsService] GetToken");
46 |
47 | if (_service != null) {
48 | _service.GetToken(result);
49 | }
50 |
51 | }
52 |
53 | public void OnNotificationClicked(Action result)
54 | {
55 | _logHelper.Verbose("[ProxyNotificationsService] OnNotificationClicked");
56 |
57 | if (_service != null) {
58 | _service.OnNotificationClicked(result);
59 | }
60 | }
61 |
62 |
63 | public void OnNotificationReceived(Action result)
64 | {
65 | _logHelper.Verbose("[ProxyNotificationsService] OnNotificationReceived");
66 |
67 | if (_service != null) {
68 | _service.OnNotificationReceived(result);
69 | }
70 | }
71 |
72 | public async Task ReportPushActionAsync()
73 | {
74 | _logHelper.Verbose("[ProxyNotificationsService] ReportPushActionAsync");
75 |
76 | if (_service != null) {
77 | return await _service.ReportPushActionAsync();
78 | }
79 |
80 | return new CountlyResponse {
81 | IsSuccess = true,
82 | };
83 | }
84 | }
85 | }
--------------------------------------------------------------------------------
/ProjectSettings/AndroidResolverDependencies.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | com.google.android.gms:play-services-base:15.0.1
4 | com.google.firebase:firebase-app-unity:5.2.1
5 | com.google.firebase:firebase-common:16.0.1
6 | com.google.firebase:firebase-core:16.0.1
7 | com.google.firebase:firebase-iid:[17.0.0]
8 | com.google.firebase:firebase-messaging:17.3.0
9 | com.google.firebase:firebase-messaging-unity:5.2.1
10 |
11 |
12 | Assets/Plugins/Android/android.arch.core.common-1.0.0.jar
13 | Assets/Plugins/Android/android.arch.lifecycle.common-1.0.0.jar
14 | Assets/Plugins/Android/android.arch.lifecycle.runtime-1.0.0.aar
15 | Assets/Plugins/Android/com.android.support.support-annotations-26.1.0.jar
16 | Assets/Plugins/Android/com.android.support.support-compat-26.1.0.aar
17 | Assets/Plugins/Android/com.android.support.support-core-ui-26.1.0.aar
18 | Assets/Plugins/Android/com.android.support.support-core-utils-26.1.0.aar
19 | Assets/Plugins/Android/com.android.support.support-fragment-26.1.0.aar
20 | Assets/Plugins/Android/com.android.support.support-media-compat-26.1.0.aar
21 | Assets/Plugins/Android/com.android.support.support-v4-26.1.0.aar
22 | Assets/Plugins/Android/com.google.android.gms.play-services-ads-identifier-16.0.0.aar
23 | Assets/Plugins/Android/com.google.android.gms.play-services-base-16.0.1.aar
24 | Assets/Plugins/Android/com.google.android.gms.play-services-basement-16.0.1.aar
25 | Assets/Plugins/Android/com.google.android.gms.play-services-measurement-api-16.0.3.aar
26 | Assets/Plugins/Android/com.google.android.gms.play-services-measurement-base-16.0.4.aar
27 | Assets/Plugins/Android/com.google.android.gms.play-services-stats-16.0.1.aar
28 | Assets/Plugins/Android/com.google.android.gms.play-services-tasks-16.0.1.aar
29 | Assets/Plugins/Android/com.google.firebase.firebase-analytics-16.0.5.aar
30 | Assets/Plugins/Android/com.google.firebase.firebase-analytics-impl-16.2.3.aar
31 | Assets/Plugins/Android/com.google.firebase.firebase-app-unity-5.2.1.aar
32 | Assets/Plugins/Android/com.google.firebase.firebase-common-16.0.4.aar
33 | Assets/Plugins/Android/com.google.firebase.firebase-core-16.0.5.aar
34 | Assets/Plugins/Android/com.google.firebase.firebase-iid-17.0.4.aar
35 | Assets/Plugins/Android/com.google.firebase.firebase-iid-interop-16.0.1.aar
36 | Assets/Plugins/Android/com.google.firebase.firebase-measurement-connector-17.0.1.aar
37 | Assets/Plugins/Android/com.google.firebase.firebase-measurement-connector-impl-17.0.3.aar
38 | Assets/Plugins/Android/com.google.firebase.firebase-messaging-17.3.4.aar
39 | Assets/Plugins/Android/com.google.firebase.firebase-messaging-unity-5.2.1.aar
40 |
41 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Models/CountlyUserDetailsModel.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using Newtonsoft.Json;
3 |
4 | namespace Plugins.CountlySDK.Models
5 | {
6 | public class CountlyUserDetailsModel
7 | {
8 | [JsonProperty("name")]
9 | internal string Name { get; set; }
10 | [JsonProperty("username")]
11 | internal string Username { get; set; }
12 | [JsonProperty("email")]
13 | internal string Email { get; set; }
14 | [JsonProperty("organization")]
15 | internal string Organization { get; set; }
16 | [JsonProperty("phone")]
17 | internal string Phone { get; set; }
18 |
19 | //Web URL to picture
20 | //"https://pbs.twimg.com/profile_images/1442562237/012_n_400x400.jpg",
21 | [JsonProperty("picture")]
22 | internal string PictureUrl { get; set; }
23 |
24 | [JsonProperty("gender")]
25 | internal string Gender { get; set; }
26 | [JsonProperty("byear")]
27 | internal string BirthYear { get; set; }
28 |
29 | [JsonProperty("custom")]
30 | //dots (.) and dollar signs ($) in key names will be stripped out.
31 | internal IDictionary Custom { get; set; }
32 |
33 | ///
34 | /// Initializes a new instance of User Model with the specified params
35 | ///
36 | ///
37 | ///
38 | ///
39 | ///
40 | ///
41 | ///
42 | ///
43 | ///
44 | ///
45 | public CountlyUserDetailsModel(string name, string username, string email, string organization, string phone,
46 | string pictureUrl, string gender, string birthYear, IDictionary customData)
47 | {
48 | Name = name;
49 | Username = username;
50 | Email = email;
51 | Organization = organization;
52 | Phone = phone;
53 | PictureUrl = pictureUrl;
54 | Gender = gender;
55 | BirthYear = birthYear;
56 | if (customData != null) {
57 | Custom = customData as Dictionary;
58 | }
59 | }
60 |
61 | ///
62 | /// This constructor is used to initialize custom user details only.
63 | ///
64 | ///
65 | public CountlyUserDetailsModel(IDictionary customData)
66 | {
67 | Custom = customData as Dictionary;
68 | }
69 |
70 | public override string ToString()
71 | {
72 | return $"{nameof(Name)}: {Name}, {nameof(Username)}: {Username}, {nameof(Email)}: {Email}, {nameof(Organization)}: {Organization}, {nameof(Phone)}: {Phone}, {nameof(PictureUrl)}: {PictureUrl}, {nameof(Gender)}: {Gender}, {nameof(BirthYear)}: {BirthYear}, {nameof(Custom)}: {Custom}";
73 | }
74 | }
75 | }
76 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Notifications/Impls/NotificationsCallbackService.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Linq;
3 | using Plugins.CountlySDK.Models;
4 | using Plugins.CountlySDK.Services;
5 | using UnityEngine;
6 |
7 | namespace Notifications
8 | {
9 | public class NotificationsCallbackService
10 | {
11 | CountlyLogHelper _logHelper;
12 | private readonly List _listeners;
13 | internal NotificationsCallbackService(CountlyConfiguration configuration, CountlyLogHelper logHelper)
14 | {
15 | _logHelper = logHelper;
16 | _logHelper.Debug("[NotificationsCallbackService] Initializing.");
17 | _listeners = configuration.NotificationEventListeners.Distinct().ToList();
18 | }
19 |
20 | ///
21 | /// Add Notification listener.
22 | ///
23 | ///
24 | public void AddListener(INotificationListener listener)
25 | {
26 | if (_listeners.Contains(listener)) {
27 | return;
28 | }
29 |
30 | _listeners.Add(listener);
31 |
32 | _logHelper.Debug("[NotificationsCallbackService] AddListener: " + listener);
33 | }
34 | ///
35 | /// Remove Notification listener.
36 | ///
37 | ///
38 | public void RemoveListener(INotificationListener listener)
39 | {
40 | if (!_listeners.Contains(listener)) {
41 | return;
42 | }
43 |
44 | _listeners.Remove(listener);
45 | _logHelper.Debug("[NotificationsCallbackService] RemoveListener: " + listener);
46 |
47 | }
48 |
49 | ///
50 | /// Trigger listener's Notification Received event with payload of push notification.
51 | ///
52 | ///
53 | internal void NotifyOnNotificationReceived(string data)
54 | {
55 | foreach (INotificationListener listener in _listeners) {
56 | if (listener != null) {
57 | listener.OnNotificationReceived(data);
58 | }
59 | }
60 |
61 | _logHelper.Debug("[NotificationsCallbackService] SendMessageToListeners: " + data);
62 |
63 | }
64 |
65 | ///
66 | /// Trigger listener's Notification Clicked event with payload of push notification and action index.
67 | ///
68 | ///
69 | ///
70 | internal void NotifyOnNotificationClicked(string data, int index)
71 | {
72 | foreach (INotificationListener listener in _listeners) {
73 | if (listener != null) {
74 | listener.OnNotificationClicked(data, index);
75 | }
76 | }
77 |
78 | _logHelper.Debug("[NotificationsCallbackService] SendMessageToListeners: " + data);
79 | }
80 | }
81 |
82 | public interface INotificationListener
83 | {
84 | void OnNotificationReceived(string message);
85 | void OnNotificationClicked(string message, int index);
86 | }
87 | }
--------------------------------------------------------------------------------
/Services/app/src/main/java/ly/count/unity/push_fcm/NotificationBroadcastReceiver.java:
--------------------------------------------------------------------------------
1 | package ly.count.unity.push_fcm;
2 |
3 | import android.app.NotificationManager;
4 | import android.net.Uri;
5 | import android.util.Log;
6 | import android.os.Bundle;
7 | import android.content.Intent;
8 | import android.content.Context;
9 |
10 | import com.unity3d.player.UnityPlayer;
11 | import com.unity3d.player.UnityPlayerActivity;
12 |
13 | import android.content.BroadcastReceiver;
14 |
15 | import org.json.JSONException;
16 | import org.json.JSONObject;
17 |
18 | import java.util.Map;
19 |
20 | import static ly.count.unity.push_fcm.CountlyPushPlugin.EXTRA_ACTION_INDEX;
21 | import static ly.count.unity.push_fcm.CountlyPushPlugin.EXTRA_MESSAGE;
22 |
23 | public class NotificationBroadcastReceiver extends BroadcastReceiver {
24 | @Override
25 | public void onReceive(Context context, Intent intent) {
26 | CountlyPushPlugin.log("NotificationBroadcastReceiver::onReceive", CountlyPushPlugin.LogLevel.DEBUG);
27 |
28 | Bundle bundle = intent.getExtras();
29 |
30 | if (bundle == null) {
31 | CountlyPushPlugin.log("bundle is null", CountlyPushPlugin.LogLevel.DEBUG);
32 | return;
33 | }
34 |
35 | int index = bundle.getInt(CountlyPushPlugin.EXTRA_ACTION_INDEX, 0);
36 | CountlyPushPlugin.Message message = bundle.getParcelable(EXTRA_MESSAGE);
37 |
38 | String messageId = message.getId();
39 |
40 | CountlyPushPlugin.log("Message ID: " + messageId, CountlyPushPlugin.LogLevel.DEBUG);
41 |
42 | if (!MessageStore.isInitialized()) {
43 | MessageStore.init(context);
44 | }
45 |
46 | if (!messageId.isEmpty()) {
47 | boolean flag = MessageStore.storeMessageData(messageId, Integer.toString(index));
48 | CountlyPushPlugin.log("StoreMessageData: " + flag, CountlyPushPlugin.LogLevel.DEBUG);
49 | }
50 |
51 | Intent notificationIntent = new Intent(context, UnityPlayerActivity.class);
52 | notificationIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
53 |
54 | Uri uri = index == 0 ? message.getLink() : message.getButtons().get(index - 1).getLink();
55 | if (uri != null) {
56 | Intent i = new Intent(Intent.ACTION_VIEW, uri);
57 | i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
58 | i.putExtra(EXTRA_ACTION_INDEX, index);
59 | context.startActivity(i);
60 | CountlyPushPlugin.log("URI: " + uri.toString(), CountlyPushPlugin.LogLevel.DEBUG);
61 | } else {
62 | context.startActivity(notificationIntent);
63 | }
64 |
65 | NotificationManager notificationManager =
66 | (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
67 | notificationManager.cancel(messageId, 0);
68 |
69 | CountlyPushPlugin.log("Index: " + index, CountlyPushPlugin.LogLevel.DEBUG);
70 |
71 | try {
72 | JSONObject jsonObject = new JSONObject(message.getData());
73 | jsonObject.put("click_index", index);
74 | UnityPlayer.UnitySendMessage(CountlyPushPlugin.UNITY_ANDROID_BRIDGE, "OnNotificationClicked", jsonObject.toString());
75 | } catch (JSONException e) {
76 | e.printStackTrace();
77 | }
78 | }
79 | }
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Models/CountlyConfigModel.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using Plugins.CountlySDK.Enums;
4 | using Plugins.CountlySDK.Helpers;
5 |
6 | namespace Plugins.CountlySDK.Models
7 | {
8 | [Serializable]
9 | public class CountlyConfigModel
10 | {
11 | public string Salt;
12 | public bool EnablePost;
13 | public bool EnableTestMode;
14 | public bool EnableConsoleLogging;
15 | public TestMode NotificationMode;
16 | public readonly bool EnableManualSessionHandling;
17 | public int SessionDuration;
18 | public int EventQueueThreshold;
19 | public int StoredRequestLimit;
20 | public int TotalBreadcrumbsAllowed;
21 | public bool EnableAutomaticCrashReporting;
22 |
23 | ///
24 | /// Initializes the SDK configurations
25 | ///
26 | ///
27 | ///
28 | ///
29 | ///
30 | ///
31 | /// Session is updated after each interval passed.
32 | /// This interval is also used to process request queue. The interval must be in seconds
33 | ///
34 | public CountlyConfigModel(string salt = null, bool enablePost = false, bool enableTestMode = false, bool enableConsoleErrorLogging = false,
35 | bool ignoreSessionCooldown = false, bool enableManualSessionHandling = false,
36 | int sessionDuration = 60, int eventQueueThreshold = 100,
37 | int storedRequestLimit = 1000, int totalBreadcrumbsAllowed = 100,
38 | TestMode notificationMode = TestMode.None, bool enableAutomaticCrashReporting = true)
39 |
40 | {
41 | this.Salt = salt;
42 | EnablePost = enablePost;
43 | EnableTestMode = enableTestMode;
44 | EnableConsoleLogging = enableConsoleErrorLogging;
45 | NotificationMode = notificationMode;
46 | SessionDuration = sessionDuration;
47 | //EnableManualSessionHandling = enableManualSessionHandling;
48 | EnableManualSessionHandling = false;
49 | EventQueueThreshold = eventQueueThreshold;
50 | StoredRequestLimit = storedRequestLimit;
51 | TotalBreadcrumbsAllowed = totalBreadcrumbsAllowed;
52 | EnableAutomaticCrashReporting = enableAutomaticCrashReporting;
53 | }
54 |
55 | public override string ToString()
56 | {
57 | return $"{nameof(Salt)}: {Salt}, {nameof(EnablePost)}: {EnablePost}, {nameof(EnableConsoleLogging)}: {EnableConsoleLogging}, {nameof(NotificationMode)}: {NotificationMode}, {nameof(EnableManualSessionHandling)}: {EnableManualSessionHandling}, {nameof(SessionDuration)}: {SessionDuration}, {nameof(EventQueueThreshold)}: {EventQueueThreshold}, {nameof(StoredRequestLimit)}: {StoredRequestLimit}, {nameof(TotalBreadcrumbsAllowed)}: {TotalBreadcrumbsAllowed}, {nameof(EnableAutomaticCrashReporting)}: {EnableAutomaticCrashReporting}";
58 | }
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Persistance/Repositories/AbstractEventRepository.cs:
--------------------------------------------------------------------------------
1 | using Plugins.CountlySDK.Helpers;
2 | using Plugins.CountlySDK.Models;
3 | using Plugins.CountlySDK.Persistance.Dao;
4 | using Plugins.CountlySDK.Persistance.Entities;
5 | using Plugins.iBoxDB;
6 | using UnityEngine;
7 |
8 | namespace Plugins.CountlySDK.Persistance.Repositories
9 | {
10 | public abstract class AbstractEventRepository : Repository
11 | {
12 | private readonly SegmentDao _segmentDao;
13 | protected readonly CountlyLogHelper Log;
14 |
15 | protected AbstractEventRepository(Dao dao, SegmentDao segmentDao, CountlyLogHelper log) : base(dao, log)
16 | {
17 | Log = log;
18 | _segmentDao = segmentDao;
19 |
20 | }
21 |
22 | public override void Initialize()
23 | {
24 | base.Initialize();
25 | foreach (CountlyEventModel model in Models) {
26 | SegmentEntity segmentEntity = _segmentDao.GetByEventId(model.Id);
27 | if (segmentEntity == null) {
28 | continue;
29 | }
30 |
31 | SegmentModel segmentModel = Converter.ConvertSegmentEntityToSegmentModel(segmentEntity);
32 | @model.Segmentation = segmentModel;
33 | }
34 | }
35 |
36 | protected override CountlyEventModel ConvertEntityToModel(EventEntity entity)
37 | {
38 | return Converter.ConvertEventEntityToEventModel(entity, Log);
39 | }
40 |
41 | protected override EventEntity ConvertModelToEntity(CountlyEventModel model)
42 | {
43 | return Converter.ConvertEventModelToEventEntity(model, GenerateNewId());
44 | }
45 |
46 | public override bool Enqueue(CountlyEventModel model)
47 | {
48 | Log.Debug("[" + GetType().Name + "] Enqueue: \n" + model);
49 |
50 | bool res = base.Enqueue(model);
51 | if (!res) {
52 | return false;
53 | }
54 |
55 | SegmentModel segmentModel = model.Segmentation;
56 | if (segmentModel != null) {
57 | SegmentEntity segmentEntity = Converter.ConvertSegmentModelToSegmentEntity(segmentModel, _segmentDao.GenerateNewId());
58 | segmentEntity.EventId = model.Id;
59 | _segmentDao.Save(segmentEntity);
60 | }
61 |
62 | Log.Debug("[" + GetType().Name + "] Event repo enqueue: \n" + model + ", segment: " + segmentModel);
63 |
64 | return true;
65 | }
66 |
67 | public override CountlyEventModel Dequeue()
68 | {
69 | CountlyEventModel @event = base.Dequeue();
70 | SegmentEntity segmentEntity = _segmentDao.GetByEventId(@event.Id);
71 | if (segmentEntity != null) {
72 | SegmentModel segmentModel = Converter.ConvertSegmentEntityToSegmentModel(segmentEntity);
73 | @event.Segmentation = segmentModel;
74 | }
75 |
76 | Log.Debug("[" + GetType().Name + "] Event repo Dequeue: \n" + @event.ToString() + ", segment: " + @event.Segmentation?.ToString());
77 | return @event;
78 | }
79 |
80 | public override void Clear()
81 | {
82 | base.Clear();
83 | _segmentDao.RemoveAll();
84 | }
85 | }
86 | }
87 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/Notifications/Impls/iOs/iOsNotificationsService.cs:
--------------------------------------------------------------------------------
1 | using Plugins.CountlySDK.Helpers;
2 | using Plugins.CountlySDK.Models;
3 | using Plugins.CountlySDK.Services;
4 | using System;
5 | using System.Collections;
6 | using System.Collections.Generic;
7 | using System.Threading.Tasks;
8 | using UnityEngine;
9 |
10 | namespace Notifications.Impls.iOs
11 | {
12 | public class IOsNotificationsService : INotificationsService
13 | {
14 | private readonly CountlyLogHelper Log;
15 | private readonly Transform _countlyGameObject;
16 | private readonly Action _startCoroutine;
17 | private readonly EventCountlyService _eventCountlyService;
18 | public bool IsInitializedWithoutError { get; set; }
19 |
20 | private readonly IOSBridge _bridge;
21 | private const string BridgeName = "[iOS] Bridge";
22 |
23 | internal IOsNotificationsService(Transform countlyGameObject, CountlyConfiguration configuration, CountlyLogHelper log, Action startCoroutine, EventCountlyService eventCountlyService)
24 | {
25 | Log = log;
26 | _startCoroutine = startCoroutine;
27 | _countlyGameObject = countlyGameObject;
28 | _eventCountlyService = eventCountlyService;
29 |
30 | GameObject gameObject = new GameObject(BridgeName);
31 | gameObject.transform.parent = _countlyGameObject;
32 |
33 | _bridge = gameObject.AddComponent();
34 | _bridge.Log = log;
35 |
36 | IsInitializedWithoutError = true;
37 |
38 | }
39 |
40 | public void GetToken(Action result)
41 | {
42 | // _startCoroutine.Invoke(RequestAuthorization(result));
43 | _bridge.ListenTokenResult(result);
44 | _bridge.GetToken();
45 | }
46 |
47 | public async Task ReportPushActionAsync()
48 | {
49 | string mesageId = _bridge.MessageId;
50 | string identifier = _bridge.ButtonIndex;
51 |
52 | if (_bridge.MessageId != null) {
53 | IDictionary segment = new Dictionary()
54 | {
55 | {"b", mesageId},
56 | {"i", identifier},
57 | {"p", "i"}
58 | };
59 |
60 | Log.Debug("[IOsNotificationsService] ReportPushActionAsync key: " + CountlyEventModel.PushActionEvent + ", segments: " + segment);
61 |
62 | CountlyEventModel eventModel = new CountlyEventModel(CountlyEventModel.PushActionEvent, segment);
63 | await _eventCountlyService.RecordEventAsync(eventModel);
64 | }
65 |
66 | _bridge.MessageId = null;
67 | _bridge.ButtonIndex = null;
68 |
69 | return new CountlyResponse {
70 | IsSuccess = true,
71 | };
72 | }
73 |
74 | public void OnNotificationClicked(Action result)
75 | {
76 | Log.Debug("[IOsNotificationsService] OnNotificationClicked register");
77 |
78 | _bridge.ListenClickResult(result);
79 |
80 | }
81 |
82 | public void OnNotificationReceived(Action result)
83 | {
84 | Log.Debug("[IOsNotificationsService] OnNotificationReceived register");
85 | _bridge.ListenReceiveResult(result);
86 |
87 | }
88 | }
89 | }
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Persistance/Repositories/Repository.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using Plugins.CountlySDK.Models;
3 | using Plugins.CountlySDK.Persistance.Entities;
4 | using Plugins.iBoxDB;
5 | using UnityEngine;
6 |
7 | namespace Plugins.CountlySDK.Persistance.Repositories
8 | {
9 | public abstract class Repository where TEntity : class, IEntity, new() where TModel : IModel
10 | {
11 | private readonly Dao _dao;
12 | private readonly CountlyLogHelper Log;
13 |
14 | protected Repository(Dao dao, CountlyLogHelper log)
15 | {
16 | _dao = dao;
17 | this.Log = log;
18 | }
19 |
20 | internal Queue Models { get; } = new Queue();
21 |
22 | internal int Count => Models.Count;
23 |
24 | public virtual void Initialize()
25 | {
26 | RefreshMemoryCache();
27 | }
28 |
29 | public virtual bool Enqueue(TModel model)
30 | {
31 | Log.Verbose("[Repository] Enqueue, TModel: " + model);
32 |
33 | if (!ValidateModelBeforeEnqueue(model)) {
34 | return false;
35 | }
36 |
37 | Models.Enqueue(model);
38 | TEntity entity = ConvertModelToEntity(model);
39 | bool res = _dao.Save(entity);
40 |
41 | return res;
42 | }
43 |
44 | public virtual TModel Dequeue()
45 | {
46 | TModel model = Models.Dequeue();
47 | _dao.Remove(model.Id);
48 |
49 | Log.Verbose("[Repository] Dequeue, TModel: " + model.ToString());
50 | return model;
51 | }
52 |
53 | public virtual bool Update(TModel model)
54 | {
55 | TEntity entity = ConvertModelToEntity(model);
56 | return _dao.Update(entity);
57 | }
58 |
59 | public virtual void RefreshMemoryCache()
60 | {
61 | Models.Clear();
62 |
63 | List entities = _dao.LoadAll();
64 | foreach (TEntity entity in entities) {
65 | TModel model = ConvertEntityToModel(entity);
66 | if (!ValidateModelBeforeEnqueue(model)) {
67 | continue;
68 | }
69 |
70 | // Log.Verbose("[Repository] Loaded model: " + model.ToString());
71 |
72 | Models.Enqueue(model);
73 | }
74 | Log.Verbose("[Repository] Loaded entities of type " + typeof(TEntity).Name + " from db:" + entities.Count);
75 | }
76 |
77 | ///
78 | /// Should only be used for migration or tests
79 | ///
80 | ///
81 | ///
82 | public virtual void DeleteEntry(TModel model)
83 | {
84 | _dao.Remove(model.Id);
85 | Log.Verbose("[Repository] DeleteEntry, TModel: " + model.ToString());
86 | }
87 |
88 |
89 | public virtual void Clear()
90 | {
91 | Models.Clear();
92 | _dao.RemoveAll();
93 | }
94 |
95 | protected abstract TModel ConvertEntityToModel(TEntity entity);
96 | protected abstract TEntity ConvertModelToEntity(TModel model);
97 |
98 | protected long GenerateNewId()
99 | {
100 | return _dao.GenerateNewId();
101 | }
102 |
103 | protected abstract bool ValidateModelBeforeEnqueue(TModel model);
104 | }
105 | }
106 |
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Models/CountlyEventModel.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using Newtonsoft.Json;
4 | using Plugins.CountlySDK.Persistance;
5 |
6 | namespace Plugins.CountlySDK.Models
7 | {
8 | [Serializable]
9 | public class CountlyEventModel : IModel
10 | {
11 | ///
12 | /// Initializes a new instance of event model.
13 | ///
14 | ///
15 | ///
16 | ///
17 | ///
18 | ///
19 | public CountlyEventModel(string key, IDictionary segmentation = null, int? count = 1, double? sum = null, double? duration = null, string? eventId = null, string? pvid = null, string? cvid = null, string? peid = null)
20 | {
21 | Key = key;
22 | Count = count ?? 1;
23 | if (segmentation != null) {
24 | Segmentation = new SegmentModel(segmentation);
25 | }
26 | Duration = duration;
27 | Sum = sum;
28 |
29 | TimeMetricModel timeModel = TimeMetricModel.GetTimeZoneInfoForRequest();
30 |
31 | Hour = timeModel.Hour;
32 | DayOfWeek = timeModel.DayOfWeek;
33 | Timestamp = timeModel.Timestamp;
34 |
35 | EventID = eventId;
36 | PreviousEventID = peid;
37 | PreviousViewID = pvid;
38 | CurrentViewID = cvid;
39 | }
40 |
41 | public CountlyEventModel()
42 | {
43 | }
44 |
45 | [JsonIgnore]
46 | public long Id { get; set; }
47 | [JsonProperty("key")] public string Key { get; set; }
48 |
49 | [JsonProperty("count")] public int? Count { get; set; }
50 |
51 | [JsonProperty("sum")] public double? Sum { get; set; }
52 |
53 | [JsonProperty("dur")] public double? Duration { get; set; }
54 |
55 | [JsonProperty("segmentation")] public SegmentModel Segmentation { get; set; }
56 |
57 | [JsonProperty("timestamp")] public long Timestamp { get; set; }
58 |
59 | [JsonProperty("hour")] public int Hour { get; set; }
60 |
61 | [JsonProperty("dow")] public int DayOfWeek { get; set; }
62 |
63 | [JsonProperty("id")] public string? EventID { get; set; }
64 |
65 | [JsonProperty("pvid")] public string? PreviousViewID { get; set; }
66 |
67 | [JsonProperty("cvid")] public string? CurrentViewID { get; set; }
68 |
69 | [JsonProperty("peid")] public string? PreviousEventID { get; set; }
70 |
71 | #region Reserved Event Names
72 | [JsonIgnore] public const string NPSEvent = "[CLY]_nps";
73 |
74 | [JsonIgnore] public const string ViewEvent = "[CLY]_view";
75 |
76 | [JsonIgnore] public const string SurveyEvent = "[CLY]_survey";
77 |
78 | [JsonIgnore] public const string ViewActionEvent = "[CLY]_action";
79 |
80 | [JsonIgnore] public const string StarRatingEvent = "[CLY]_star_rating";
81 |
82 | [JsonIgnore] public const string PushActionEvent = "[CLY]_push_action";
83 |
84 | [JsonIgnore] public const string OrientationEvent = "[CLY]_orientation";
85 | #endregion
86 |
87 | public override string ToString()
88 | {
89 | return $"{nameof(Id)}: {Id}, {nameof(Key)}: {Key}, {nameof(Count)}: {Count}, {nameof(Sum)}: {Sum}, {nameof(Duration)}: {Duration}, {nameof(Segmentation)}: {Segmentation}, {nameof(Timestamp)}: {Timestamp}, {nameof(Hour)}: {Hour}, {nameof(DayOfWeek)}: {DayOfWeek}, {nameof(EventID)}: {EventID}, {nameof(PreviousViewID)}: {PreviousViewID}, {nameof(CurrentViewID)}: {CurrentViewID}, {nameof(PreviousEventID)}: {PreviousEventID},";
90 | }
91 | }
92 | }
--------------------------------------------------------------------------------
/Assets/Countly/Plugins/CountlySDK/Services/StarRatingCountlyService.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Threading.Tasks;
4 | using Plugins.CountlySDK.Enums;
5 | using Plugins.CountlySDK.Models;
6 |
7 | namespace Plugins.CountlySDK.Services
8 | {
9 | public class StarRatingCountlyService : AbstractBaseService
10 | {
11 | internal readonly EventCountlyService _eventCountlyService;
12 |
13 | internal StarRatingCountlyService(CountlyConfiguration configuration, CountlyLogHelper logHelper, ConsentCountlyService consentService, EventCountlyService eventCountlyService) : base(configuration, logHelper, consentService)
14 | {
15 | Log.Debug("[StarRatingCountlyService] Initializing.");
16 |
17 | _eventCountlyService = eventCountlyService;
18 | }
19 |
20 | #region override Methods
21 | #endregion
22 |
23 |
24 | ///
25 | /// Sends app rating to the server.
26 | ///
27 | /// name of platform
28 | /// the current version of the app
29 | /// value from 1 to 5 that will be set as the rating value
30 | ///
31 | public async Task ReportStarRatingAsync(string platform, string appVersion, int rating)
32 | {
33 | lock (LockObj) {
34 | Log.Info("[StarRatingCountlyService] ReportStarRatingAsync");
35 |
36 | if (!_consentService.CheckConsentInternal(Consents.StarRating)) {
37 | return;
38 | }
39 |
40 | if (string.IsNullOrEmpty(platform) || string.IsNullOrWhiteSpace(platform)) {
41 | Log.Warning("[StarRatingCountlyService] ReportStarRatingAsync : The platform name'" + platform + "'isn't valid.");
42 | return;
43 | }
44 |
45 | if (string.IsNullOrEmpty(appVersion) || string.IsNullOrWhiteSpace(appVersion)) {
46 | Log.Warning("[StarRatingCountlyService] ReportStarRatingAsync : The appVersion '" + appVersion + "'isn't valid.");
47 | return;
48 | }
49 |
50 | if (rating < 1 || rating > 5) {
51 | Log.Warning("[StarRatingCountlyService] ReportStarRatingAsync : The rating value'" + rating + "'isn't valid.");
52 | return;
53 | }
54 |
55 | StarRatingSegment segment =
56 | new StarRatingSegment {
57 | Platform = platform,
58 | AppVersion = appVersion,
59 | Rating = rating,
60 | };
61 |
62 | CountlyEventModel eventModel = new CountlyEventModel(CountlyEventModel.StarRatingEvent, segment.ToDictionary(), null, null, null);
63 | _ = _eventCountlyService.RecordEventAsync(eventModel);
64 | }
65 |
66 | await Task.CompletedTask;
67 | }
68 |
69 |
70 | ///
71 | /// Custom Segmentation for Star Rating event.
72 | ///
73 | [Serializable]
74 | struct StarRatingSegment
75 | {
76 | public string Platform { get; set; }
77 | public string AppVersion { get; set; }
78 | public int Rating { get; set; }
79 |
80 | public IDictionary ToDictionary()
81 | {
82 | return new Dictionary()
83 | {
84 | {"platform", Platform},
85 | {"app_version", AppVersion},
86 | {"rating", Rating},
87 | };
88 | }
89 |
90 | }
91 |
92 | }
93 | }
94 |
--------------------------------------------------------------------------------
/Assets/Countly/Example/Scripts/CustomEvents.cs:
--------------------------------------------------------------------------------
1 | using Notifications;
2 | using Plugins.CountlySDK;
3 | using Plugins.CountlySDK.Enums;
4 | using Plugins.CountlySDK.Models;
5 | using System;
6 | using System.Collections.Generic;
7 | using System.Threading;
8 | using System.Threading.Tasks;
9 | using UnityEngine;
10 | using UnityEngine.SceneManagement;
11 |
12 | public class CustomEvents : MonoBehaviour
13 | {
14 | public async void BasicEvent()
15 | {
16 | await Countly.Instance.Events.RecordEventAsync("Sample App’ event");
17 | }
18 |
19 | public async void EventWithSum()
20 | {
21 | await Countly.Instance.Events.RecordEventAsync("Event With Sum", sum: 23);
22 | }
23 |
24 | public async void EventWithSegmentation()
25 | {
26 |
27 | Dictionary segment = new Dictionary
28 | {
29 | { "Class", "Wizard"},
30 | { "Level", "10"}
31 | };
32 |
33 | await Countly.Instance.Events.RecordEventAsync("Event With Segmentation", segmentation: segment);
34 | }
35 |
36 | public async void EventWithDuration()
37 | {
38 | await Countly.Instance.Events.RecordEventAsync("Event With Duration", duration: 10);
39 | }
40 |
41 | public async void EventWithSegmentationCountSumDuration()
42 | {
43 | Dictionary segments = new Dictionary{
44 | { "Application", "Tiktok"},
45 | { "Country", "Japan"}
46 | };
47 |
48 | await Countly.Instance.Events.RecordEventAsync("Event With Sum, Duration, Count And Segmentation", segmentation: segments, sum: 23, count: 2, duration: 10);
49 | }
50 |
51 | public async void EventWithSumAndSegmentation()
52 | {
53 | Dictionary segments = new Dictionary{
54 | { "Monthly Visit", "30"},
55 | { "Name", "John Doe"}
56 | };
57 |
58 | await Countly.Instance.Events.RecordEventAsync("Event With Sum And Segmentation", segmentation: segments, sum: 23);
59 |
60 | }
61 |
62 | public async void EventWithSegmentationSumAndCount()
63 | {
64 | Dictionary segments = new Dictionary{
65 | { "Blood Type", "B-"},
66 | { "GPA", "3.2"}
67 | };
68 |
69 | await Countly.Instance.Events.RecordEventAsync("Event With Sum And Segmentation", segmentation: segments, sum: 23, count: 5);
70 |
71 | }
72 |
73 | public async void EventWithInvalidSegmentation()
74 | {
75 | int moles = 1; //valid data type
76 | string name = "foo";// valid data type
77 | bool isMale = true; // valid data type
78 | float amount = 10000.75f; //valid data type
79 | double totalAmount = 100000.76363;
80 | long currentMillis = DateTime.UtcNow.Millisecond; // invalid data type
81 | DateTime date = DateTime.UtcNow; // invalid data type
82 |
83 | Dictionary segment = new Dictionary
84 | {
85 | { "name", name},
86 | { "moles", moles},
87 | { "male", isMale},
88 | { "amount", amount},
89 | { "total amount", totalAmount},
90 | { "dob", date},
91 | { "Current Millis", currentMillis},
92 | };
93 |
94 | await Countly.Instance.Events.RecordEventAsync("Event With Invalid Segmentation", segmentation: segment);
95 | }
96 |
97 | public void StartTimedEvent()
98 | {
99 | Countly.Instance.Events.StartEvent("Timed Event");
100 | }
101 |
102 | public void EndTimedEvent()
103 | {
104 | Countly.Instance.Events.EndEvent("Timed Event");
105 | }
106 |
107 | public void CancelTimedEvent()
108 | {
109 | Countly.Instance.Events.CancelEvent("Timed Event");
110 | }
111 | }
112 |
--------------------------------------------------------------------------------