UILocalNotificationいじったメモ

UILocalNotificationというのは、アプリケーションがiOS内で通知できる機能。日時、メッセージ(音、バッジ)など指定できる。


通知というのは単なるアラートではない。そのアプリを動かしていないときでも、にょき、とでてきてくれるやつである。


自分がやりたいなと思ったのは、「これから1時間、10分おきに通知をだす」というようなもの。


まずは「10秒ごとに3回」ができりゃーいいかなと。え、それじゃあタイマーと何が違うんだ? と混乱したが、違う、タイマーはアプリが動いてないとだめだから。


10秒3回にするのに、最初、通知が一つでたら次を作っていた


通知を作る=>時間がくる=>ユーザが反応する=>次の通知を作る


これじゃあ全然10秒ごとでないでやんす。最初に3つ全部作っておかなければあかんのじゃないかと思い、10秒後、20秒後、30秒後の3つの通知を作っておく。これで多分いい。


だがしかし、途中で止めたいときはどうすんの? である。調べると http://stackoverflow.com/questions/3158264/cancel-uilocalnotification/3334028 とか。

  • 全部消す
  • 特定のものだけ消す


特定のものだけ消すには、ユニークなIDをいれといてもっとけばいいぜ! って感じなんだが、IDはどうやって作ろう。CoreDataとかまだ使ってないし。


画面からは、時間と回数とメッセージを入れられるようにしていたので、主に時間をつかってユニークな文字列を作ってみた。そのIDは、通知ごとに個別になる。削除は「10秒ごと3回」なので、3つまとめて消すとか、1回通知して残り2回を消したいとか。

なので、今回は3つのIDをNSUserDefaultsにNSDictionaryでいれておいて、ひっぱることにした。でもちゃんと作るならCoreDataとか使うからこんなのいらんかな。


て結局、UILocalNotificationのメモというか、どうやってそれを制御するかという話になると別のところの話じゃねーか。


そういえば音はならさずにぶるぶるだけ、とかしたいんだけどできるのかな?