C# FCM令牌检索[Xamarin]-由于不推荐的方法而更新

C# FCM令牌检索[Xamarin]-由于不推荐的方法而更新,c#,firebase,xamarin,xamarin.android,firebase-cloud-messaging,C#,Firebase,Xamarin,Xamarin.android,Firebase Cloud Messaging,因此,“FireBaseInstancedService”给出了一个警告:它已贬值和过时 “OnTokenRefresh()”不再有效,我们应该改为使用: public void onNewToken(String s) { Log.d("FCM_TOKEN", s); // save in SharedPreference for future use } 但是-为了在MainActivity中获取令牌,我以前使用过: FirebaseIn

因此,“FireBaseInstancedService”给出了一个警告:它已贬值和过时

“OnTokenRefresh()”不再有效,我们应该改为使用:

   public void onNewToken(String s) 
   {
        Log.d("FCM_TOKEN", s);
        // save in SharedPreference for future use
   }
但是-为了在MainActivity中获取令牌,我以前使用过:

FirebaseInstanceId.Instance.Token
这也是不推荐的,我只能为此找到Java解决方案:

FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener( MyActivity.this,  new OnSuccessListener<InstanceIdResult>() {
 @Override
 public void onSuccess(InstanceIdResult instanceIdResult) {
       String token = instanceIdResult.getToken();
       Log.d("FCM_TOKEN",token);
 }
});
非常感谢

1)我的项目也在使用Firebase云消息。我不认为
FirebaseInstanceId.Instance.Token因两个原因被弃用。首先,我没有你说的任何警告。第二,Microsoft最近更新了该属性,但没有提到该属性已被弃用

2)
FirebaseMessagingService
用于处理收到的通知(或消息),而不是处理令牌。例如,如果您的应用程序服务器正在向客户端(设备)发送消息(),
FirebaseMessagingService
是您在客户端接收和处理消息的地方。另外,如果在类FirebaseMessagingService->上单击右键“转到定义”,您将看到没有要覆盖的
OnNewToken()

Q1和Q2合在一起,我猜您需要下面这样的东西来检索注册令牌并将其发送到您的应用服务器

[服务]
[IntentFilter(新[]{“com.google.firebase.INSTANCE\u ID\u EVENT”}]
公共类MyFirebaseIIDService:FireBaseInstanceDService
{
const string TAG=“MyFirebaseIIDService”;
公共覆盖无效OnTokenRefresh()
{
var refreshedToken=FirebaseInstanceId.Instance.Token;
Log.Debug(标记,“刷新令牌:”+refreshedToken);
SendRegistrationToServer(refreshedToken);
}
void SendRegistrationToServer(字符串令牌)
{
//向应用服务器发送令牌
}
}    

上面的代码是从演练中提取的。我的解释简短而不完整。您应该阅读演练以更好地理解。

FirebaseInstancedService已过时/不推荐使用。这就是我在更新所有包(尤其是与Firebase相关的包)后在Visual Studio中收到的警告。请参阅此链接--->(Xamarin论坛);而且这个-->(stackoverflow)Firebase不是微软的产品,不要相信他们的文档中有谷歌的反对意见。
public class MessagingService : FirebaseMessagingService
{
    const string TAG = "MyFirebaseMsgService";
    public override void OnNewToken(string token)
    {
        Log.Debug(TAG, "Refreshed token: " + token);
        SendToServer(token);
    }

}