CKSubscription
Используйте a CKSubscription
возразите для отслеживания изменений, происходящих на сервере. Подписка действует как персистентный запрос на сервер, который может отследить создание, удаление и модификацию записей. Когда изменения происходят, они инициировали поставку уведомлений нажатия так, чтобы Ваше приложение могло ответить соответственно.
Объекты подписки не становятся активными, пока Вы не сохраняете их к серверу, и сервер имеет время для индексации их. Для сохранения объекта подписки используйте a CKModifySubscriptionsOperation
возразите или saveSubscription:completionHandler:
метод CKDatabase
. Для аннулирования подписки удалите соответствующий объект подписки из сервера.
Во время инициализации происходит большая часть конфигурации для объектов подписки. Единственная другая часть конфигурации для выполнения должна указать, как поставить уведомления нажатия устройству пользователя. Используйте notificationInfo
свойство этого объекта сконфигурировать варианты доставки уведомления нажатия. Необходимо сохранить объект подписки к базе данных, прежде чем изменения вступят в силу.
Обработка получающихся уведомлений нажатия
Когда рекордная модификация заставляет подписку стрелять, сервер отправляет уведомления нажатия всем устройствам с той подпиской за исключением той, внесшей исходное изменение в запись. Для сгенерированных подпиской уведомлений нажатия сервер может добавить данные к полезной нагрузке уведомления, указывающей условие, инициировавшее уведомление. В application:didReceiveRemoteNotification:fetchCompletionHandler:
метод Вашего делегата приложения, предоставленного userInfo
словарь содержит a CKNotificationInfoAppDataKey
ключ с соответствующей информацией подписки. Значение этого ключа является другим словарем, содержание которого идентифицирует причину уведомления и соответствующего контейнера или записи.
В дополнение к отправке рекордного ID с уведомлением нажатия можно попросить, чтобы сервер отправил ограниченный объем данных от записи, инициировавшей уведомление. В CKNotificationInfo
объект Вы присваиваетесь к своей подписке notificationInfo
свойство, можно использовать desiredKeys
свойство для указания одного или более ключей для включения в уведомление.
Поскольку уведомления нажатия имеют ограниченный размер полезной нагрузки, сервер может опустить ключи и другие части данных для хранения полезной нагрузки под максимальным пределом. Если это происходит, можно выбрать всю полезную нагрузку данных от сервера с a CKFetchNotificationChangesOperation
объект. Тот объект операции возвращает экземпляры CKQueryNotification
или CKRecordZoneNotification
классы, предоставляющие информацию об уведомлениях нажатия, поставленных Вашему приложению.
Соответствует
-
AnyObject
-
CVarArgType
-
Сопоставимый
-
Hashable
-
NSCoding
-
NSCopying
-
NSObjectProtocol
-
NSSecureCoding
-
Печатаемый
-
NSCopying
-
NSObject
-
NSSecureCoding
Оператор импорта
Swift
import CloudKit
Objective C
@import CloudKit;
Доступность
Доступный в OS X v10.10 и позже.
-
Инициализирует и возвращает основанную на запросе подписку, контролирующую записи с указанными опциями.
Объявление
Swift
convenience init!(recordType
recordType
: String!, predicatepredicate
: NSPredicate!, optionssubscriptionOptions
: CKSubscriptionOptions)Objective C
- (instancetype)initWithRecordType:(NSString *)
recordType
predicate:(NSPredicate *)predicate
options:(CKSubscriptionOptions)subscriptionOptions
Параметры
recordType
Строка, идентифицирующая тип записей на дорожку. Вы ответственны за именование типов записи Вашего приложения. Этот параметр не должен быть
nil
или пустая строка.predicate
Соответствующие критерии для применения к записям. Этот параметр не должен быть
nil
. Для получения информации об операторах, поддерживающихся в поисковых предикатах, посмотрите обсуждение в Ссылке класса CKQuery.subscriptionOptions
Битовая маска параметров конфигурации для подписки. Необходимо указать по крайней мере одно из следующих значений:
CKSubscriptionOptionsFiresOnRecordCreation
,CKSubscriptionOptionsFiresOnRecordUpdate
, илиCKSubscriptionOptionsFiresOnRecordDeletion
.Возвращаемое значение
Объект подписки, инициализированный к связанным с достижениями изменениям.
Обсуждение
Объект, возвращенный этим методом, сконфигурирован как основанная на запросе подписка для поиска записей в целевой базе данных. Когда критерии поиска удовлетворены, подписка контролирует указанный тип записей во всех рекордных зонах пользователя и генерирует уведомления нажатия.
Оператор импорта
Objective C
@import CloudKit;
Swift
import CloudKit
Доступность
Доступный в OS X v10.10 и позже.
-
init (recordType:predicate:subscriptionID:options:) - initWithRecordType:predicate:subscriptionID:options:
Определяемый инициализаторИнициализирует и возвращается, основанная на запросе подписка возражают, что записи мониторов и имеют собственное имя.
Объявление
Swift
init!(recordType
recordType
: String!, predicatepredicate
: NSPredicate!, subscriptionIDsubscriptionID
: String!, optionssubscriptionOptions
: CKSubscriptionOptions)Objective C
- (instancetype)initWithRecordType:(NSString *)
recordType
predicate:(NSPredicate *)predicate
subscriptionID:(NSString *)subscriptionID
options:(CKSubscriptionOptions)subscriptionOptions
Параметры
recordType
Строка, идентифицирующая тип записей на дорожку. Вы используете строки типа записи для дифференциации среди различных типов записей в приложении. Этот параметр не должен быть
nil
или пустая строка.predicate
Соответствующие критерии для применения к записям. Этот параметр не должен быть
nil
. Для получения информации об операторах, поддерживающихся в поисковых предикатах, посмотрите обсуждение в Ссылке класса CKQuery.subscriptionID
Уникальное имя подписки. Эта строка должна быть уникальной в указанной базе данных и не должна быть
nil
.subscriptionOptions
Битовая маска параметров конфигурации для подписки. Необходимо указать по крайней мере одно из следующих значений:
CKSubscriptionOptionsFiresOnRecordCreation
,CKSubscriptionOptionsFiresOnRecordUpdate
, илиCKSubscriptionOptionsFiresOnRecordDeletion
.Возвращаемое значение
Объект подписки, инициализированный к связанным с достижениями изменениям.
Обсуждение
Объект, возвращенный этим методом, сконфигурирован как основанная на запросе подписка для поиска записей в целевой базе данных. Когда критерии поиска удовлетворены, подписка контролирует указанный тип записей во всех рекордных зонах пользователя и генерирует уведомления нажатия.
Оператор импорта
Objective C
@import CloudKit;
Swift
import CloudKit
Доступность
Доступный в OS X v10.10 и позже.
-
Инициализирует и возвращается, подписка возражают, что контролирует все записи в указанной рекордной зоне.
Объявление
Swift
convenience init!(zoneID
zoneID
: CKRecordZoneID!, optionssubscriptionOptions
: CKSubscriptionOptions)Objective C
- (instancetype)initWithZoneID:(CKRecordZoneID *)
zoneID
options:(CKSubscriptionOptions)subscriptionOptions
Параметры
zoneID
ID рекордной зоны, содержащей записи, Вы хотите контролировать. Этот параметр не должен быть
nil
.subscriptionOptions
Параметры конфигурации для подписки. Необходимо указать
0
для этого параметра. Зональные подписки в настоящее время не поддерживают опций.Возвращаемое значение
Объект подписки, инициализированный для отслеживания изменений в содержании рекордной зоны.
Обсуждение
Объект, возвращенный этим методом, сконфигурирован как зональная подписка, генерирующая уведомление нажатия, когда любые изменения внесены в записи в указанной зоне.
Оператор импорта
Objective C
@import CloudKit;
Swift
import CloudKit
Доступность
Доступный в OS X v10.10 и позже.
См. также
-
init (zoneID:subscriptionID:options:) - initWithZoneID:subscriptionID:options:
Определяемый инициализаторИнициализирует и возвращается, подписка возражают, что контролирует указанную зону и имеет пользовательское имя, которое Вы обеспечиваете.
Объявление
Swift
init!(zoneID
zoneID
: CKRecordZoneID!, subscriptionIDsubscriptionID
: String!, optionssubscriptionOptions
: CKSubscriptionOptions)Objective C
- (instancetype)initWithZoneID:(CKRecordZoneID *)
zoneID
subscriptionID:(NSString *)subscriptionID
options:(CKSubscriptionOptions)subscriptionOptions
Параметры
zoneID
ID рекордной зоны, содержащей записи, Вы хотите контролировать. Этот параметр не должен быть
nil
.subscriptionID
Уникальное имя объекта подписки. Эта строка должна быть уникальной для всех других объектов подписки в контейнере. Этот параметр не должен быть
nil
.subscriptionOptions
Параметры конфигурации для подписки. Необходимо указать
0
для этого параметра. Зональные подписки в настоящее время не поддерживают опций.Возвращаемое значение
Объект подписки, инициализированный для отслеживания изменений в содержании рекордной зоны.
Обсуждение
Объект, возвращенный этим методом, сконфигурирован как зональная подписка, генерирующая уведомление нажатия, когда любые изменения внесены в записи в указанной зоне.
Оператор импорта
Objective C
@import CloudKit;
Swift
import CloudKit
Доступность
Доступный в OS X v10.10 и позже.
См. также
-
ID рекордной зоны для контроля.
Объявление
Swift
@NSCopying var zoneID: CKRecordZoneID!
Objective C
@property(nonatomic, copy) CKRecordZoneID *zoneID
Обсуждение
Значение этого свойства применяется и к основанным на запросе подпискам и к зональным подпискам. Указание рекордной зоны ограничивает поисковый объем записями в той зоне. В случае зональной подписки поиск охватывает все записи в зоне. Для основанной на запросе подписки поиск охватывает только записи определенного типа в той зоне.
Для зональных подписок значение этого свойства установлено автоматически
initWithZoneID:options:
илиinitWithZoneID:subscriptionID:options:
методы. Для всех других типов подписки значение по умолчаниюnil
. Для применения зоны к основанные на запросе подписки необходимо присвоить значение явно.Оператор импорта
Objective C
@import CloudKit;
Swift
import CloudKit
Доступность
Доступный в OS X v10.10 и позже.
-
recordType recordType
СвойствоТип записи, контролируемый в основанной на запросе подписке. (только для чтения)
Объявление
Swift
var recordType: String! { get }
Objective C
@property(nonatomic, readonly, copy) NSString *recordType
Обсуждение
Значение этого свойства применяется только к основанным на запросе подпискам и установлено автоматически
initWithRecordType:predicate:options:
иinitWithRecordType:predicate:subscriptionID:options:
методы. Для всех других типов объектов подписки значение этого свойства проигнорировано и установлено вnil
.Оператор импорта
Objective C
@import CloudKit;
Swift
import CloudKit
Доступность
Доступный в OS X v10.10 и позже.
-
Соответствующие критерии для применения к записям. (только для чтения)
Объявление
Swift
@NSCopying var predicate: NSPredicate! { get }
Objective C
@property(nonatomic, readonly, copy) NSPredicate *predicate
Обсуждение
Основанная на запросе подписка использует свой поисковый предикат для идентификации потенциальных соответствий для записей. Это комбинирует информацию о предикате со значением в
subscriptionOptions
свойство для определения условий, при которых можно отправить уведомление нажатия приложению.Поисковый предикат определяет записи, которые объект подписки контролирует для изменений. Значение в этом свойстве используется только если
subscriptionType
свойство установлено вCKSubscriptionTypeQuery
; иначе, это проигнорировано.Оператор импорта
Objective C
@import CloudKit;
Swift
import CloudKit
Доступность
Доступный в OS X v10.10 и позже.
-
notificationInfo notificationInfo
СвойствоДанные конфигурации для уведомлений нажатия, отправленных подпиской.
Объявление
Swift
@NSCopying var notificationInfo: CKNotificationInfo!
Objective C
@property(nonatomic, copy) CKNotificationInfo *notificationInfo
Обсуждение
Если Вы хотите, чтобы уведомления нажатия Вашей подписки предупредили пользователя к соответствующим изменениям, присвоили значение этому свойству. Сервер использует информацию в
CKNotificationInfo
объект определить варианты доставки для уведомлений. Например, можно указать предупредительный текст для отображения и имя специального звукового файла для игры. Когда уведомление нажатия включает запись, можно также указать который поля записи включать в данные полезной нагрузки уведомления нажатия.Если Вы не присваиваете значение этому свойству, сервер все еще отправляет уведомления нажатия Вашему приложению, но те уведомления не заставляют систему предупреждать пользователя. Значение по умолчанию этого свойства
nil
.Оператор импорта
Objective C
@import CloudKit;
Swift
import CloudKit
Доступность
Доступный в OS X v10.10 и позже.
-
subscriptionType subscriptionType
СвойствоТип поведения, предоставленного подпиской. (только для чтения)
Объявление
Swift
var subscriptionType: CKSubscriptionType { get }
Objective C
@property(nonatomic, readonly, assign) CKSubscriptionType subscriptionType
Обсуждение
Значение этого свойства установлено автоматически во время создания. Используйте его для различения основанные на запросе подписки и тех, которые контролируют определенные типы данных.
Оператор импорта
Objective C
@import CloudKit;
Swift
import CloudKit
Доступность
Доступный в OS X v10.10 и позже.
-
subscriptionOptions subscriptionOptions
СвойствоОпции для инициирования уведомлений. (только для чтения)
Объявление
Swift
var subscriptionOptions: CKSubscriptionOptions { get }
Objective C
@property(nonatomic, readonly, assign) CKSubscriptionOptions subscriptionOptions
Обсуждение
Установите значение этого свойства во время инициализации. При конфигурировании основанной на запросе подписки необходимо указать по крайней мере одно из следующих значений:
CKSubscriptionOptionsFiresOnRecordCreation
,CKSubscriptionOptionsFiresOnRecordUpdate
, илиCKSubscriptionOptionsFiresOnRecordDeletion
.Оператор импорта
Objective C
@import CloudKit;
Swift
import CloudKit
Доступность
Доступный в OS X v10.10 и позже.
-
subscriptionID subscriptionID
СвойствоУникальный идентификатор для подписки. (только для чтения)
Объявление
Swift
var subscriptionID: String! { get }
Objective C
@property(nonatomic, readonly, copy) NSString *subscriptionID
Обсуждение
Если Вы инициализируете объект подписки использование
initWithRecordType:predicate:subscriptionID:options:
илиinitWithZoneID:subscriptionID:options:
методы, значение по умолчанию этого свойства установлено в значение, предоставленное теми методами. Во всех других случаях ID на основе UUID сгенерирован для Вас автоматически.Оператор импорта
Objective C
@import CloudKit;
Swift
import CloudKit
Доступность
Доступный в OS X v10.10 и позже.
-
Константы, идентифицирующие поведение подписки.
Объявление
Swift
enum CKSubscriptionType : Int { case Query case RecordZone }
Objective C
typedef enum : NSInteger { CKSubscriptionTypeQuery = 1, CKSubscriptionTypeRecordZone = 2, } CKSubscriptionType;
Константы
-
Query
CKSubscriptionTypeQuery
Постоянное указание подписки является основанной на запросе подпиской. Этот тип подписки отслеживает создание, модификацию или удаление определенного типа записи.
Доступный в OS X v10.10 и позже.
-
RecordZone
CKSubscriptionTypeRecordZone
Постоянное указание подписки является зональной подпиской. Подписка отслеживает изменения в записях в определенной рекордной зоне.
Доступный в OS X v10.10 и позже.
Оператор импорта
Objective C
@import CloudKit;
Swift
import CloudKit
Доступность
Доступный в OS X v10.10 и позже.
-
-
Параметры конфигурации для подписки.
Объявление
Swift
struct CKSubscriptionOptions : RawOptionSetType { init(_
rawValue
: UInt) init(rawValuerawValue
: UInt) static var FiresOnRecordCreation: CKSubscriptionOptions { get } static var FiresOnRecordUpdate: CKSubscriptionOptions { get } static var FiresOnRecordDeletion: CKSubscriptionOptions { get } static var FiresOnce: CKSubscriptionOptions { get } }Objective C
typedef enum : NSUInteger { CKSubscriptionOptionsFiresOnRecordCreation = 1 << 0, CKSubscriptionOptionsFiresOnRecordUpdate = 1 << 1, CKSubscriptionOptionsFiresOnRecordDeletion = 1 << 2, CKSubscriptionOptionsFiresOnce = 1 << 3, } CKSubscriptionOptions;
Константы
-
FiresOnRecordCreation
CKSubscriptionOptionsFiresOnRecordCreation
Опция для генерации уведомления нажатия, когда запись, соответствующая критерии поиска в
predicate
свойство создается. Эта опция применяется только к основанным на запросе подпискам подписок.Доступный в OS X v10.10 и позже.
-
FiresOnRecordUpdate
CKSubscriptionOptionsFiresOnRecordUpdate
Опция для генерации уведомления нажатия, когда изменения внесены в поля записи, заставляющие запись соответствовать критерии поиска, указанные в
predicate
свойство. Эта опция применяется только к основанным на запросе подпискам.Доступный в OS X v10.10 и позже.
-
FiresOnRecordDeletion
CKSubscriptionOptionsFiresOnRecordDeletion
Опция для генерации уведомления нажатия, когда запись, соответствовавшая критерии поиска в
predicate
свойство было удалено. Эта опция применяется только к основанным на запросе подпискам.Доступный в OS X v10.10 и позже.
-
FiresOnce
CKSubscriptionOptionsFiresOnce
Опция для отправки уведомления нажатия только в один раз. После отправки уведомления нажатия сервер удаляет объект подписки. Эта опция применяется только к основанным на запросе подпискам.
Если Вы хотите инициировать последующее уведомление нажатия с теми же критериями, необходимо создать новую подписку, возражают и сохраняют его к серверу.
Доступный в OS X v10.10 и позже.
Оператор импорта
Objective C
@import CloudKit;
Swift
import CloudKit
Доступность
Доступный в OS X v10.10 и позже.
-