Регистрация уведомления

Можно отправить уведомления в собственном приложении или сделать их доступными для других приложений. См. Отправляющие Локальные Уведомления для прежнего и Регистрации Распределенных Уведомлений для последнего.

Регистрация локальных уведомлений

Можно создать объект уведомления с notificationWithName:object: или notificationWithName:object:userInfo:. Вы тогда отправляете объект уведомления на центр уведомления использование postNotification: метод экземпляра. NSNotification объекты являются неизменными, поэтому когда-то создаваемые, они не могут быть изменены.

Однако Вы обычно не создаете свои собственные уведомления непосредственно. Методы postNotificationName:object: и postNotificationName:object:userInfo: из NSNotificationCenter класс позволяет Вам удобно отправлять уведомление, не создавая его сначала.

В каждом случае Вы обычно отправляете уведомление центру уведомления процесса по умолчанию. Вы получаете объект по умолчанию с помощью defaultCenter метод класса.

Как пример использования центра уведомления для регистрации уведомления рассмотрите пример от Регистрации для Локальных Уведомлений. У Вас есть программа, которая может выполнить много преобразований на тексте (например, RTF к ASCII). Преобразования обрабатываются классом объектов (Converter) это может быть добавлено или удалено во время реализации программы. Ваша программа может иметь другие объекты, хотящие быть уведомленными, когда преобразователи добавлены или демонтированы, но Converter объекты не должны знать, кто эти объекты или что они делают. Вы таким образом объявляете два уведомления, "ConverterAdded" и "ConverterRemoved", когда данное событие имеет место, который Вы отправляете.

Когда пользователь устанавливает или демонтирует преобразователь, он отправляет одно из следующих сообщений в центр уведомления:

[[NSNotificationCenter defaultCenter]
    postNotificationName:@"ConverterAdded" object:self];

или

[[NSNotificationCenter defaultCenter]
    postNotificationName:@"ConverterRemoved" object:self];

Центр уведомления тогда идентифицирует, какие объекты (если таковые имеются) интересуются этими уведомлениями, и уведомляет их.

Если существуют другие предметы интереса наблюдателю (помимо имени уведомления и наблюдаемого объекта), размещают их в дополнительный словарь или использование уведомления postNotificationName:object:userInfo:.

Регистрация распределенных уведомлений

Регистрация распределенных уведомлений является почти такой же что касается регистрации локальных уведомлений. Можно создать NSNotification возразите вручную и сообщение с postNotification: или используйте один из NSDistributedNotificationCenter удобные методы. Единственные различия - то, что объект уведомления должен быть строковым объектом, и дополнительный словарь пользовательской информации может содержать только объекты списка свойств, такой как NSString и NSNumber.

Наблюдатель данного уведомления может быть в состоянии ожидания и не обработке уведомлений сразу. Если объект, отправляющий уведомление, хочет гарантировать, чтобы все наблюдатели сразу получили уведомление (например, если уведомление является предупреждением, что сервер собирается закрыться), это может вызвать postNotificationName:object:userInfo:deliverImmediately: с deliverImmediately:YES. Центр уведомления поставляет уведомление, как будто наблюдатели зарегистрировались в NSNotificationSuspensionBehaviorDeliverImmediately (далее описанный в Регистрации для Распределенных Уведомлений). Поставка не гарантируется, как бы то ни было. Например, процесс, получающий уведомления, может быть слишком занятым, чтобы обработать и принять поставленные в очередь уведомления. В этом случае уведомление отбрасывается.