我想在关闭应用时从推送通知中获取数据。我使用下面给出的代码:
- (void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
{
NSDictionary *aps = userInfo[@”aps”];
if (state == UIApplicationStateInactive){
// user tapped notification
NSLog(@"results%@",aps);
completionHandler(UIBackgroundFetchResultNewData);
} else {
// app is active
completionHandler(UIBackgroundFetchResultNoData);
}
}
在上面的代码NSLog中(@“结果%@”,aps);当app在后台时,不会打印值。请帮帮我
答案 0 :(得分:3)
didReceiveRemoteNotification仅在您点按通知时有效。因此,只有当您点按通知时,它才会为您提供数据,而您的应用将会开启。
如果你想获得NSDictionary * aps = userInfo [@“aps”];当你的应用程序处于kill状态时,你必须实现pushkit框架。
您可以从我的答案
下载示例代码Can someone share a sample code of iOS Xamarin PushKit in C#?
Register for voip notifications outside of app delegate
来源 https://github.com/hasyapanchasara/PushKit_SilentPushNotification
答案 1 :(得分:0)
当app被关闭或终止时,由于显而易见的原因,不会调用didReceiveRemoteNotification
Appdelegate的didFinishLaunchingWithOptions
launchOptions为此提供了解决方案。
Launchoptions基本上是一个字典来告诉应用程序它的启动方式。对于您的实现,您需要检查launchOptions是否在键UIApplicationLaunchOptionsRemoteNotificationKey
中有任何值,如此()
let userInfo = launchOptionForApp[UIApplicationLaunchOptionsRemoteNotificationKey] as? NSDictionary
你的userInfo字典有你需要解析和实现你的进一步逻辑的json
答案 2 :(得分:0)
从服务器端更改样本,为我完成了这个技巧。
{
aps = {
"content-available" : 1,
sound : ""
};
}