我想更新我的应用以支持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"/>
如果任何人有任何想法,将不胜感激!
谢谢!
1条答案
按热度按时间k4aesqcs1#
Android 13引入了新的运行时通知权限,以下是相关文档:Notification runtime permission.
尽管FCM SDK(23.0.6或更高版本)包含了在清单中定义的POST_NOTIFICATIONS权限(在清单中添加它没有坏处),但您还必须向用户请求运行时权限。要了解更多信息,您可以参考官方Firebase文档,其中给出了如何请求权限的示例:在Android 13+上请求运行时通知权限。
希望对你有用。