Чтение онлайн

на главную - закладки

Жанры

iOS. Приемы программирования

Нахавандипур Вандад

Шрифт:

Когда подобное приложение работает в новой версии iOS, оно получит следующие сообщения делегата.

1. application: didFinishLaunchingWithOptions:.

2. applicationDidBecomeActive:.

Если пользователь нажмет на устройстве кнопку Home (Домой), то делегату будут отправлены следующие сообщения.

1. applicationDidEnterBackground:.

2. applicationWillTerminate:.

Глава 15. Уведомления

15.0. Введение

Уведомления — это объекты, несущие определенную информацию,

которая может передаваться множеству получателей методом широковещания. Уведомления очень удобны для разделения работы на относительно самостоятельные фрагменты кода, но при злоупотреблении ими ситуация легко может выйти из-под контроля. Следует понимать границы возможностей при работе с уведомлениями. В этой главе мы подробно поговорим об использовании уведомлений и узнаем, когда лучше обходиться без них.

В iOS доступны уведомления трех типов.

• Обычное уведомление (экземпляр класса NSNotification). Это обычное уведомление. Программа может широковещательно передавать его любым получателям в рамках приложения. iOS также широковещательно направляет вашему приложению уведомления такого типа, пока приложение находится в приоритетном режиме. Таким образом приложение получает информацию о различных системных событиях, происходящих во время его работы, например о выводе виртуальной клавиатуры на экран и ее уходе с экрана. Эти уведомления хорошо подходят для ослабления связанности кода и позволяют аккуратно отделять друг от друга различные компоненты сложного iOS-приложения.

 Локальное уведомление (экземпляр класса UILocalNotification). Это уведомление, которое должно быть доставлено вашему приложению в определенный момент времени. Приложение сможет его получить, даже если находится в фоновом режиме или не работает вообще. Если приложение не работало, но получило такое уведомление, то оно запускается. Как правило, вы назначаете локальное уведомление, если хотите гарантированно разбудить приложение (предполагается, что пользователь разрешил вам такое действие, подробнее об этом — в дальнейшем) в определенный момент дня.

 Пуш-уведомление. Такое уведомление отсылается на устройство iOS с сервера. Это уведомление выполняется по инициативе сервера, поэтому приложению не приходится опрашивать сервер на наличие таких уведомлений. iOS поддерживает постоянное соединение с серверами APNS (службы Apple для обеспечения пуш-уведомлений). Как только появляется новое пуш-уведомление, iOS обрабатывает сообщение и отсылает его тому приложению, которому это уведомление предназначалось.

Далее мы будем называть обычные уведомления просто уведомлениями. Слово «обычный» в данном контексте избыточно.

Особенность локальных уведомлений заключается в том, что они видны пользователю и пользователь может совершать над ними те или иные действия. iOS зафиксирует действие пользователя, после чего прикажет вашему приложению обработать это действие. В то же время уведомления являются невидимыми элементами. В приложении их можно распространять широковещательным способом, и приложение обязано обрабатывать эти уведомления. Пользователь не обязательно должен быть непосредственно вовлечен в этот процесс, если вы сами не потребуете от него каких-либо действий в результате получения и обработки уведомления. Например, приложение может послать уведомление в другую часть этого же уведомления. По получении такого уведомления в другой части вашего приложения генерируется диалоговое окно с предупреждением.

После этого уже требуется вмешательство пользователя: он должен ознакомиться с этим окном и, например, нажать в нем кнопку ОК, чтобы закрыть его. Такое непрямое вовлечение пользователя очень отличается от его непосредственного участия, которое требуется при работе с обычными уведомлениями.

Уведомления — важнейшая составляющая операционных систем iOS и OS X. iOS выдает уведомления, действующие в масштабах всей системы. Эти уведомления адресуются всем приложениям в системе, которые их слушают, и сами приложения также могут отсылать уведомления. Такое уведомление, действующее в масштабах всей системы (также называемое распределенным), может выдаваться только самой системой iOS.

