我尝试了以下各种组合:
优先级设置为高。我的目标功能在后台模式中启用了后台抓取和远程通知。
这是我的有效载荷的样子:
JsonObject jGcmData = new JsonObject();
jGcmData.addProperty("to", "/topics/global");
jGcmData.addProperty("priority", "high");
JsonObject jData = new JsonObject();
jData.addProperty("id", nObj.id);
jData.addProperty("title", nObj.title);
jData.addProperty("body", nObj.body);
JsonObject apsData = new JsonObject();
apsData.addProperty("content-available", "1");
apsData.addProperty("alert", "");
jGcmData.add("aps", apsData);
jGcmData.add("data", jData);
我一打开应用程序,通知就会进来,但不是在后台。
看起来是这样的:
[AnyHasable("body"): NTCIP示例单元:现在显示WALNUT TREE(Tue Nov15 14:01:30EST 2016), AnyHasable("id"): idhere, AnyHasable("collapse_key"):do_not_collapse, AnyHasable("from"): /topics/global, AnyHasable("title"):消息更改的通知]
My AppDelegate在收到前台和后台通知时起作用:
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler handler: @escaping (UIBackgroundFetchResult) -> Void) {
print("background notification received: \(userInfo)")
GCMService.sharedInstance().appDidReceiveMessage(userInfo);
NotificationCenter.default.post(name: NSNotification.Name(rawValue: messageKey), object: nil, userInfo: userInfo)
handler(UIBackgroundFetchResult.noData);
}
func applicathtml" target="_blank">ion(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) {
print("foreground notification received: \(userInfo)")
GCMService.sharedInstance().appDidReceiveMessage(userInfo);
NotificationCenter.default.post(name: NSNotification.Name(rawValue: messageKey), object: nil, userInfo: userInfo)
}
我从未看到调用应用程序(DidReceiveEmotentification:::fetchCompletionHandler)。
请帮帮忙!
原来我需要jGcmData.add(通知,jData);而不是jGcmData.add(数据,jData); APNS处理后台通知。做出这种改变,我现在看到应用程序(didReceive远程通知::: ftchCompletionHandler)被调用,除了改变我如何处理有效载荷之外,我相信我的后台通知问题已经解决!
(链接到SO问题,帮助我找到这个决议将很快添加!)
澄清:GCM接受有效负载描述,因为APNS希望它是后台通知的通知或数据
您可以看到,我的JSON中有两个块:一个通知块(在后台接收通知),一个数据块(在前台接收通知)。 我不明白为什么没有收到后台通知。我的怀疑是关于块的顺序(如果我把“数据”块放在“通知”块之前会有问题吗?)。 编辑:有关问题的更多信息。 编辑2: 当应用程序在后台时,不会收到通知,但当我打开应用程序时,会立即收到相同的通知(方法didReceiveRemoteNotification被激发)。
当应用程序关闭时,我无法使通知工作。 我从FCM/GCM(python服务器)发送此消息: 所以curl是这样的: curl-头"授权:key=MYKEY"-头"内容类型:应用/json"https://fcm.googleapis.com/fcm/send-d'{"registration_ids":["APA91bEDB9dVf-..."],"collapse_key":空,"content_
我需要帮助。Firebase通知在后台不工作。这是我的代码:
我正在尝试将GCM用于IOS和Android客户端。当应用程序位于前台时,它似乎可以与IOS配合使用,但是,当应用程序位于后台时,通知中心不会收到消息,并且不会调用带有completionHandler的DidReceiveEmotentification。 我发现一个问题是从GCM到APN的消息格式错误。也就是说,它看起来就是这样: {“aps”:{“内容可用”:1},“数据id”:345} 顺
问题内容: 我在iOS上的FCM通知有问题。 我收到成功通知时,我的应用程序是在前台(回调中被激发),但是当应用程序在后台(我看不出在iOS中的通知栏的任何东西)我没有收到通知。 因此,我认为问题在于FCM发送的消息格式。我的服务器发送到FCM的json格式如下: 如您所见,我的json中有两个块:一个通知块(用于在后台接收通知)和一个数据块(用于在前台接收通知)。 我不明白为什么没有收到后台通知
我无法在iOS设备上进行测试