まるのヘタレ日記

技術ビビリなSEが、覚えた事を記述し、次回以降はびびらないで済むように復習します。

Objective-Cでの通知の種類について

Objective-C 通知」でぐぐった際、
なかなか思ったものにたどりつけかったので、
iOSプログラミングで使用する通知についてまとめてみる。

Objective-Cで通知といった場合、以下にあげる三種類がある
・ローカル通知
・プッシュ通知
・通知センター

ローカル通知とプッシュ通知は、
ユーザから見るとほぼ同じように見えるが、
実装方法は大きく異なる。
A new picture

ローカル通知

アプリのみで実装可能なため、難しい内容は無い。
以下のようなケースがローカル通知になる
・タイマー等により、一定時間後にユーザに通知するケース
・アプリがバックグラウンドで動いてる際、
 一定の条件でユーザに通知するケース

ざっくり言うと、
ユーザとAppのみで通知タイミングが決定出来る場合はローカル通知になる。

実装方法は、
「UILocalNotification」でぐぐると出てくる。

以下のサンプルが非常にわかりやすかった。
Local Notification サンプルプログラム - iPhoneプログラミング広場

プッシュ通知

LINEみたいなやつ。
サーバーが送信したメッセージをiOS端末に通知表示する。
実装するにあたり、以下が必要になる。
・自前で用意したサーバー
 アップルサーバーとプッシュ通知依頼する際に使用する。
・証明書
 アップルサーバとSSL通信する際に使用する。
 証明書発行にあたり、有料のiOSデベロッパーである必要がある。
・ユーザの承認
 デバイストークンの発行にあたり必要。
 アプリの初回起動時、確認アラートが表示される。

ローカル通知と異なり、サーバ側のタイミングで通知できるため、
以下のようなケースで使用されている
・LINEのように、サーバ経由でメッセージやりとりを行うアプリ
・JR列車運行情報のように、任意のタイミングでを配信するアプリ

実装の流れを簡単にまとめると、以下のようになる

準備

1.ユーザがプッシュ通知を承認し、デバイストークンが発行される
2.iOS端末から自前サーバにデバイストークンを送信する。
3.受信した自前サーバ上にデバイストークンをDB等に保存する

プッシュ通知の実行

1.サーバーはプッシュ通知したいタイミングでアップルサーバに、
 メッセージとデバイストークンを送信する
2.アップルサーバは、受信したデバイストークンの端末に対し、
 メッセージを送信する
3.メッセージっを受信したiOS端末上に通知が表示される。


実装方法は、
「Push Notification」とか「Objective-C プッシュ通知」でぐぐると出てくる。
実装した事ないので詳細は分からないけど、
サーバはRubyとかPHPのサンプルが多かった。

通知センター

ユーザに触れる事のないプログラミング手法
[Aメソッドが呼ばれたら、Bメソッドを呼ぶ]
って事をしたい時に使う。
用途としてはデリゲートに似てると思う。
実装方法は、
NSNotificationCenterでぐぐると出てくる。

所感

最近使ったアプリで以下のアプリが素敵だった。

ドクターイエローが走りそうな日にプッシュ通知してくれる。
凄いニッチだけど、プッシュ通知には最適な内容だなーと。
一度プッシュ通知を実装してみたい。