当我发送设置了content_available = true标志的GCM消息时,didReceiveRemoteNotification:callback中的userInfo字典为空。
这是我的UIApplication委托中的回调:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))handler {
NSLog(@"Notification: %@", userInfo);
[[GCMService sharedInstance] appDidReceiveMessage:userInfo];
handler(UIBackgroundFetchResultNoData);
}
以下是一个有效的CURL请求示例:
curl --header 'Authorization: key=…' --header 'Content-Type: application/json' -d '{ "registration_ids": ["…"], "data": { "test": "test test test" }}' https://android.googleapis.com/gcm/send
我得到了预期的结果:
Notification: {"collapse_key" = "do_not_collapse"; from = …; test = "test test test";\^J}
但是,当我添加content_available标志,以便在应用程序处于后台时推送可以正常工作:
curl --header 'Authorization: key=…' --header 'Content-Type: application/json' -d '{ "registration_ids": ["…"], "data": { "test": "test test test" }, "content_available": true}' https://android.googleapis.com/gcm/send
NSLog为userInfo对象输出“(null)”。还有其他人遇到过这个问题并有解决方法吗?
答案 0 :(得分:0)
看起来这只是iOS 9 beta 3的一个问题,它可以在iOS 8.4上正常运行。