How does iBeacon wake up our app? For how long? And how to extend that time?

*爱你&永不变心* 提交于 2019-12-20 10:12:00

问题


after some research of iBeacon I came up with the following questions that I couldn't find extended help:

  1. How does iBeacon wake up our app? Does it wake up our app by putting our app into background mode if the app was suspended?

  2. What background mode did iBeacon put our app into? What can we do in this background mode?

  3. How long can this background mode last before it is suspended again? When it is about to be suspended, what function was invoked?

  4. How can we extend this background time if we need to?

  5. As we all know iBeacon only wakes up our app when region changes (enter/exit), but how do we relaunch user's app if user is still in the same region?

Thank you in advance.


回答1:


Some answers:

  1. An iBeacon can wake up your app into the background using monitoring APIs. It can do this even if your app has not been launched since device reboot, or even if the app has been killed from the task switcher (although the latter requires iOS 7.1+) This works by your app calling the startRangingBeaconsInRegion: method on CLLocationManager, and also implementing the CLLocationManagerDelegate protocol's locationManager:didDetermineState:forRegion:, locationManager:didEnterRegion: and/or locationManager:didExitRegion: methods.

  2. Even if your app is not running, your app will get launched into the background and the above methods called when a beacon matching the passed region definition is detected. You can execute any code you want in this time that doesn't require a user interface. Typically, this includes updating application state, calling a web service, or sending a local notification to encourage the user to bring the app to the foreground. (And no, you cannot programmatically bring your app to the foreground.)

  3. The app only gets to run for about five to ten seconds in the background before being suspended again. (If your app were already in the foreground, it would get to continue running indefinitely.) If it is suspended after this brief time your class implementing the UIApplicationDelegate protocol applicationWillResignActive: method gets called.

  4. You can request additional background time by calling the beginBackgroundTaskWithExpirationHandler: method of the UIApplication class. But getting this extra time is not guaranteed, and you cannot continue to do this indefinitely.

  5. Once your app enters a region and you get a background notification, you cannot get a second notification to wake up your app for the same region until you exit it. You can game this a bit by defining multiple regions and having multiple beacons that might trigger more entries and exits. But these are all workarounds. In general you cannot relaunch the app with this technique if there is no additional entry/exit event.



来源:https://stackoverflow.com/questions/24590534/how-does-ibeacon-wake-up-our-app-for-how-long-and-how-to-extend-that-time

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