在注销时调用 FirebaseInstanceId.Instance.DeleteInstanceId() 以停止 Xa



我有一个Xamarin.Forms v4.4.0.991477应用程序,其中我设置了Firebase推送通知。对于我使用的Xamarin.Android项目,Xamarin.Firebase.Messaging v71.1740.0包。

在用户注销时,我调用,

FirebaseInstanceId.Instance.DeleteInstanceId()

但它抛出了一个异常,

Java.IO.IOException: MAIN_THREAD
at Java.Interop.JniEnvironment+InstanceMethods.CallVoidMethod (Java.Interop.JniObjectReference instance, Java.Interop.JniMethodInfo method, Java.Interop.JniArgumentValue* args) [0x0006e] in <af1c6fdcff1a4da4a0e44a8cdef352da>:0 
at Java.Interop.JniPeerMembers+JniInstanceMethods.InvokeVirtualVoidMethod (System.String encodedMember, Java.Interop.IJavaPeerable self, Java.Interop.JniArgumentValue* parameters) [0x0002a] in <af1c6fdcff1a4da4a0e44a8cdef352da>:0 
at Firebase.Iid.FirebaseInstanceId.DeleteInstanceId () [0x0000a] in <86531d1309d7458994f8292b9231bad1>:0 
at MyDroid.Droid.PlatformFCM.Terminate () [0x00002] in /Volumes/MyDroid/Droid/PlatformFCM.cs:40 
--- End of managed Java.IO.IOException stack trace ---
java.io.IOException: MAIN_THREAD
at com.google.firebase.iid.FirebaseInstanceId.deleteInstanceId(Unknown Source:69)
at crc64ee486da937c010f4.ButtonRenderer.n_onClick(Native Method)
at crc64ee486da937c010f4.ButtonRenderer.onClick(ButtonRenderer.java:104)
at android.view.View.performClick(View.java:6897)
at android.widget.TextView.performClick(TextView.java:12693)
at android.view.View$PerformClick.run(View.java:26101)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6944)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

令牌似乎也没有过期。当我检查令牌时,我得到相同的令牌。

如何删除令牌过期FirebaseInstanceId

调用,

FirebaseInstanceId.Instance.DeleteInstanceId();

应该像这样在后台线程中调用,

Task.Run(() => { FirebaseInstanceId.Instance.DeleteInstanceId(); });

因为它是阻止服务不应Main线程上调用它。

参考

public voiddeleteInstanceId ((

删除实例 ID 及其关联的数据。

这会停止定期向生成实例 ID 时启动的 Firebase 后端发送数据,除非使用其他需要实例 ID 的库(如 FCM、RemoteConfig 或 Analytics(或将其配置为自动执行。

如果启用了 Firebase 云消息自动初始化功能,则会异步生成新的实例 ID。

这是一个阻塞函数,因此不要在主线程上调用它。

相关内容

  • 没有找到相关文章

最新更新