2017-10-28 16 views
2

私は完全に説明するには複雑すぎるアプリで作業しているので、私の質問をサポートするために、達成する。(iOS)アプリがもう実行されていないときにすべてのローカル通知をキャンセルする

私は10分のタイマーを表示するアプリがあります。ボタンが押されると、タイマーは0になります。アプリが終了(終了していない)しているときに、ローカル通知でこれをユーザーに通知します。

アプリが終了すると、タイマーも明らかに停止します。しかし、地元の通知は設定され、最終的に発効されます。

私はこれが起こりたくありません。アプリがまだバックグラウンドで実行されている場合にのみ通知を表示したい。アプリが終了した場合やクラッシュした場合は、通知は表示されません。

これを達成する方法はありますか?

ありがとうございました。

ローレンス

アプリの状態あなたの設定を確認し、ローカルの通知を表示することができます
+0

は、ユーザーがそれを離れてスワイプしてアプリを終了した場合、あなたのアプリは、任意のコードを実行する機会を得ることはありません。 – Paulw11

+0

アプリが強制終了されたというイベントが表示されないので、私はそうは思わない。 – cldrr

答えて

3

スウィフト3

let state = UIApplication.shared.applicationState 
if state == .background { 
    print("App in Background") 
} 
+2

しかし、アプリ状態がバックグラウンドであると確信したときにローカル通知を設定すると、問題は解決しません。タイマーが終了し、アプリ状態がバックグラウンドの場合にメソッドを呼び出すと、ローカル通知がスケジュールされるか、間違っていますか?お返事をありがとうございます。 –

+0

@FrancescoDeliro私はあなたが正しいと思います!新しい通知をスケジュールしながら、アプリの状態を確認することで結果を得ることができます。 – Mannopson

+0

こんにちはフランチェスコ、ご返信ありがとうございます。問題は、設定したい通知が、タイマーが終了したときではなく、10分前にスケジュールされていることです。通知のスケジューリング時には、アプリは常にアクティブで表示されます。一方、アプリが予期せずシャットダウンした場合、通知は表示されません。あるいは私はあなたの答えを誤解していますか? –

関連する問題