112 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C#
		
	
	
			
		
		
	
	
			112 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C#
		
	
	
namespace Guru.Notification
 | 
						|
{
 | 
						|
    using UnityEngine;
 | 
						|
    using System;
 | 
						|
    
 | 
						|
    
 | 
						|
    
 | 
						|
    /// <summary>
 | 
						|
    /// 消息管理器
 | 
						|
    /// </summary>
 | 
						|
    public class NotificationService
 | 
						|
    {
 | 
						|
        // 服务版本号
 | 
						|
        public const string Version = "0.0.1";
 | 
						|
 | 
						|
 | 
						|
        // 初始化标志位
 | 
						|
        private static bool _initOnce;
 | 
						|
 | 
						|
        private static string DefaultPermissionStatus
 | 
						|
        {
 | 
						|
            get
 | 
						|
            {
 | 
						|
#if UNITY_IOS
 | 
						|
                return "not_determined";
 | 
						|
#endif
 | 
						|
                return "denied";
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        #region 初始化
 | 
						|
 | 
						|
        private static INotificationAgent _agent;
 | 
						|
 | 
						|
        internal static INotificationAgent Agent
 | 
						|
        {
 | 
						|
            get
 | 
						|
            {
 | 
						|
                if (_agent == null)
 | 
						|
                {
 | 
						|
                    _agent = GetAgent();
 | 
						|
                }
 | 
						|
                return _agent;
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        private static INotificationAgent GetAgent()
 | 
						|
        {
 | 
						|
#if UNITY_EDITOR
 | 
						|
            return new NotificationAgentStub();
 | 
						|
#elif UNITY_ANDROID
 | 
						|
            return new NotificationAgentAndroid();
 | 
						|
#elif UNITY_IOS
 | 
						|
            return new NotificationAgentIOS();
 | 
						|
#endif
 | 
						|
            return null;
 | 
						|
        }
 | 
						|
        
 | 
						|
        /// <summary>
 | 
						|
        /// 初始化
 | 
						|
        /// </summary>
 | 
						|
        public static void Initialize()
 | 
						|
        {
 | 
						|
            if (_initOnce) return;
 | 
						|
            _initOnce = true;
 | 
						|
            Agent?.Init(); // 初始化代理
 | 
						|
        }
 | 
						|
        
 | 
						|
        
 | 
						|
        
 | 
						|
        #endregion
 | 
						|
 | 
						|
 | 
						|
 | 
						|
        #region 接口
 | 
						|
        
 | 
						|
        /// <summary>
 | 
						|
        /// 拉起 Noti 请求
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="callback"></param>
 | 
						|
        public static void RequestPermission(Action<string> callback = null)
 | 
						|
        {
 | 
						|
            if (Agent != null)
 | 
						|
            {
 | 
						|
                Agent.RequestPermission(callback);
 | 
						|
                return;
 | 
						|
            }
 | 
						|
            Debug.LogError($"[SDK][Noti] --- Agent is missing, return default status: {DefaultPermissionStatus}");
 | 
						|
            callback?.Invoke(DefaultPermissionStatus);
 | 
						|
        }
 | 
						|
        
 | 
						|
        public static bool IsPermissionGranted()
 | 
						|
        {
 | 
						|
            return Agent?.IsAllowed() ?? false;
 | 
						|
        }
 | 
						|
 | 
						|
        public static string GetStatus()
 | 
						|
        {
 | 
						|
            if(!_initOnce) Initialize();
 | 
						|
            
 | 
						|
            if(Agent != null) return Agent.GetStatus();
 | 
						|
            
 | 
						|
            Debug.LogError($"[SDK][Noti] --- Agent is missing, return default status: {DefaultPermissionStatus}");
 | 
						|
            return DefaultPermissionStatus;
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
        
 | 
						|
 | 
						|
 | 
						|
    }
 | 
						|
} |