58 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C#
		
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C#
		
	
	
 | 
						|
 | 
						|
namespace Guru.Notification
 | 
						|
{
 | 
						|
    
 | 
						|
    using System;
 | 
						|
    using System.Threading.Tasks;
 | 
						|
    using UnityEngine;
 | 
						|
    
 | 
						|
    /// <summary>
 | 
						|
    /// For Editor to use Notifications
 | 
						|
    /// </summary>
 | 
						|
    public class NotificationAgentStub: INotificationAgent
 | 
						|
    {
 | 
						|
        private const string STATUS_GRANTED = "granted";
 | 
						|
        private const string STATUS_DENIDED = "denied";
 | 
						|
        private const string STATUS_NOT_DETERMINED = "not_determined";
 | 
						|
        
 | 
						|
        private Action<string> _onPermissionCallback;
 | 
						|
        private float _delaySeconds = 1.0f;
 | 
						|
 | 
						|
        private string EditorGrantedStatus
 | 
						|
        {
 | 
						|
            get => PlayerPrefs.GetString(nameof(EditorGrantedStatus), STATUS_NOT_DETERMINED);
 | 
						|
            set => PlayerPrefs.SetString(nameof(EditorGrantedStatus), value);
 | 
						|
        }
 | 
						|
        
 | 
						|
        public void Init()
 | 
						|
        {
 | 
						|
            Debug.Log($"[SDK][Noti][EDT] --- NotificationAgentStub Init: {EditorGrantedStatus}");
 | 
						|
        }
 | 
						|
 | 
						|
        public string GetStatus() => EditorGrantedStatus;
 | 
						|
 | 
						|
        public bool IsAllowed()
 | 
						|
        {
 | 
						|
            return EditorGrantedStatus == STATUS_GRANTED;
 | 
						|
        }
 | 
						|
 | 
						|
        public void RequestPermission(Action<string> callback = null)
 | 
						|
        {
 | 
						|
            Debug.Log($"[SDK][Noti][EDT] --- RequestPermission ---");
 | 
						|
            _onPermissionCallback = callback;
 | 
						|
            DelayCallPermissionHandle();
 | 
						|
        }
 | 
						|
        
 | 
						|
        /// <summary>
 | 
						|
        /// 延迟模拟回调
 | 
						|
        /// </summary>
 | 
						|
        private async void DelayCallPermissionHandle()
 | 
						|
        {
 | 
						|
            await Task.Delay((int)(1000 * _delaySeconds));
 | 
						|
            EditorGrantedStatus = STATUS_GRANTED;
 | 
						|
            _onPermissionCallback?.Invoke(EditorGrantedStatus);
 | 
						|
        }
 | 
						|
 | 
						|
    }
 | 
						|
} |