// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. #if UNITY_IOS && !UNITY_EDITOR using System; using System.Linq; using System.Collections.Generic; using System.Runtime.InteropServices; namespace Microsoft.AppCenter.Unity.Analytics.Internal { class AnalyticsInternal { public static void PrepareEventHandlers() { } public static void AddNativeType(List nativeTypes) { nativeTypes.Add(appcenter_unity_analytics_get_type()); } public static void TrackEvent(string eventName) { appcenter_unity_analytics_track_event(eventName, (int)Flags.PersistenceNormal); } public static void TrackEvent(string eventName, int flags) { appcenter_unity_analytics_track_event(eventName, flags); } public static void TrackEventWithProperties(string eventName, EventProperties properties) { appcenter_unity_analytics_track_event_with_typed_properties(eventName, properties.GetRawObject(), (int)Flags.PersistenceNormal); } public static void TrackEventWithProperties(string eventName, IDictionary properties) { appcenter_unity_analytics_track_event_with_properties(eventName, properties.Keys.ToArray(), properties.Values.ToArray(), properties.Count, (int)Flags.PersistenceNormal); } public static void TrackEventWithProperties(string eventName, EventProperties properties, int flags) { appcenter_unity_analytics_track_event_with_typed_properties(eventName, properties.GetRawObject(), flags); } public static void TrackEventWithProperties(string eventName, IDictionary properties, int flags) { appcenter_unity_analytics_track_event_with_properties(eventName, properties.Keys.ToArray(), properties.Values.ToArray(), properties.Count, flags); } public static AppCenterTask SetEnabledAsync(bool isEnabled) { appcenter_unity_analytics_set_enabled(isEnabled); return AppCenterTask.FromCompleted(); } public static AppCenterTask IsEnabledAsync() { var isEnabled = appcenter_unity_analytics_is_enabled(); return AppCenterTask.FromCompleted(isEnabled); } public static IntPtr GetTransmissionTarget(string transmissionTargetToken, out bool success) { var target = appcenter_unity_analytics_transmission_target_for_token(transmissionTargetToken); success = target != IntPtr.Zero; return target; } public static void Pause() { appcenter_unity_analytics_pause(); } public static void Resume() { appcenter_unity_analytics_resume(); } #region External [DllImport("__Internal")] private static extern IntPtr appcenter_unity_analytics_get_type(); [DllImport("__Internal")] private static extern void appcenter_unity_analytics_track_event(string eventName, int flags); [DllImport("__Internal")] private static extern void appcenter_unity_analytics_track_event_with_properties(string eventName, string[] keys, string[] values, int count, int flags); [DllImport("__Internal")] private static extern void appcenter_unity_analytics_track_event_with_typed_properties(string eventName, IntPtr properties, int flags); [DllImport("__Internal")] private static extern void appcenter_unity_analytics_set_enabled(bool isEnabled); [DllImport("__Internal")] private static extern bool appcenter_unity_analytics_is_enabled(); [DllImport("__Internal")] private static extern IntPtr appcenter_unity_analytics_transmission_target_for_token(string transmissionTargetToken); [DllImport("__Internal")] private static extern void appcenter_unity_analytics_pause(); [DllImport("__Internal")] private static extern void appcenter_unity_analytics_resume(); #endregion } } #endif