Уведомление — это простая сущность, представленная в iOS SDK классом NSNotification. Уведомление отсылается объектом и может нести информацию. Объект, отсылающий уведомление, «представляет себя» центру уведомления в момент самой отправки уведомления. Затем получатель уведомления может «справиться» об отправителе по его имени класса для получения более подробной информации об этом объекте. Объект-отправитель называется объектом уведомления. Кроме того, уведомление может включать в себя словарь с пользовательской информацией. Это словарная структура данных, которая может нести дополнительную информацию об уведомлении. Если словарь не предоставляется, то этот параметр равен nil.

15.1. Отправка уведомлений

Постановка задачи

Требуется разграничить части вашего приложения и отправить уведомление, которое может быть подхвачено другим компонентом приложения.

Решение

Создайте экземпляр класса NSNotification и широковещательно передайте его вашему приложению, воспользовавшись методом класса postNotification:. Вы можете получить экземпляр центра уведомлений, воспользовавшись его методом класса defaultCenter, вот так:

#import «AppDelegate.h»

NSString *const kNotificationName = @"NotificationNameGoesHere";

@implementation AppDelegate

— (BOOL) application:(UIApplication *)application

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

NSNotification *notification = [NSNotification

notificationWithName: kNotificationName

object: self

userInfo:@{@"Key 1": @"Value 1",

@"Key 2": @2}];

[[NSNotificationCenter defaultCenter] postNotification: notification];

self.window = [[UIWindow alloc]

initWithFrame: [[UIScreen mainScreen] bounds]];

self.window.backgroundColor = [UIColor whiteColor];

[self.window makeKeyAndVisible];

return YES;

Поделиться:
Популярные книги

Часовая башня

Щерба Наталья Васильевна
3. Часодеи
Фантастика:
фэнтези
9.43
рейтинг книги
Часовая башня

Попаданка в Измену или замуж за дракона

Жарова Анита
Любовные романы:
любовно-фантастические романы
6.25
рейтинг книги
Попаданка в Измену или замуж за дракона

На границе империй. Том 9. Часть 3

INDIGO
16. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 9. Часть 3

Жена на пробу, или Хозяйка проклятого замка

Васина Илана
Фантастика:
попаданцы
фэнтези
5.00
рейтинг книги
Жена на пробу, или Хозяйка проклятого замка

Ваше Сиятельство

Моури Эрли
1. Ваше Сиятельство
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Ваше Сиятельство

Восход. Солнцев. Книга I

Скабер Артемий
1. Голос Бога
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Восход. Солнцев. Книга I

Инвестиго, из медика в маги

Рэд Илья
1. Инвестиго
Фантастика:
фэнтези
городское фэнтези
попаданцы
5.00
рейтинг книги
Инвестиго, из медика в маги

Надуй щеки!

Вишневский Сергей Викторович
1. Чеболь за партой
Фантастика:
попаданцы
дорама
5.00
рейтинг книги
Надуй щеки!

Случайная свадьба (+ Бонус)

Тоцка Тала
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Случайная свадьба (+ Бонус)

Газлайтер. Том 5

Володин Григорий
5. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 5

Мастер Разума III

Кронос Александр
3. Мастер Разума
Фантастика:
героическая фантастика
попаданцы
аниме
5.25
рейтинг книги
Мастер Разума III

Наследник 2

Шимохин Дмитрий
2. Старицкий
Фантастика:
попаданцы
альтернативная история
фэнтези
5.75
рейтинг книги
Наследник 2

Неучтенный. Дилогия

Муравьёв Константин Николаевич
Неучтенный
Фантастика:
боевая фантастика
попаданцы
7.98
рейтинг книги
Неучтенный. Дилогия

Светлая тьма. Советник

Шмаков Алексей Семенович
6. Светлая Тьма
Фантастика:
юмористическое фэнтези
городское фэнтези
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Светлая тьма. Советник