我目前正在开发一个从Web服务器接收推送通知的iOS应用程序。
当应用程序在后台/前台运行时,我可以很好地收到通知,但是当设备在我的应用程序终止时接收通知(从多任务处理模式中滑动或锁定设备)时,DidReceiveRemoteNotification
方法没有被调用(但通知&标题确实出现了!)。
所以我在考虑获取所有到达(未读)通知并在用户启动应用程序时清除所有通知(FinishedLauncing
方法),然后我可以先显示一些消息,因为从服务器获取数据确实需要一些时间。
如果用户点击其中一条通知打开我的应用,我可以从launchOptions
收到一条消息。但有没有办法让他们全部?
答案 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);
}