当应用程序打开时,如何在iOS中获取到达的远程通知数组?

时间:2016-01-06 08:23:35

标签: ios objective-c iphone notifications google-cloud-messaging

我目前正在开发一个从Web服务器接收推送通知的iOS应用程序。

当应用程序在后台/前台运行时,我可以很好地收到通知,但是当设备在我的应用程序终止时接收通知(从多任务处理模式中滑动或锁定设备)时,DidReceiveRemoteNotification方法没有被调用(但通知&标题确实出现了!)。

所以我在考虑获取所有到达(未读)通知并在用户启动应用程序时清除所有通知(FinishedLauncing方法),然后我可以先显示一些消息,因为从服务器获取数据确实需要一些时间。

如果用户点击其中一条通知打开我的应用,我可以从launchOptions收到一条消息。但有没有办法让他们全部?

2 个答案:

答案 0 :(得分:2)

无法收到您收到的所有通知。

您只能接收用户从通知中心点击或选择的通知的有效负载。

但有一种方法,使用它可以处理您的每个推送通知。 将值为content-available的密钥1添加到您的aps字典中。

所以它看起来像,

{
    "aps" : {
        "alert" : {
            "title" : "Game Request",
            "body" : "Bob wants to play poker",
        },
        "badge" : 5
        "content-available" : 1
    }
}

如果iOS系统检测到具有值1的此键的pushNotification, 它会调用appDelegate的application:didReceiveRemoteNotification:fetchCompletionHandler:

答案 1 :(得分:0)

userInfo是包含推送通知的字典。 aps是推送通知正文的关键。

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
 NSLog(@"userInfo  %@",userInfo);   

 // you can get the required message as below

 NSString *msg = [userInfo valueForKey:@"aps"];
 NSLog(@"Push Notification:%@",msg);
}