アプリがバックグラウンドにある場合や画面がロックされている場合でも、ユーザーの場所を追跡するアプリを作成しました。私はiOS 9.2のiPhone 5sデバイスでそれをテストしたところ、すべてうまくいきました。 iOS 9.3.1にアップデートした後、アプリはバックグラウンドで約10分間実行され、その後アプリは自動的に停止することに気付きました。私はこの問題の修正があることを願って、昨日iOS 9.3.2に電話を更新しました。しかし、この問題は依然として続く。iOS 9.3.1以降にアップデートした後で、iphoneアプリがバックグラウンドで動作しない
私は
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
private static var backgroundService : BackgroundService? = nil
var startServices : Bool = false
public static var bgTask = UIBackgroundTaskIdentifier()
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
print("didFinishLaunchingWithOptions")
AppDelegate.bgTask = beginBackgroundUpdateTask()
startBackgroundService()
return true
}
internal func startBackgroundService(){
if AppDelegate.backgroundService == nil{
AppDelegate.backgroundService = BackgroundService.getBackgroundService()
}
AppDelegate.backgroundService!.startService(self)
}
internal func stopBackgroundService(){
AppDelegate.backgroundService!.stopService()
}
func beginBackgroundUpdateTask() -> UIBackgroundTaskIdentifier {
return UIApplication.sharedApplication().beginBackgroundTaskWithExpirationHandler({})
}
func applicationDidEnterBackground(application: UIApplication) {
self.startBackgroundService()
print("applicationDidEnterBackground")
}
}
AppDelegateクラスに次のコードを持っているアプリのバックグラウンド更新と位置サービスは、iPhone上のアプリのために有効になっています。背景モードが有効になり、Info.plistにその他の必要な権限が追加されました。
問題は、iOS 9.2搭載の別の携帯電話でコードをテストしても問題なく動作しています。 2番目の携帯電話をiOS 9.3.2にアップデートした後、同じ問題が発生しました。この問題の原因となっている9.3に変更がありましたか?私は、変更履歴とドキュメントを調べたが、何か有用なものを見つけることができなかった。誰も似たような問題に遭遇しましたか? iOS 9.3でアプリが動作するようにするために必要な変更はありますか?あなたのLocationManager
あなたはしかしallowsBackgroundLocationUpdates
使用することができますから、あなたのデータへの常時アクセスを持っているしたい場合は
アップルがバックグラウンド処理を強化していると思う。 'backgroundTaskWithExpirationHandler'を使うことは、バックグラウンドで位置更新を得る正しい方法ではありません。 – Paulw11
@ Paulw11 - バックグラウンドでアップデートを入手する正しい方法は何ですか?私はiOSの開発には新しく、backgroundTaskWithExpirationHandlerはバックグラウンドで動作させるための唯一の方法でした。 – Joyson
ロケーションの更新に背景モードを使用していますか? –