Does iOS start app in background after reboot if remote-notification defined in UIBackgroundModes and new push notification comes?

我们两清 提交于 2019-12-09 13:32:30

问题


I have an iOS7 app which registers for background mode remote-notification:

<key>UIBackgroundModes</key>
<array>
    <string>remote-notification</string>
</array>

It works fine before reboot and app gets this event while in background:

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler

But it looks like after reboot I don't get this event anymore until I start application manually.

So, question is: can I make iOS7 to run my app into background after reboot when it receives silent push notification for my app? My push notifications don't have "alert" field, only "contentAvailable" - can this be a reason? I've seen apps like whatsapp being able to receive and show push notifications immediately after reboot so it looks doable for at least "alert" kind of notifications.

I know that I can use significant location monitoring to restart app at some point after reboot but I would like to avoid showing location icon on toolbar all the time. Can background-fetch mode help with that? Is there any statistics, how fast after reboot app with background fetch mode will be executed?


回答1:


No, It won't work. Because your app will be in Not Running state as you rebooted your device.

As per apple doc, the new multitasking API(fetch and remote-notification) will work only when the app in the suspended/background/foreground state. If the app is in background/foreground state, then application:didReceiveRemoteNotification:fetchCompletionHandler will get triggered. If the app is in suspended state, then -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions will get triggered. In your case the app is in Not Running state, because of that application:didReceiveRemoteNotification:fetchCompletionHandler is never get triggered.

Please refer apple doc for more about app states.



来源:https://stackoverflow.com/questions/20682909/does-ios-start-app-in-background-after-reboot-if-remote-notification-defined-in

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!