// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. #if UNITY_ANDROID && !UNITY_EDITOR using System; using System.Collections.Generic; using Microsoft.AppCenter.Unity.Internal.Utility; using UnityEngine; namespace Microsoft.AppCenter.Unity.Analytics.Internal { class AnalyticsInternal { private static AndroidJavaClass _analytics = new AndroidJavaClass("com.microsoft.appcenter.analytics.Analytics"); public static void PrepareEventHandlers() { AppCenterBehavior.InitializedAppCenterAndServices += PostInitialize; } private static void PostInitialize() { var instance = _analytics.CallStatic("getInstance"); AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject activity = unityPlayer.GetStatic("currentActivity"); instance.Call("onActivityResumed", activity); } public static void AddNativeType(List nativeTypes) { nativeTypes.Add(AndroidJNI.FindClass("com/microsoft/appcenter/analytics/Analytics")); } public static void TrackEvent(string eventName) { _analytics.CallStatic("trackEvent", eventName); } public static void TrackEvent(string eventName, int flags) { _analytics.CallStatic("trackEvent", eventName, null, flags); } public static void TrackEventWithProperties(string eventName, IDictionary properties) { var androidProperties = JavaStringMapHelper.ConvertToJava(properties); _analytics.CallStatic("trackEvent", eventName, androidProperties); } public static void TrackEventWithProperties(string eventName, EventProperties properties) { _analytics.CallStatic("trackEvent", eventName, properties.GetRawObject()); } public static void TrackEventWithProperties(string eventName, IDictionary properties, int flags) { var androidProperties = JavaStringMapHelper.ConvertToJava(properties); _analytics.CallStatic("trackEvent", eventName, androidProperties, flags); } public static void TrackEventWithProperties(string eventName, EventProperties properties, int flags) { _analytics.CallStatic("trackEvent", eventName, properties.GetRawObject(), flags); } public static AppCenterTask SetEnabledAsync(bool isEnabled) { var future = _analytics.CallStatic("setEnabled", isEnabled); return new AppCenterTask(future); } public static AppCenterTask IsEnabledAsync() { var future = _analytics.CallStatic("isEnabled"); return new AppCenterTask(future); } public static AndroidJavaObject GetTransmissionTarget(string transmissionTargetToken, out bool success) { var target = _analytics.CallStatic("getTransmissionTarget", transmissionTargetToken); success = target != null; return target; } public static void Pause() { _analytics.CallStatic("pause"); } public static void Resume() { _analytics.CallStatic("resume"); } } } #endif