2016-05-21 10 views
1

私のアプリが殺されてアプリが何をしていたとしても、それができないと警告するもうMileIQは、ユーザーにそのアプリが殺されたことを警告し、旅行を記録したい場合には再起動する必要がある場合に、バックグラウンドロケーションの追跡と同様のことを行います。 applicationWillTerminate5 seconds to the app to cleanupを持っているので、6秒に設定アプリが終了した後* iOSローカル通知が配信されるようにする方法

let notification = UILocalNotification() 
notification.soundName = UILocalNotificationDefaultSoundName 
notification.alertTitle = "title" 
notification.alertBody = "body" 
notification.fireDate = NSDate().dateByAddingTimeInterval(6) 
UIApplication.sharedApplication().scheduleLocalNotification(notification) 

魔法fireDate遅延があり、そしてこの方法が時間内に戻らない場合のiOSアプリを殺す:

私のコードはハンドラに次のようになります。

私が気づいたのは、ローカルの通知を瞬時に起動すると、非常に短時間で表示され、アプリがiOSによって強制終了されると解消されるということです。 6遅延を加えることによって、通知は約50%の時間で表示され、解雇されることはありません。

私が探しているのは、の後、このローカル通知を表示する信頼性の高いソリューションです。どのようにこれを行うにはどのようなアイデア?

+0

あなたはどのようにアプリを殺していますか?アプリケーション切り替えツールを使用して終了した場合、applicationWillTerminateは確実に実行されません。 – Paulw11

+0

@ Paulw11アプリケーションは、アプリケーションマネージャから手動で強制終了されます(ホームボタンを2回押します)。私は、OS自体がアプリを殺すことについてそれほど気にしない。 –

答えて

1

このにもう少し掘りとthis commentを見た後、私はイベント次のローカルの通知を表示するための一貫性のある方法を考え出し :

presentNotification() // see code in original question 
sleep(2) 

私が考えているのは、アプリがローカル通知を表示するよりも速く終了するということだから、sleep(2)と呼んで、アプリを通知を提示できるように少し遅くシャットダウンしました。

ユーザーが手動でアプリケーションをシャットダウンすると、ローカル通知が一貫して表示されるようになりました。 iOSが警告なしにアプリを殺すのをあまり心配しないので、これは私にとっては良い解決策です。

0

aplicationWillTerminateメソッドは、終了時に確実に呼び出されるわけではありません。あなたは、より詳細にそれについて読むことができ、ここで Local notification on application termination

関連する問題