You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Jun 20, 2023. It is now read-only.
TODOアプリを作ってみようシリーズの第4回目の演習課題その2です。
内容
#5 に引き続き、この回ではTODOの締切日時になったら通知を出すようにします。
目的
UILocalNotificationについて理解する
スタート地点
前回のゴール地点であるブランチadd-deadlineからスタートします
ゴール地点
ブランチ local-notificationにチェックアウトすると解答を見ることができます
アプリの仕様
TODOの締切日時になったら端末から通知が表示されるようにします。
実装の方針
通知にはサーバーから通知を行うPush通知と、端末内で完結するUILocalNotificatoinの2種類があります。この二つの通知について見た目上の違いはありませんが、通知を送る元がサーバーか、アプリがインストールされている端末か、の違いがあります。
Push通知はシミュレータで利用できず、iOS Developer Programに登録しないと利用できないのと、Push通知を送るバックエンドを別途用意しないといけませ。UILocalNotificationはある位置に入った、あるいは時刻をトリガーとして通知を行います。
今回のケースではUILocalNotificationが適しているので、UILocalNotificationを利用します。
UILocalNotificationについては教材である 5. UILocalNotification に詳しく書いていますが、以下のステップで実装を行います。
実装の解説
ToDoのローカル通知を行うようにした f852031
まず、通知を出すことについて許諾を得る必要があります。これはアプリ起動時などでも構いませんが、アプリ起動時にいきなり
このようなアラートが出た場合、反射的に "Don't allow" と押してしまうユーザーも多くいます。
ここで許諾を得られない場合、通知を受けるのが非常に難しくなります。
(ユーザー自身が、設定から修正しないといけない)
そのため、通知されることに納得のいくタイミングで表示することが望ましいです。
今回はTODOを追加したタイミングでそのことをユーザーに許諾を得ればよさそうです。
そこで、TODO新規追加のコールバック関数内で以下のような処理を行います。
という手順になります。
通知の許諾を得たことを知らせるコールバック関数は appDelegateにあります。
この関数からViewControllerに知らせる必要がありますが、今回はNSNotificationを利用してプロセス内に通知します。
The text was updated successfully, but these errors were encountered: