ManagerClient.cs 2.0 KB
#if UNITY_IOS
using System;
using AntiAddictionSDK.Common;
using AntiAddictionSDK.Api;
using System.Runtime.InteropServices;
using UnityEngine;

namespace AntiAddictionSDK.iOS
{
    public class ManagerClient : IAntiAddictionClient
    {
        private IntPtr managerPtr;
        private IntPtr managerClientPtr;

        internal delegate void ZAASDKCompletedCallback(IntPtr managerClient);
        public event EventHandler<EventArgs> ZAASDKCompleted;

        public ManagerClient()
        {
            managerClientPtr = (IntPtr)GCHandle.Alloc(this);
            managerPtr = Externs.AACreateManager(managerClientPtr);

            Externs.AASetManagerCallbacks(
                managerPtr,
                sdkCompletedCallback
            );
        }

        private IntPtr ManagerPtr
        {
            get
            {
                return ManagerPtr;
            }
            set
            {
                Externs.AARelease(ManagerPtr);
                ManagerPtr = value;
            }
        }

       
        public int IsAuthenticated()
        {
            return Externs.getUserAuthenticationStatus(managerPtr);
        }

        public int AgeGroupOfCurrentUser() 
        {
            return Externs.getUserAgeGroup(managerPtr);
        }

        public int LeftTimeOfCurrentUser()
        {
            return Externs.checkLeftTimeOfCurrentUser(managerPtr);
        }

        [MonoPInvokeCallback(typeof(ZAASDKCompletedCallback))]
        private static void sdkCompletedCallback(IntPtr managerClient)
        {
            ManagerClient client = IntPtrToManagerClient(managerClient);
            if (client.ZAASDKCompleted != null)
            {
                client.ZAASDKCompleted(client, EventArgs.Empty);
            }
        }

        private static ManagerClient IntPtrToManagerClient(IntPtr managerClient)
        {
            GCHandle handle = (GCHandle)managerClient;

            return handle.Target as ManagerClient;
        }

    }
}
#endif