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);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |