当应用程序打开时,如何在 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);
}
我目前正在开发一个 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);
}