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

How can I get array of arrived Remote Notifications in iOS when the application open?

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

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

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

如果用户单击其中一个通知打开我的应用程序,我确实可以从 launchOptions 收到一条消息。但是有没有办法让他们都得到?

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

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

但是有一种方法,您可以使用它来处理您的每个推送通知。 将键 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:

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);
}