うるおいらんど

アプリ開発やサイト制作のメモとか。

UILocalNotificationでローカル通知を実装する【Swift】

魚ライン
魚ライン

ローカル通知実装できたので書いていきます。

今回実装したローカル通知は、アプリを閉じた(orバックグラウンド)状態の日時から曜日を指定して、その日の指定した時間に通知を送るというものです。

ちょっとややこしいですが、アプリを閉じた時が3月18日金曜日12:00(今日とします)だった場合に、次の火曜日の12:00に通知を送ろう!ということです。

この場合だと3/18(金)にアプリを閉じ、その後3/22(火)の12時に通知がくるよ!ということです。

説明が下手で申し訳ないです。。。

 

今回はこちらの本を参考に

 

UIKit&Swiftプログラミング 優れたiPhoneアプリ開発のためのUI実装ガイド

 

ローカル通知の基本

まずは適当にローカル通知をAppDelegateに実装していきます。


まずはユーザーに通知許可をもらうためのコードをかきます。

iOS8以上とiOS7以前で書き方が少しだけ違うので場合分けしておきます。

とりあえずはアラートとサウンドとバッジの全部盛りで

 

次にアプリがバックグラウンドにいったときに通知の設定をします

 

とりあえずこれだけで通知が来るようになります!意外と簡単!

ただしこれは10秒後に通知が来るというだけなのであまり実用性はないです。。。

ここを24時間後〜とかにすればこれだけでも活用できそう

 

アプリを開いたときにバッジを0に戻す

上記のままだと通知がきて、アプリを開いてもバッジは消えません。

今回はとりあえず、通知から起動したときとアプリを開いたときの両方の場合でバッジを0に戻します。

 

まずは通知からアプリに戻ってきたとき(アプリがバックグラウンドにあるとき)

 

active時に通知が来たときもバッジが1に変わっていたので、とりあえずそこも0に戻すようにしてあります。

 

アプリがバックグラウンドになく、閉じられた状態から通知で復帰したとき

 

通知からアプリの戻ってきた場合に何か処理を行ったり、アラートを出す場合には上記の2箇所に処理をかきます。

今回はアプリが開いた時点なのであまり復帰したかどうかは関係ない気もしますが・・・。

 

アプリを開いたときにバッジを0にする(バックグラウンドからフォアグラウンドへ)

 

バッジが0じゃなかったら0にする〜って書いています。

あとは

 

こんな感じでちょっと強引な気もしますが。

バックグラウンドにアプリがある状態とない状態で書く場所が違うので注意です。

 

新しく通知を追加するときに古い通知を削除する

このままだとアプリを何度も開いたり閉じたりすると、何回も何回も通知が来てしまうので、新しく通知を作成する場合はそれまでの通知を削除するようにします。

cancelAllLocationNotifications()で全ての通知が削除されます。

IDを検索して指定したものだけ消すことも可能です。

 

これでとりあえず通知は完了です。

あとは通知される時間、のところをカスタマイズするだけです。

 

通知される時間を指定する(次の月曜日12:00)

現在の日時から次の月曜日12時に通知が行くようにします。

まずは適当にswiftファイルを作成して曜日をenumで数字でわかりやすくしておきます。

week.swiftを作成

 

そして次の月曜日12時を算出するクラスを作ります。

NextWeek.swiftを作成

 

あとはローカル通知のところを

としてあげると次の月曜日に通知が行くはず。

確認は、設定アプリより一般>日付と時刻で自動設定をオフにして時刻を指定して確認してみましょう。

 

その他の曜日も必要に応じてコピペして下記のようにライン部分を変更すれば対応できます(例:火曜日)

 

あとは条件文で必要に応じてローカル通知を呼び出してあげればoKです。

 

曜日指定に関してはこちらの記事を参考にさせていただきました!

[swift]挫折しながら覚えるiOS開発その11 ローカルプッシュ通知(UILocalNotification)の追加

(というかむしろこちらのがわかりやすいと思うのでぜひ)

componentsの書き方がちょっと違うくらいです。

 

その他のローカル通知に関するその他のことなどは詳しくこちらの本に書かれています。データ保存のやり方とかもかいてあるのでなかなか活用させていただいてます!

UIKit&Swiftプログラミング 優れたiPhoneアプリ開発のためのUI実装ガイド

 

Swiftのバージョンが上がっているのちょっと書き方が変わっているところもありますが、それでも十分にお勧めできます〜〜

 

全体コードはちょっと割愛。ではでは

魚ライン
モッピー!お金がたまるポイントサイト
魚ライン

Swiftの記事一覧を見る

コメント

頭
アバター

尻尾

参考になりました!ありがとうございます!

コメントは認証制です。詳しくは下記の注意をお読みください。

コメントを残す

コメント時の注意

「Twitter」「Facebook」「Google+」「WordPress」のいずれかのアカウントをお持ちの方は各アカウントと連携することでコメントできます。 コメントしたことはSNSに流れませんので、アカウントをお持ちの方はこちらの方法でコメントを投稿して下さると嬉しいです。 アカウントをお持ちでない方はメールアドレスで投稿することができます。 初回コメント時は承認後に表示されます。

魚ライン 魚ライン