2016-07-22 33 views
0

我正在使用Google Firebase向用户发送通知。当时我试图发送通知给单个设备(我的)。当应用在后台运行时,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]; 

} 

但因为它是谷歌的书面文件火力地堡中,应用程序打开后,此方法将触发,所以它是有意义的。

因此,邮件传递到我的设备,我只是不能触发通知横幅,如果应用程序在后台。

我读了关于将消息优先级设置为高和自定义数据密钥内容 - 可用于1,但没有运气。

我是否在代码中缺少其他内容来触发通知? 我已经使用Google Firebase指南来实现通知。

+0

如果您还将高优先级的内容发送给您,则实际上不允许将“内容可用”消息设置为1。也许放弃'可用内容'部分,看看是否有帮助。 –

+0

此外,考虑到您提到自定义数据,我假设您从Firebase控制台发送。控制台不支持content_available字段,自定义数据仅被视为消息数据对象中可用的键/值对。你添加了“需要的背景模式”吗? –

+0

@ToddKerpelman好吧,我删除了内容 - 可用,但仍然没有运气..仍然收到消息,但通知不显示应用程序在后台 – MOzeb

回答

2

我解决了我的问题。我开始再次阅读Google Firebase上的文档,并且在Cloud Messaging下我发现这个:

在setAPNSToken:type:中提供您的APNs令牌和令牌类型。确保正确设置了类型的值:沙箱环境的FIRInstanceIDAPNSTokenTypeSandbox或生产环境的FIRInstanceIDAPNSTokenTypeProd。如果您没有设置正确的类型,则邮件不会传送到您的应用程序。

所以我错过了把这个声明方法:didRegisterForRemoteNotificationsWithDeviceToken:

- (void)application:(UIApplication *)application 
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { 

[FIRInstanceID instanceID] setAPNSToken:deviceToken type:FIRInstanceIDAPNSTokenTypeSandbox]; 

} 

不要忘了把类型: “FIRInstanceIDAPNSTokenTypeProd” 进行生产。

相关问题