2016-01-12 19 views
9

私はSwiftでコード化されたiOS用のゲームに取り組んでいます。私は、アプリがバックグラウンドモードに入ったときや、電話などの理由で中断されたときに検出する方法を見つけようとしましたが、何も見つかりませんでした。どうすればいいのですか?アプリを検出するiOSアプリが背景を検出する

+0

アプリケーションデリゲートで探してみてください。 – Bamsworld

+2

'UIApplicationDelegate'のドキュメントを参照してください。 –

答えて

20

スウィフト3以降

あなたはUIApplicationWillResignActiveNotification

NotificationCenter.default.addObserver(self, selector: #selector(willResignActive), name: .UIApplicationWillResignActive, object: nil) 

のためにあなたのビューコントローラにオブザーバを追加し、セレクタメソッドを追加することができますあなたのアプリがその通知を受け取ったときに実行されるView Controller:

@objc func willResignActive(_ notification: Notification) { 
    // code to execute 
} 
+0

ありがとう! ** Swift 4 **の場合、 'func'の前に' @ objc'を追加してください。 –

5

が背景に入った、あなたはappDelegate.m で確認することができますアプリケーションデリゲートメソッド

を見つけるapplicationDidEnterBackground

アプリがバックグラウンドに入ると、このメソッドは、呼び出されます。

+0

これは、アプリがすでにバックグラウンドに入ったことを通知するだけです。このような現象と呼び出されるメソッドとの間に時間がかかることがあります。 –

+1

はい、正確にapplicationWillResignActive可能な回答、+1 @AlexBlundell:良い仕事。 – Suresh

0

UIApplicationDeletegateのインスタンスで定義されているデリゲートメソッド(デフォルトではAppDelegate.m)を見てください。具体的には有用であろう次:このメソッドは、アプリケーションが、状態をアクティブから非アクティブに移動しようとしていることを知らせるために呼び出され

- (void)applicationWillResignActive:(UIApplication *)application 

。これは、特定のタイプの一時的な中断(着信電話やSMSメッセージなど)や、ユーザーがアプリを終了してバックグラウンド状態への移行を開始したときに発生します。非アクティブ状態のアプリケーションは引き続き実行されますが、着信イベントはレスポンダにディスパッチされません。

アップルのドキュメントから撮影

からhere

3

Swift3

let notificationCenter = NotificationCenter.default 
    notificationCenter.addObserver(self, selector: #selector(appMovedToBackground), name: Notification.Name.UIApplicationWillResignActive, object: nil) 


func appMovedToBackground() { 
    print("App moved to background!") 
} 
関連する問題