2016-11-28 6 views
0

私のアプリがユーザーのアプリを倒すたびに通知されることは非常に重要です(バックグラウンドに移動するのではなく、ホームボタンをダブルタップしてアプリのスクリーンショットをスワイプすることで完全に終了します)。私はapplicationWillTerminate()がほとんど呼び出されていないことを知っているので、ユーザーがアプリを終了するときに最も安全な方法が通知されることを迷っていました。多くのiOSユーザーがアプリを使い終わった時点でアプリを殺すように習慣を作っているので、Appleがこれのために何らかの形でソリューションを提供しているとは思えないので、本当に本当に本当に本当に奇妙なものになるだろうこのイベントをキャッチすることは不可能です。私がする必要があるのは、URLRequestをオフにして、私のWebサービスに更新指示を送ることだけです。アプリが死んでもウェブサービスにリクエストを送信できますか? (Swift 3)

+0

あなたはこれらの二つのうちの一つは、それが殺されたときにアプリに送るなる可能性が高い、 'SIG_KILL'または' SIG_TERM'信号を傍受してみてください可能性があります。しかし、あなたのアプリがそのライフサイクル(その終わり近く)でその時に多くのことをする立場にあるのかどうかわからない – Cristik

+0

@Cristikは試してみる価値があると思います。それ、どうやったら出来るの? –

答えて

0

UIApplicationWillTerminateNotificationを処理するためにオブザーバーを追加すると、一貫性が増します。ユーザーがホームボタンをダブルタップしてアプリをスワイプして強制終了させると呼び出されます。

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool 
{ 
    NSNotificationCenter.defaultCenter().addObserver(self, selector:#selector(AppDelegate.onAppWillTerminate(_:)), name:UIApplicationWillTerminateNotification, object:nil) 
    return true 
} 


func onAppWillTerminate(notification:NSNotification) 
{ 
    print("onAppWillTerminate") 
} 
+1

うわー、それは動作します!理解できません。 NSNotificationにアプリケーション終了の通知がある場合、 'applicationWillTerminate()'はほとんど呼び出されません(主に決して)。なぜ、Appleはこの通知を使うのではなく、 'AppDelegate'にデリゲートメソッドを実装するだけですか?とにかく、ありがとう!あなたの答えを読んだとき、誰もが何年もの間私に「app closing」イベントをキャッチすることは不可能だと言っていたので、それはうまくいくとは思わなかった。あなたの答えはとても多くの人が間違っていることを証明します。うれしいことに、これには回避策があります。再度、感謝します! –

+0

あなたは大歓迎です!お力になれて、嬉しいです! :) –

関連する問題