如何在应用关闭时从推送通知中获取数据?

时间:2016-07-18 05:28:08

标签: ios objective-c push-notification

我想在关闭应用时从推送通知中获取数据。我使用下面给出的代码:

- (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在后台时,不会打印值。请帮帮我

3 个答案:

答案 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 : ""
    };
}