FirebaseInstanceId.Instance.Token 已弃用,returns 在 Xamarin.Android 中使用 Xamarin.Firebase.Messaging 为空

FirebaseInstanceId.Instance.Token is depricated and returns null in Xamarin.Android using Xamarin.Firebase.Messaging

我正在使用 Xamarin.Firebase.Messaging v71.1740 nuget 插件开发一个 Xamarin.Android 项目,

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

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

    // use token
}

正在使用,

var token = FirebaseInstanceId.Instance.Token;

但是这个 returns null 并且它也被列为过时了。

更新

GetInstanceId<InstanceIdResult>()deprecated 支持 FirebaseMessaging.getToken() 用于 FCM 令牌 FirebaseInstallations.getId() 用于 实例标识符,

因此,FirebaseMessaging.getToken() 是现在获得 FCM 令牌

的推荐方式

这就是您可以轻松食用它的方式,

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

FirebaseInstallations.getId()是现在获得实例标识符

的推荐方法

这就是您可以轻松食用它的方式,

var id = await FirebaseInstallations.Instance.GetId();

here, var is of the Type Java.Lang.Object. Do, token.ToString() to get the string value.

原版

FirebaseInstanceId.Instance.Tokendeprecated 支持 GetInstanceId<InstanceIdResult>(),

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

这就是您的消费方式,

var instanceIdResult = await FirebaseInstanceId.Instance.GetInstanceId().AsAsync<IInstanceIdResult>();
var token = instanceIdResult.Token;

如果在 FirebaseInstanceId.Instance 上调用

时得到 null
var instanceIdResult = await FirebaseInstanceId.Instance.GetInstanceId().AsAsync<IInstanceIdResult>();

我要更新

Xamarin.Firebase.Messaging to version 71.1740.1

并将其添加到 yourproject.android.csproj

<PropertyGroup> 
    <AndroidManifestMerger>manifestmerger.jar</AndroidManifestMerger> 
</PropertyGroup>

(more info)

这对我有用(不确定两者是否都是强制性的)

哦,看,FirebaseInstanceId.Instancedeprecated too

貌似比较新的方法是:

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