私のアプリ(接頭辞「AAS」)は、基本的に、プレイしていない毎日ユーザーがポイントを失うゲームです。私はUILocalNotificationsを使用して、ユーザーにポイントを失ったことを知らせ、プレイバックに招待します。私のView Controllerの1つは、ポイントが変更されたときに表示され、アプリが開いている間にUILocalNotificationが起動されたときにNSNotificationを送信するのは簡単です。スケジュールされたNSNotification(UILocalNotificationの代わりに)...迅速なソリューション?
func application(application: UIApplication, didReceiveLocalNotification notification: UILocalNotification) {
if notification.userInfo != nil {
if let notificationName = notification.userInfo![AASNotification.ActionKey] as? String {
NSNotificationCenter.defaultCenter().postNotificationName(notificationName, object: nil, userInfo: nil)
}
}
}
無効になった後にアプリケーションを再度開くと、クラスの1つが失われたポイントの数が計算されます。すばらしいです。 Bulletproofは、ユーザーが自分のアプリケーションでNotificationCenterを使用できないことを除いて、通知が発生したときにアプリが開いていれば更新されません。このケースでは、自分のアプリが開いている間にUILocalNotificationをある程度まで模倣する予定の通知キューを独自に実装しました。しかし、私は誰かが以前にこの問題を抱えていたに違いないと思っていました。おそらくそれのためのココアポッドがあります。
私のコミュニティへの質問は誰かがタイムドNSNotificationsを発送するライブラリを知っていますか?または、この問題に対する別のアプローチですか?
https://github.com/JamesPerlman/JPScheduledNotificationCenter
私はプロで符号化され、十分にテストされ、機能豊富なものを使用してみたいHere's my solution, which is barebones and works for the purpose I need:。(私はこの要求がSOの話題ではないことに気付きました)
編集: 任意の日付に発射されるNSNotificationの任意の量をキューに入れたいと思っています。明らかに、NSNotificationsは開いている間だけ私のアプリケーションで受信することができます。それは問題ありません。私はNSNotificationごとに1つのNSTimer(実行ループ上の何百ものNSTimerになる可能性があります)を使用することの費用を知らないので、私のソリューションは一度に1つのNSTimerしか使用しません。 UINotificationsのようにNSNotificationをスケジュールしたり取り消したりできます。
アプリを開いてその時点で必要なポイントを差し引いたときに最後にプレイした時間を確認するだけでは機能しませんか? –
私はそれを行い、また、アプリが開いている間にポイントが差し引かれた場合についても説明したいと思います。 – jperl
どのように変化しますか?あなたが走っている時は、タイマーをセットするか(または 'UIApplicationSignificantTimeChangeNotification'を使います)。あなたがバックグラウンドから戻ったり、立ち上げられたりしたら、どれくらい離れていたかを確認してください。 「何もしなかった」とマークするだけで、アプリを起動する時間と電池寿命を無駄にする理由はまったくありません。 (ライブラリの推奨事項などのオフサイトリソースの推奨事項は、StackOverflowの話題にはならないことに注意してください。) –