通知の送信
あなた自身のアプリケーション内に通知を送信したり、他のアプリケーションが通知を利用できるようにすることができます。前者については ローカル通知の送信 を、後者については 分散通知の送信 を参照してください。
ローカル通知の送信
notificationWithName:object: または notificationWithName:object:userInfo: で通知オブジェクトを作成できます。次に、postNotification: インスタンスメソッドを使用して、通知オブジェクトを通知センターに送信します。 NSNotification オブジェクトは不変なので、一度作成すると変更できません。
ただし、通常は独自の通知を直接作成することはありません。NSNotificationCenter クラスのメソッド postNotificationName:object: および postNotificationName:object:userInfo: を使用すると、通知を最初に作成せずに簡単に送信できます。
いずれの場合も、通常、通知はプロセスのデフォルト通知センターに送信して下さい。 defaultCenter クラス・メソッドを使用して、デフォルト・オブジェクトを取得します。
通知センターを使用して通知を送信する例として、ローカル通知の登録 の例を参照してください。あなたには、テキスト (例えば、RTF から ASCII へ) の多くの変換を実行できるプログラムがあります。変換は、プログラムの実行中に追加または削除できるオブジェクト (Converter) のクラスによって処理されます。あなたのプログラムには、コンバーターが追加または削除されたときに通知される他のオブジェクトがあるかもしれませんが、converter オブジェクトは、これらのオブジェクトが誰であるか、または何をするかを知る必要はありません。したがって、指定されたイベントが発生したときに送信する 2 つの通知 "ConverterAdded" と "ConverterRemoved" を宣言して下さい。
ユーザーがコンバータ (converter) をインストールまたは削除すると、以下のいずれかのメッセージが通知センターに送信されます。
[[NSNotificationCenter defaultCenter] postNotificationName:@"ConverterAdded" object:self];
または
[[NSNotificationCenter defaultCenter] postNotificationName:@"ConverterRemoved" object:self];
通知センターは、これらの通知に関心のあるオブジェクト (もしあれば) を識別し、それらを通知します。
監視者 (通知名と監視オブジェクトのほかに) に関心のある他のオブジェクトがある場合、それらを通知の optional の辞書に入れるか、postNotificationName:object:userInfo: を使用します。
分散通知の送信
分散通知を送信することは、ローカル通知を送信することとほぼ同じです。手動で NSNotification オブジェクトを作成し、postNotification で送信できます。また、NSDistributedNotificationCenter のコンビニエンスメソッドの 1 つを使用できます。唯一の違いは、通知オブジェクトは文字列オブジェクトでなければならず、optional なユーザー情報辞書には NSString や NSNumber などのプロパティリストオブジェクトのみを含めることができる点です。
特定の通知の監視者は、中断状態にあり、通知をすぐに処理しない可能性があります。通知を送信するオブジェクトが、すべての監視者が通知をすぐに受け取るようにしたい場合 (たとえば、サーバーがシャットダウンしようとしているという警告の通知である場合)、postNotificationName:object:userInfo:deliverImmediately: を deliverImmediately:YES で呼び出すことができます。通知センターは、監視者がNSNotificationSuspensionBehaviorDeliverImmediately で登録しているかのように通知を配信します (詳細は 分散通知の登録 を参照の事)。ただし、配達は保証されません。たとえば、通知を受信するプロセスがビジー状態で、キューに入れられた通知を処理して受け入れることができない場合があります。この場合、通知は破棄されます。