From cb6bc4e794b77affdbc3d811fd0484a73633f763 Mon Sep 17 00:00:00 2001 From: huyufei Date: Wed, 4 Sep 2024 16:31:58 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=9B=B4=E6=96=B0=20PushToken=20?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E9=80=BB=E8=BE=91=EF=BC=8C=20=E9=80=82?= =?UTF-8?q?=E9=85=8D=E6=96=B0=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --bug=1030040 --user=yufei.hu 【Always】新老用户都收不到PUSH https://www.tapd.cn/35322409/s/1169863 Signed-off-by: huyufei --- .../Runtime/Firebase/FirebaseUtil.Message.cs | 57 +++++++++++++++++-- 1 file changed, 53 insertions(+), 4 deletions(-) diff --git a/Runtime/GuruCore/Runtime/Firebase/FirebaseUtil.Message.cs b/Runtime/GuruCore/Runtime/Firebase/FirebaseUtil.Message.cs index 68e28a7..28da19c 100644 --- a/Runtime/GuruCore/Runtime/Firebase/FirebaseUtil.Message.cs +++ b/Runtime/GuruCore/Runtime/Firebase/FirebaseUtil.Message.cs @@ -1,5 +1,8 @@ +using System.Threading.Tasks; +using Firebase.Extensions; + namespace Guru { using System; @@ -34,27 +37,72 @@ namespace Guru FirebaseMessaging.TokenReceived += OnTokenReceived; FirebaseMessaging.MessageReceived += OnMessageReceived; - GetFCMToken(); + + DelayGetFCMToken(0); } - private static void GetFCMToken() + /// + /// 异步获取 FCM Token + /// + private static void GetFCMTokenAsync() + { + Debug.Log($"[Firebase] --- Start GetTokenAsync ---"); + FirebaseMessaging.GetTokenAsync().ContinueWithOnMainThread(task => + { + if (!task.IsCompletedSuccessfully) + { + DelayGetFCMToken(10); + return; + } + + var token = task.Result; + if (string.IsNullOrEmpty(token)) + { + DelayGetFCMToken(10); + return; + } + + + Debug.Log($"[Firebase] --- GetPushToken:{token}"); + IPMConfig.IPM_PUSH_TOKEN = token; + IPMConfig.IS_UPLOAD_DEVICE_SUCCESS = true; + + UploadDeviceInfo(); + }); + } + + private static async void DelayGetFCMToken(int seconds = 10) + { + await Task.Delay(seconds * 1000); // 等待 10s + GetFCMTokenAsync(); + } + + + //-------- Upload DeviceInfo ----------- + + + /* + private static void GetFCMToken() { CoroutineHelper.Instance.StartCoroutine(CoroutineGetFCMToken()); } private static IEnumerator CoroutineGetFCMToken() { + Debug.Log($"[Firebase] --- Start GetTokenAsync ---"); + var task = FirebaseMessaging.GetTokenAsync(); while (!task.IsCompleted) yield return new WaitForEndOfFrame(); if (task.IsFaulted || task.IsCanceled) { + Log.I(LOG_TAG, $"--- GetTokenAsync Token Failed! {task.Status}"); CoroutineHelper.Instance.StartDelayed(10, GetFCMToken); } else { - Log.I(LOG_TAG, "GetTokenAsync Token: " + task.Result); + Log.I(LOG_TAG, "--- GetTokenAsync Token: " + task.Result); if (IPMConfig.IPM_PUSH_TOKEN != task.Result || !IPMConfig.IS_UPLOAD_DEVICE_SUCCESS) { IPMConfig.IPM_PUSH_TOKEN = task.Result; @@ -62,6 +110,7 @@ namespace Guru } } } + */ private static void UploadDeviceInfo() { @@ -73,7 +122,7 @@ namespace Guru } else { - Log.I(LOG_TAG, "FirebaseMessage Send UploadDeviceInfo"); + Debug.Log($"[Firebase] --- UploadDeviceInfo ---"); //延时重试 new DeviceInfoUploadRequest() .SetRetryTimes(1)