Xamarin iOS,Firebase FCM - 令牌刷新删除InstanceId:无法识别的选择器发送到类

时间:2018-03-16 21:11:07

标签: firebase xamarin.forms xamarin.ios firebase-cloud-messaging

我正在使用 Firebase云消息传递 Xamarin Forms / iOS (包版本2.0.8)。我正确接收消息,我可以用以下方法拦截令牌刷新:

Firebase.InstanceID.InstanceId.Notifications.ObserveTokenRefresh((sender, e) => { });

在我的AppDelegate中声明。

我想在每次登录时强制fcm令牌刷新,因为我想确保每次登录时每个用户都分配了一个干净的令牌(并发送到服务器)。在Android中我使它工作,但在iOS上尝试删除InstanceId:

var handler = new InstanceIdDeleteHandler((error) => {
    Console.WriteLine(error?.DebugDescription);
});

InstanceId.SharedInstance.DeleteId(handler);
var token = InstanceId.SharedInstance.Token;

我收到以下错误:

  

+ [FIRInstanceIDCheckinPreferences preferencesFromKeychainContents:]:无法识别的选择器发送到类0x102daab28 Xamarin.iOS:已收到   未处理的ObjectiveC异常:NSInvalidArgumentException   + [FIRInstanceIDCheckinPreferences preferencesFromKeychainContents:]:无法识别的选择器发送到类0x102daab28

enter image description here

1 个答案:

答案 0 :(得分:0)

经过几个小时的亵渎后,我找到了解决方案,也许这对其他人有用。

有必要在 AppDelegate

中添加方法
[Export("messaging:didRefreshRegistrationToken:")]
public void DidRefreshRegistrationToken(Messaging mess, string token)
{
}

它永远不会被击中所以它可以是空的,但是如果没有声明这个,显然不可能强制fcm标记刷新删除InstanceId。