update: 优化 iOS Noti 打点逻辑

--story=1020629 --user=yufei.hu 【中台】【SDK】加入消息弹框管理,中台 noti_perm 打点逻辑优化 https://www.tapd.cn/33527076/s/1152197

Signed-off-by: huyufei <yufei.hu@castbox.fm>
main
胡宇飞 2024-06-21 16:18:18 +08:00
parent cfe81b5583
commit 80e38bf85d
3 changed files with 40 additions and 17 deletions

View File

@ -165,7 +165,6 @@ namespace Guru.Notification
else else
{ {
// SDK 33 以上,请求弹窗 // SDK 33 以上,请求弹窗
bool hasPermission = Permission.HasUserAuthorizedPermission(PERMISSION_POST_NOTIFICATION); bool hasPermission = Permission.HasUserAuthorizedPermission(PERMISSION_POST_NOTIFICATION);
if (hasPermission) if (hasPermission)
{ {
@ -173,7 +172,7 @@ namespace Guru.Notification
callback?.Invoke(STATUS_GRANTED); callback?.Invoke(STATUS_GRANTED);
return; return;
} }
Debug.Log($"[SDK][Noti] --- #4 SDK {sdkInt} :: Ask Post Permission"); Debug.Log($"[SDK][Noti] --- #3 SDK {sdkInt} :: Ask Post Permission");
Permission.RequestUserPermission(PERMISSION_POST_NOTIFICATION, SetupPermissionCallbacks()); Permission.RequestUserPermission(PERMISSION_POST_NOTIFICATION, SetupPermissionCallbacks());
} }
}); });

View File

@ -19,6 +19,11 @@ namespace Guru.Notification
private static bool _initOnce; private static bool _initOnce;
private static int _waitSeconds = 30; private static int _waitSeconds = 30;
private string SavedNotiPermStatus
{
get => PlayerPrefs.GetString(nameof(SavedNotiPermStatus), "");
set => PlayerPrefs.SetString(nameof(SavedNotiPermStatus), value);
}
private string _notiStatus; private string _notiStatus;
@ -27,8 +32,11 @@ namespace Guru.Notification
{ {
if (_initOnce) return; if (_initOnce) return;
_initOnce = true; _initOnce = true;
_notiStatus = SavedNotiPermStatus;
if (string.IsNullOrEmpty(_notiStatus))
_notiStatus = STATUS_NOT_DETERMINED;
_notiStatus = STATUS_NOT_DETERMINED;
#if UNITY_IOS #if UNITY_IOS
InitPlugins(); InitPlugins();
#endif #endif
@ -71,28 +79,36 @@ namespace Guru.Notification
/// </summary> /// </summary>
private void UpdateStatus() private void UpdateStatus()
{ {
var status = iOSNotificationCenter.GetNotificationSettings().AuthorizationStatus; string status = STATUS_NOT_DETERMINED;
switch (status) var authorizationStatus = iOSNotificationCenter.GetNotificationSettings().AuthorizationStatus;
switch (authorizationStatus)
{ {
case AuthorizationStatus.Authorized: case AuthorizationStatus.Authorized:
_notiStatus = STATUS_GRANTED; status = STATUS_GRANTED;
break; break;
case AuthorizationStatus.Denied: case AuthorizationStatus.Denied:
_notiStatus = STATUS_DENIDED; status = STATUS_DENIDED;
break; break;
case AuthorizationStatus.NotDetermined: case AuthorizationStatus.NotDetermined:
_notiStatus = STATUS_NOT_DETERMINED; status = STATUS_NOT_DETERMINED;
break; break;
case AuthorizationStatus.Provisional: case AuthorizationStatus.Provisional:
_notiStatus = STATUS_PROVISIONAL; status = STATUS_PROVISIONAL;
break; break;
default: default:
Debug.Log($"[SDK][Noti][iOS] --- Unmarked AuthorizationStatus: {status}"); Debug.Log($"[SDK][Noti][iOS] --- Unmarked AuthorizationStatus: {status}");
break; break;
} }
SetGrantStatus(status);
} }
private void SetGrantStatus(string status)
{
_notiStatus = status;
SavedNotiPermStatus = status;
}
/// <summary> /// <summary>
/// 请求 IOS 的推送 /// 请求 IOS 的推送
/// </summary> /// </summary>

View File

@ -17,8 +17,16 @@ namespace Guru.Notification
// 初始化标志位 // 初始化标志位
private static bool _initOnce; private static bool _initOnce;
private static string DEFAULT_USER_STATUS = "not_determined"; private static string DefaultPermissionStatus
{
get
{
#if UNITY_IOS
return "not_determined";
#endif
return "denied";
}
}
#region 初始化 #region 初始化
@ -77,8 +85,8 @@ namespace Guru.Notification
Agent.RequestPermission(callback); Agent.RequestPermission(callback);
return; return;
} }
Debug.LogError($"[SDK][Noti] --- Agent is missing, return default status: {DEFAULT_USER_STATUS}"); Debug.LogError($"[SDK][Noti] --- Agent is missing, return default status: {DefaultPermissionStatus}");
callback?.Invoke(DEFAULT_USER_STATUS); callback?.Invoke(DefaultPermissionStatus);
} }
public static bool IsPermissionGranted() public static bool IsPermissionGranted()
@ -92,8 +100,8 @@ namespace Guru.Notification
if(Agent != null) return Agent.GetStatus(); if(Agent != null) return Agent.GetStatus();
Debug.LogError($"[SDK][Noti] --- Agent is missing, return default status: {DEFAULT_USER_STATUS}"); Debug.LogError($"[SDK][Noti] --- Agent is missing, return default status: {DefaultPermissionStatus}");
return DEFAULT_USER_STATUS; return DefaultPermissionStatus;
} }
#endregion #endregion