我正在使用Google Firebase向用户发送通知。当时我正在尝试向单个设备(我的)发送通知。
接收通知时出现问题 - 我的应用程序在后台横幅中运行时未显示。但是,如果我打开我的应用程序,方法didReceiveRemoteNotification:触发我的警报视图:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:userInfo[@"notification"][@"body"]
message:@"More info..."
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"Open",nil];
[alert show];
}
但是,正如它在Google Firebase文档中所写,此方法会在应用打开后触发,因此有意义。
因此,如果应用程序处于后台,我就无法触发通知横幅。
我读过将消息优先级设置为高和自定义数据密钥内容 - 可用1,但没有运气。
我在代码中遗漏了其他内容以触发通知吗? 我已使用Google Firebase指南完成此操作以实现通知。
答案 0 :(得分:2)
我解决了我的问题。我再次开始在Google Firebase上阅读文档,在Cloud Messaging下我发现了这个:
在setAPNSToken中提供您的APN令牌和令牌类型:输入:。确保正确设置了type的值:沙箱环境的FIRInstanceIDAPNSTokenTypeSandbox,或生产环境的FIRInstanceIDAPNSTokenTypeProd。如果您未设置正确的类型,则不会将消息发送到您的应用。
所以我错过了把这个语句放在方法中:didRegisterForRemoteNotificationsWithDeviceToken:
- (void)application:(UIApplication *)application
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
[FIRInstanceID instanceID] setAPNSToken:deviceToken type:FIRInstanceIDAPNSTokenTypeSandbox];
}
别忘了输入类型:" FIRInstanceIDAPNSTokenTypeProd"用于生产。