Xamarin Android Firebase刷新令牌
我在Xamarin Android应用程序中实现了Firebase消息传递。第一次运行该应用程序时,它被称为OnTokenRefresh()(例外)。我卸载了应用程序并重新运行了重新安装应用程序的调试器。不过这次没有调用OnTokenRefresh。事实上,我还没能让它在一台设备上被第二次调用 我尝试创建一个令牌服务来获取令牌,但它总是抛出一个异常。方法非常简单:Xamarin Android Firebase刷新令牌,android,xamarin.android,Android,Xamarin.android,我在Xamarin Android应用程序中实现了Firebase消息传递。第一次运行该应用程序时,它被称为OnTokenRefresh()(例外)。我卸载了应用程序并重新运行了重新安装应用程序的调试器。不过这次没有调用OnTokenRefresh。事实上,我还没能让它在一台设备上被第二次调用 我尝试创建一个令牌服务来获取令牌,但它总是抛出一个异常。方法非常简单: [assembly: Xamarin.Forms.Dependency(typeof(MyApp.Droid.Services
[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;
}
}
}
在检查实例是否为null时引发异常
[GoogleAccountDataServiceImpl] getToken() -> BAD_AUTHENTICATION. Account: <ELLIDED:-119322310>, App: com.google.android.gms, Service: oauth2:https://www.googleapis.com/auth/gcm
在Visual Studio 2017中,您可以禁用以下首选项,以确保在设备部署之间刷新Firebase令牌。这是通过反复试验了解到的 工具>选项>Xamarin>Android>在部署之间保留应用程序数据/缓存
希望这能有所帮助。watch for Your app在设备上运行时首次向FCM注册时会收到注册令牌。此服务实现一个OnTokenRefresh方法,该方法在最初创建或更改注册令牌时调用。运行OnTokenRefresh时,它从FirebaseInstanceId.Instance.token属性检索最新的令牌。OnTokenRefresh很少被调用:它用于在几种情况下更新令牌。有关更多详细信息,请阅读.Visual Studio For Mac(v8.3.11)菜单:Visual Studio>首选项>项目>Android>在应用程序部署之间保留数据/缓存。谢谢@DFalconer
[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);
}
}