我一直在尝试将我的iOS应用程序从Google Cloud Messaging迁移到Firebase,在完成所有艰苦的工作并使新安装的应用程序正常运行后,我遇到了问题:
如果我安装旧版本的应用程序(使用GCM进行推送通知),那么我将旧版本更新为新的基于Firebase的版本,我不会收到任何消息给设备。
邮件从发件人方面发送(我使用Postman进行测试),并且在新安装的应用程序上收到的邮件很好。我确保更新的应用程序正在获取Firebase实例令牌并将其发送到我的服务器数据库(并记录我的手动测试),并且由于消息发送的响应始终是成功的,因此我可以使用此消息。我非常确定我的API密钥或推送令牌没有问题。
可悲的是,关于我可以为我的问题提供的信息的范围,感觉就像是我的头撞墙。要求我的用户群从头开始卸载并重新安装应用程序还不够好,他们会丢失数据! (我已经为我的Android应用迁移到Firebase,他们工作正常。)
任何人都有这方面的经验吗?与此同时,我回到GCM,工作得很好......
编辑
由于Firebase在AppDelegate类中调整了方法,现在它变得更加稀疏,我不再在didRegisterForRemoteNotificationsWithDeviceToken:
中执行任何操作。 (我确实只用一个NSLog函数调用定义它,它被调用,由于某种原因总是两次。)
didFinishLaunchingWithOptions:
看起来有点像这样:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOption
{
// Configure Firebase and listen out for token updates
[FIRApp configure];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onTokenRefresh) name:kFIRInstanceIDTokenRefreshNotification object:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];
[[UIApplication sharedApplication] registerForRemoteNotifications];
//...
}
我的onTokenRefresh:
方法被称为正常 - 我正在获取新令牌,我可以将其与邮递员和服务器一起发送推送通知 - 我只是不知道&#39 ;当它碰巧从以前的化身中更新时,在应用程序上接收它们......
- (void) onTokenRefresh
{
NSString *token = [[FIRInstanceID instanceID] token];
NSLog(@"onTokenRefresh called - My Firebase token is: %@", token);
//...
}