我正在编写一个应用程序,当应用程序在后台运行时,需要偶尔更新服务器有关用户位置的信息。我知道我可以通过使用setKeepAliveTimeout:handler:方法来做到这一点。我知道这种方法是专门为VoIP应用程序,但我想知道苹果是否会允许这种使用位置更新到服务器?
文档说,当使用setKeepAliveTimeout:handler:
方法时,您的处理程序只有10秒的时间来保持voip呼叫的网络连接。看看这个答案。
此呼叫用于voip应用程序,您必须在UIBackgroundModes
键(info.plist)中具有voip
。使用这个可能会被拒绝,除非你正在编写一个voip应用程序。
你不需要这个setKeepAliveTimeout
。
我建议阅读苹果的官方文档:https://developer.apple.com/library/ios/documentation/userexperience/conceptual/LocationAwarenessPG/CoreLocation/CoreLocation.html
iOS提供的一个东西是位置改变时的回调。您的应用程序将被唤醒一小段时间,您将收到此回调,并且应该能够将您的位置发送到服务器。
顺便说一句。为此,您需要location
背景模式。
和程序是正确的。您需要voip后台模式来使用setKeepAliveTimeout。如果你的应用程序不是一个真正的voip应用程序,几乎可以保证你的应用程序将被拒绝。