如何在Xamarin.Android中正确注册FCM目标API 33

0s0u357o  于 2023-01-22  发布在  Android
关注(0)|答案(1)|浏览(254)

我想更新我的应用以支持Android API 33的新要求(推送通知权限请求),但我无法获得令牌,甚至无法启动OnNewToken()
我的清单中确实有<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>,我正在请求权限并允许它,但每次我尝试初始化firebase时,控制台中都会出现以下错误:
E/FirebaseInstanceId(25547): Topic sync or token retrieval failed on hard failure exceptions: AUTHENTICATION_FAILED. Won't retry the operation.
这是我请求权限的方式:

if (isNotificationsAllowed == Android.Content.PM.Permission.Denied)
{
    CrossCurrentActivity.Current.Activity.RequestPermissions(new [ {"android.permission.POST_NOTIFICATIONS"}, 0);
                    
    FirebaseApp.InitializeApp(CrossCurrentActivity.Current.AppContext);
    return;
}

这就是我尝试获取令牌的方式:

var token = await FirebaseMessaging.Instance.GetToken();
return token.ToString();

在API 32和更低版本中,由于不需要请求权限,因此OnNewToken()会被触发,并且生成FCM标记时不会出现问题。
此外,我必须指定我正在尝试一个Android模拟器,有Google Play服务(相同的模拟器与API 30工作得很好)。
以下是相关的软件包及其版本:

<PackageReference Include="Xamarin.Firebase.Messaging" Version="120.3.0"/>
<PackageReference Include="Xamarin.Forms" Version="4.8.0.1451" />
<PackageReference Include="Xamarin.GooglePlayServices.Base" Version="118.1.1"/>
<PackageReference Include="Xamarin.Google.Dagger" Version="2.27.0"/>

如果任何人有任何想法,将不胜感激!
谢谢!

k4aesqcs

k4aesqcs1#

Android 13引入了新的运行时通知权限,以下是相关文档:Notification runtime permission.
尽管FCM SDK(23.0.6或更高版本)包含了在清单中定义的POST_NOTIFICATIONS权限(在清单中添加它没有坏处),但您还必须向用户请求运行时权限。要了解更多信息,您可以参考官方Firebase文档,其中给出了如何请求权限的示例:在Android 13+上请求运行时通知权限。
希望对你有用。

相关问题