├── 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 | 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 | 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 | --------------------------------------------------------------------------------