Подписка на канал
Для просмотра канала приложение должно или зарегистрироваться в Агенте PubSub и подписаться на канал, или загрузить канал и использовать платформу Подписки Публикации для парсинга его. В этой главе описываются, как выполнить обе из этих задач, а также как привести предпочтения в соответствие с получением канала.
Генерация клиента
Для регистрации приложения в Подписке Публикации создайте объект клиента. Отправка applicationClient к PSClient класс возвращает объект клиента для текущего приложения, поскольку следующий код показывает.
PSClient *client = [PSClient applicationClient]; |
Можно также создать объект клиента для проверки подачи другого приложения. Для создания этого объекта клиента Вам нужен идентификатор пакета другого приложения. Идентификатор пакета является строкой с помощью соглашения о присвоении имен обратного DNS, однозначно определяющего каждое приложение, использующее Подписку Публикации. Вместо того, чтобы использовать applicationClient метод для создания нового объекта клиента отправить clientForBundleIdentifier: к PSClient класс и передача идентификатор пакета.
Например, для Вашего приложения для просмотра подачи, на которую подписывается Почта Вы использовали бы:
PSClient *mailClient = [PSClient clientForBundleIdentifier:@"com.apple.mail"]; |
Используя подписанный канал
После того, как Ваше приложение имеет свой объект клиента, оно может подписаться на подачу. Во-первых, создайте NSURL объект, содержащий URL к каналу. Затем используйте метод объекта клиента addFeedWithURL: подписать клиент на канал и возвратиться недавно инициализированный PSFeed объект. Код должен быть похожим на Перечисление 3-1. Следует иметь в виду что addFeedWithURL: метод не создает двойные записи в базе данных. Если Вы добавляете тот же канал дважды, Вы получаете те же данные от исходной записи базы данных.
Перечисление 3-1 , Подписывающее клиент на канал
NSURL *url = [NSURL URLWithString: |
@"http://www.apple.com/main/rss/hotnews/hotnews.rss"]; |
PSFeed *feed = [client addFeedWithURL:url]; |
Некоторая подача может потребовать, чтобы имя пользователя и пароль для пользователей получило доступ к ним посредством Аутентификации HTTP. Сохраните информацию авторизации каналом путем установки login свойство канала возражает для имени пользователя и использует setPassword: метод для хранения пароля в цепочке для ключей пользователя по умолчанию. Подписка публикации также использует ту же базу данных cookie в качестве Safari, поэтому если пользователь регистрируется в сайт канала через Safari, Подписка Публикации также имеет доступ. Если Вы не храните информацию авторизации каналом, и пользователь не зарегистрирован через Safari, Агент PubSub запрашивает информацию авторизации от пользователя. Перечисление 3-2 показывает, как сохранить имя пользователя и пароль в объекте канала.
Перечисление 3-2 , Получающее доступ к защищенному каналу
// Place user name and password in NSString objects |
NSString *login = @"username"; |
NSString *password = @"password"; |
// Store the authorization information in the feed |
feed.login = username; |
[feed setPassword: password]; |
Используя канал без подписки
Можно создать объект канала, не подписываясь на канал. В этой ситуации необходимо использовать метод объекта канала initWithURL: и передайте URL канала. См. Перечисление 3-3.
Перечисление 3-3 , инициализирующее a PSFeed объект без подписки
NSURL *url = [NSURL URLWithString: |
@"http://www.apple.com/main/rss/hotnews/hotnews.rss"]; |
PSFeed *feed = [[PSFeed alloc] initWithURL:url]; |
NSError *error; |
[feed refresh:&error]; |
Если бы Вы делаете это, канал автоматически не обновляется, как подписанный канал был бы. Вместо этого Вы используете платформу Подписки Публикации для парсинга канала.
Хранение предпочтений канала
Клиент может подписаться на распределенные питания, но не вся подача обновляются в том же интервале. У Вас может быть один канал, который должен проверяться каждые пять минут, в то время как другой канал только должен обновляться каждые три часа. Точно так же можно хотеть время, оно берет запись для истечения для зависимости от канала. Объекты настроек канала позволяют Вам настраивать предпочтения каждого канала. Каждый объект канала инстанцируют с группой настроек по умолчанию.
Для настройки предпочтений канала получите объект настроек канала любым использованием settings свойство объекта канала, или PSFeedSettings defaultFeedSettings метод класса. Тогда скорректируйте настройки, поскольку Вы считаете целесообразным с различными свойствами. Сохраните обновленные настройки канала в объекте канала.
Перечисление 3-4 получает объект настроек, устанавливает записи для истечения после 30 дней, устанавливает канал для обновления каждые 30 минут, и затем откладывает объект настроек в канале.
Перечисление 3-4 , Изменяющее настройки канала
// Retrieve PSFeedSettings object from feed |
PSFeedSettings *feedSettings = feed.settings; |
// Set entries to expire after 30 days (60 s/m * 60m/h * 24 h/d * 30 d) |
feedSettings.expirationInterval = 2592000; |
// Set feed to check for updates every 30 minutes (60 s/m * 30m) |
feedSettings.refreshInterval = 1800; |
// Store settings back in the feed |
feed.settings = feedSettings; |
Можно также установить настройки канала для клиента. Если Вы делаете, канал, использующий настройки по умолчанию, наследовал настройки клиента вместо по умолчанию. Однако любые настройки, уникальные для канала, переопределяют настройки клиента.
Вы теперь знаете, как создать объект канала для любого веб-канала и привести предпочтения в соответствие с ними. Следующая глава, Просматривая и Получая Содержание, объясняет, как получить записи и другую информацию в канале.