UILocalNotifications を使用して定期的にチェックインするようにユーザーに通知する必要がある iPhone アプリに取り組んでいます。彼らが数時間チェックインしないと、数回通知されるかもしれませんが、最新の通知を表示したいだけです.
これで、アプリが開いている場合、didReceiveLocalNotification:(UILocalNotification *)notification へのコールバックを受け取り、通知が表示されているかどうかを追跡できます。
アプリが実行されていないときにユーザーが -action- ボタンをクリックすると、コールバックが返されます
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
だから私は古い通知を閉じることができます。ただし、「キャンセル」をクリックすると、一連の階層化された通知で「キャンセル」をクリックする必要があります。これは、私が知る限り、コールバックを取得できないためです (アプリが起動されていない場合、どうすればよいでしょうか)。 UILocalNotification を作成するときに、アプリからの新しいリマインダーが自動的に他のリマインダーを破棄するようにするフラグや何かがあるようには見えません。
アプリがバックグラウンドで実行されている場合は、さらに悪いことです。まず、ユーザーがキャンセルをクリックしてもコールバックがまったく得られないため、同じ問題が発生します。ユーザーは何度もキャンセルをクリックする必要があります。次に、ユーザーがアクションをクリックすると、ApplicationDidBecomeActive への呼び出しを受け取りますが、それと、ユーザーが単に切り替えたときとを区別することはできません。ここでそれらを却下して再スケジュールできますが、完全に機能していないようです。却下される前にいくつかのポップアップが表示されることがあります.
助言がありますか?通知が自動的に期限切れになる方法があれば、それも素晴らしいでしょう. 私はオンラインで少し調べましたが、あまり助けが見つかりませんでしたが、大きな見落としのように見えるので、これを適切に処理する方法があることを願っています.
ありがとう。