FirebaseInstanceId.Instance.Token 已弃用并使用 Xamarin.Firebase.Messaging 在 Xamarin.Android 中返回 null

Riz*_*aky 10 xamarin.android xamarin xamarin.forms firebase-cloud-messaging

我正在使用Xamarin.Firebase.Messaging v71.1740 nuget 插件处理Xamarin.Android 项目,

我正在尝试获取已在FirebaseMessagingService扩展类方法中生成的 FCM 令牌,

public override void OnNewToken(string p0)
{
    base.OnNewToken(p0);

    // use token
}
Run Code Online (Sandbox Code Playgroud)

使用,

var token = FirebaseInstanceId.Instance.Token;
Run Code Online (Sandbox Code Playgroud)

但这又回来了null,它也被列为过时了。

Riz*_*aky 16

更新

GetInstanceId<InstanceIdResult>()不赞成赞成FirebaseMessaging.getToken()FCM令牌FirebaseInstallations.getId()实例标识符

在此处输入图片说明

因此,FirebaseMessaging.getToken()是现在获取FCM Token的推荐方式,

这样你就可以轻松食用了,

var token = await FirebaseMessaging.Instance.GetToken();
Run Code Online (Sandbox Code Playgroud)

FirebaseInstallations.getId()是推荐的方式,现在拿到实例标识符

这样你就可以轻松食用了,

var id = await FirebaseInstallations.Instance.GetId();
Run Code Online (Sandbox Code Playgroud)

在这里,varType Java.Lang.Object。做,token.ToString()得到string价值。

原来的

FirebaseInstanceId.Instance.Token弃用的青睐GetInstanceId<InstanceIdResult>()

在此处输入图片说明

所以,GetInstanceId<InstanceIdResult>()是推荐的方式,

这样你就可以消费了

var instanceIdResult = await FirebaseInstanceId.Instance.GetInstanceId().AsAsync<IInstanceIdResult>();
var token = instanceIdResult.Token;
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是,这个解决方案现在似乎也已被弃用。 (3认同)
  • 最后,我发现了问题...使用最新版本的 Xamarin.Firebase.Core (71.1601.0) 使我的 FirebaseInstanceId.Instance null (2认同)