Xamarin Android Firebase刷新令牌

问题描述 投票:0回答:1

我在我们的Xamarin Android应用中实施了Firebase消息传递。应用程序第一次运行时,它将OnTokenRefresh()称为例外。我卸载了应用程序并重新运行了重新安装应用程序的调试程序。但这次没有调用OnTokenRefresh。事实上,我无法让它被第二次称为单个设备。

我尝试使用令牌服务来获取令牌,但它总是抛出异常。方法很简单:

 [assembly: 
 Xamarin.Forms.Dependency(typeof(MyApp.Droid.Services.NotificationToken))]
  namespace MyApp.Droid.Services
 {
 class NotificationToken : INotificationToken
 {
    public string GetToken()
    {            
        var token = "";
        if (Firebase.Iid.FirebaseInstanceId.Instance != null)
            token = Firebase.Iid.FirebaseInstanceId.Instance.Token;
        return token;
     }
   }
}

如果Instance为null,则在检查时抛出异常。

 [GoogleAccountDataServiceImpl] getToken() -> BAD_AUTHENTICATION. Account: <ELLIDED:-119322310>, App: com.google.android.gms, Service: oauth2:https://www.googleapis.com/auth/gcm

在创建主要活动后,我正在调用该服务。在用户登录我们的应用程序后调用它。

我的Android项目中包含了google-services.json。我很确定它是在安装应用程序的初始时间使用的,它创建了令牌并调用了OnTokenRefresh。

     [Service]
[IntentFilter(new[] { "com.google.firebase.INSTANCE_ID_EVENT" })]
public class MyFirebaseIIDService : FirebaseInstanceIdService
{
    const string TAG = "MyFirebaseIIDService";

    public override void OnCreate()
    {
        base.OnCreate();
        //FirebaseInstanceId.Instance.GetToken();
    }
    public override void OnTokenRefresh()
    {
        var refreshedToken = FirebaseInstanceId.Instance.Token;
        App.NotificationToken.Token = refreshedToken;
        Log.Debug(TAG, "Refreshed token: " + refreshedToken);
    }        
}
android xamarin.android
1个回答
0
投票

在Visual Studio 2017中,您可以禁用以下首选项,以确保在部署到设备之间刷新Firebase令牌。这是通过反复试验获得的。

工具>选项> Xamarin> Android>在部署之间保留应用程序数据/缓存

希望这可以帮助。

© www.soinside.com 2019 - 2024. All rights reserved.