当应用程序从后台删除时,Apple Push 通知不会在 ios 7 上传递
Posted
技术标签:
【中文标题】当应用程序从后台删除时,Apple Push 通知不会在 ios 7 上传递【英文标题】:Apple Push notification not deliver on ios 7 when application remove from background 【发布时间】:2013-12-30 05:11:33 【问题描述】:我使用以下代码在 ios 7 中尝试了静默 Apple 推送通知。应用程序在前台或后台时收到的推送通知。然后我通过从后台应用程序中滑动应用程序来从后台删除应用程序。之后,如果我从服务器发送推送通知,它会正确发送到 APN,但未传递到 iPhone。所以 ios 7 中的 Apple 推送通知仅提供在后台运行的静默推送通知应用程序?如果用户从后台删除应用程序,它会收到通知吗?
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
NSString *receivedMessage = [[userInfo objectForKey:@"acme1"] objectForKey:@"mydata"];
NSLog(@"fetchCompletionHandler receivedMessage -> %@",receivedMessage);
completionHandler(UIBackgroundFetchResultNewData);
【问题讨论】:
请在这里查看我的答案,***.com/questions/18856204/… @Nandha,所以如果我从切换器中删除应用程序(强制退出应用程序),那么苹果推送通知将不会收到? 是的,只要您的应用处于“未运行”状态,您就不会收到推送通知。 @Ramprasad 你是对的。如果您从应用程序切换器中删除该应用程序,您的应用程序将根本不会收到静默推送。 Apple 的官方解释是他们这样做是为了让用户能够杀死行为不端的应用程序。他可以通过再次进入应用程序随时重新启用应用程序,这也将重新启用后台行为(在您的情况下为静默推送)。此外,目前存在静默推送的错误,如果您的应用程序正在运行并且您重新启动手机,静默推送将不会到达设备,直到用户手动重新打开应用程序:devforums.apple.com/thread/209664?tstart=0 Will iOS launch my app into the background if it was force-quit by the user?的可能重复 【参考方案1】:didReceiveRemoteNotification 应用不运行时不调用,只在应用打开和前台调用。
如果应用程序未运行并且它会收到这样的通知,您将在UILocalNotification
中获得通知列表:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
.........
.........
.........
UILocalNotification *localNotif =[launchOptions objectForKey: UIApplicationLaunchOptionsRemoteNotificationKey];
if (localNotif)
NSLog(@"****** notifiation ******");
return YES;
【讨论】:
【参考方案2】:即使应用关闭(即不在后台模式下),应用也能收到通知。
【讨论】:
以上是关于当应用程序从后台删除时,Apple Push 通知不会在 ios 7 上传递的主要内容,如果未能解决你的问题,请参考以下文章
当应用程序关闭或应用程序在后台时获得两次 GCM PUSH 通知
Apple Push Notification : 我们可以在通知消息中删除一些文本,然后才能在 iphone 上显示给用户吗