update: 优化 Push 推送请求

Signed-off-by: huyufei <yufei.hu@castbox.fm>
胡宇飞 2024-09-09 09:53:44 +08:00
parent 4a77e9afb9
commit 7237dbfcae
1 changed files with 15 additions and 7 deletions

View File

@ -17,6 +17,7 @@ namespace Guru
// public static bool? IsInitMessage; // public static bool? IsInitMessage;
private static bool _isAutoFetchFcmToken = true; private static bool _isAutoFetchFcmToken = true;
private static bool _isFetchOnce = false; private static bool _isFetchOnce = false;
// private static bool _isOnFetching = false;
public static void SetAutoFetchFcmToken(bool value) public static void SetAutoFetchFcmToken(bool value)
{ {
@ -25,6 +26,13 @@ namespace Guru
private static void InitializeMessage() private static void InitializeMessage()
{ {
// 初始化回调挂载
FirebaseMessaging.TokenReceived -= OnTokenReceived;
FirebaseMessaging.MessageReceived -= OnMessageReceived;
FirebaseMessaging.TokenReceived += OnTokenReceived;
FirebaseMessaging.MessageReceived += OnMessageReceived;
if (_isAutoFetchFcmToken) if (_isAutoFetchFcmToken)
{ {
StartFetchFcmToken(); StartFetchFcmToken();
@ -36,8 +44,6 @@ namespace Guru
if (_isFetchOnce) return; if (_isFetchOnce) return;
_isFetchOnce = true; _isFetchOnce = true;
FirebaseMessaging.TokenReceived += OnTokenReceived;
FirebaseMessaging.MessageReceived += OnMessageReceived;
DelayGetFCMToken(0); DelayGetFCMToken(0);
} }
@ -46,11 +52,12 @@ namespace Guru
/// </summary> /// </summary>
private static void GetFCMTokenAsync() private static void GetFCMTokenAsync()
{ {
Debug.Log($"[SDK][Firebase] --- Start GetTokenAsync ---"); Debug.Log($"{LOG_TAG}[SDK]--- Start GetTokenAsync ---");
FirebaseMessaging.GetTokenAsync().ContinueWithOnMainThread(task => FirebaseMessaging.GetTokenAsync().ContinueWithOnMainThread(task =>
{ {
if (!task.IsCompletedSuccessfully) if (task.IsCanceled || task.IsFaulted)
{ {
// task 获取失败
DelayGetFCMToken(_retryTokenDelay); DelayGetFCMToken(_retryTokenDelay);
return; return;
} }
@ -59,12 +66,13 @@ namespace Guru
if (string.IsNullOrEmpty(token) if (string.IsNullOrEmpty(token)
&& string.IsNullOrEmpty(IPMConfig.IPM_PUSH_TOKEN)) && string.IsNullOrEmpty(IPMConfig.IPM_PUSH_TOKEN))
{ {
// 拉取到了空值, 且无缓存值
DelayGetFCMToken(_retryTokenDelay); DelayGetFCMToken(_retryTokenDelay);
return; return;
} }
Debug.Log($"[Firebase] --- GetPushToken:{token}"); Debug.Log($"{LOG_TAG}[SDK] --- GetPushToken:{token}");
if (!string.IsNullOrEmpty(token)) if (!string.IsNullOrEmpty(token))
{ {
IPMConfig.IPM_PUSH_TOKEN = token; IPMConfig.IPM_PUSH_TOKEN = token;
@ -73,7 +81,7 @@ namespace Guru
}); });
} }
private static async void DelayGetFCMToken(int seconds = 10) private static async void DelayGetFCMToken(int seconds = 2)
{ {
await Task.Delay(seconds * 1000); // 等待 10s await Task.Delay(seconds * 1000); // 等待 10s
GetFCMTokenAsync(); GetFCMTokenAsync();
@ -134,7 +142,7 @@ namespace Guru
.SetFailCallBack(() => .SetFailCallBack(() =>
{ {
Debug.Log($"{LOG_TAG} --- UploadDeviceInfo:failed"); Debug.Log($"{LOG_TAG} --- UploadDeviceInfo:failed");
double retryDelay = Math.Pow(2, _retryDeviceCount); double retryDelay = Math.Pow(2, Mathf.Min(_retryDeviceCount, 6));
_retryDeviceCount++; _retryDeviceCount++;
CoroutineHelper.Instance.StartDelayed((float) retryDelay, UploadDeviceInfo); CoroutineHelper.Instance.StartDelayed((float) retryDelay, UploadDeviceInfo);
}).Send(); }).Send();