iCloud之订阅记录更改
来源:互联网 发布:专辑封面设计软件 编辑:程序博客网 时间:2024/05/02 06:13
Subscribing to Record Changes
这是低效率的为您的应用程序重复查询时,结果大都是一样的最后一个查询。相反,订阅记录的变化,让服务器在后台运行查询。服务器会通知你他们感兴趣的用户或应用程序更改应用程序。例如,如果你的应用程序中的一个用户被某个艺术家感兴趣的作品,你的应用程序时,可以通知新的作品由艺术家上传。
Save Subscriptions to the Database
订阅保存到数据库在你的代码中,创建指定记录类型,谓语和类型要被通知更改的认购对象。然后保存订阅对象到数据库。
创建并保存认购
1.创建谓词对象。
例如,从一个艺术家(如在艺术品记录类型的艺术家字段是引用类型)订阅艺术品。
创建并保存认购
1.创建谓词对象。
例如,从一个艺术家(如在艺术品记录类型的艺术家字段是引用类型)订阅艺术品。
CKRecordID *artistRecordID = [[CKRecordID alloc] initWithRecordName:@"Mei Chen"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"artist = %@", artistRecordID];注:在谓语格式字符串参数右边的表达可能的值包括CKRecord,CKRecordID和CKReference对象。如果您知道记录名称,您可以创建一个包含只记录名称记录ID。
2.创建一个预订指定的记录类型,谓语和通知选项。
CKSubscription *subscription = [[CKSubscription alloc]
initWithRecordType:@"Artwork"
predicate:predicate
options:CKSubscriptionOptionsFiresOnRecordCreation];options参数的可能值是:
CKSubscriptionOptionsFiresOnRecordCreation
, CKSubscriptionOptionsFiresOnRecordDeletion
, CKSubscriptionOptionsFiresOnRecordUpdate
, 和 CKSubscriptionOptionsFiresOnce
.因为options参数是一个位掩码,可以订阅的改变的类型的任何组合。例如,您可以通过CKSubscriptionOptionsFiresOnRecordCreation| CKSubscriptionOptionsFiresOnRecordUpdate作为选项:参数来接收所有新数据的通知。3.创建CloudKit通知对象。
CKNotificationInfo *notificationInfo = [CKNotificationInfo new];
notificationInfo.alertLocalizationKey = @"New artwork by your favorite artist.";
notificationInfo.shouldBadge = YES;要显示的本地化字符串给用户,设置通知的alertLocalizationKey属性(不是alertBody属性)。
4.订阅的通知对象设置为新的CloudKit通知对象。
subscription.notificationInfo = notificationInfo;5.保存的预订数据库。
CKDatabase *publicDatabase = [[CKContainer defaultContainer] publicCloudDatabase];
[publicDatabase saveSubscription:subscription
completionHandler:^(CKSubscription *subscription, NSError *error) {
if (error)
// insert error handling
}
];在Xcode中,运行您的应用程序订阅保存到数据库中。
Verify Your Steps
验证订阅保存到架构。在CloudKit仪表盘,认购对象显示为模式的订阅类型。
1.在 CloudKit Dashboard,选择在左上角使用您的应用程序从弹出菜单中的容器。
2.在架构上,单击订阅类型。
订阅出现在第二列中。
3.如果有必要,选择预订。
订阅属性出现在细节方面。
Register for Push Notifications
注册推送通知订阅保存到数据库不会自动配置您的应用程序接收通知时订阅火灾。CloudKit使用苹果推送通知服务( Apple Push Notification service (APNs))来发送订阅通知到您的应用程序,让您的应用程序需要注册推送通知接收他们。
对于iOS应用程序,该代码添加到
application:didFinishLaunchingWithOptions:
协议方法注册推送通知:// Register for push notifications
UIUserNotificationSettings *notificationSettings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert categories:nil];
[application registerUserNotificationSettings:notificationSettings];
[application registerForRemoteNotifications];对于Mac应用程序,实现的applicationDidFinishLaunching:协议方法注册推送通知。
对于iOS和Mac应用程序,选择实现
application:didRegisterForRemoteNotificationsWithDeviceToken:
和 application:didFailToRegisterForRemoteNotificationsWithError:
方法采取适当的行动,当应用程序成功或失败注册了推送通知。注意:您不需要启用应用程序的明确的App ID在会员中心推送通知接收订阅通知。当您启用CloudKit Xcode中自动添加的APN享有的授权文件。
Handle Push Notifications in Code
其次,实现application:didReceiveRemoteNotification:
方法来处理订阅通知,当他们到达。对于iOS应用程序,实现了 UIApplicationDelegate
协议方法和Mac应用程序,实现NSApplicationDelegate协议方法。例如,实现此方法时创建匹配的记录您的谓词,更新或删除更新的意见。1.添加
application:didReceiveRemoteNotification:
协议的方法来应用程序的委托。- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
}
2.在
application:didReceiveRemoteNotification:
方法,转换用户信息参数aCKNotification对象。CKNotification *cloudKitNotification = [CKNotification notificationFromRemoteNotificationDictionary:userInfo];3.得到通知的主体。
NSString *alertBody = cloudKitNotification.alertBody;4.获得从CKQueryNotification对象的新的或修改的记录。
if (cloudKitNotification.notificationType == CKNotificationTypeQuery) {
CKRecordID *recordID = [(CKQueryNotification *)cloudKitNotification recordID];
}5.更新观点或根据记录更改通知用户。
Test Subscriptions
测试订阅
您可以通过Xcode中运行你的应用程序,并使用CloudKit仪表板来创建,修改或删除记录,如 在Add, Modify, and Delete Records中所描述的。然后,通过在多台设备上运行你的应用程序全面测试订阅。使用一台设备进行更改与其他设备接收订阅通知。使用多个设备,因为一个不发送通知给发起所述通知相同的设备。
对于iOS系统中,使用iOS设备(而不是iPhone模拟器)来测试订阅通知。您的应用程序成功地注册了推送通知,如果有要求用户的同意您的应用程序一个对话框来接收通知。
对于iOS系统中,使用iOS设备(而不是iPhone模拟器)来测试订阅通知。您的应用程序成功地注册了推送通知,如果有要求用户的同意您的应用程序一个对话框来接收通知。
概括
在本章中,您学习了如何:
1.订阅记录更改使用谓词
2.处理订阅通知
在本章中,您学习了如何:
1.订阅记录更改使用谓词
2.处理订阅通知
0 0
- iCloud之订阅记录更改
- iCloud之获取记录
- iCloud之创建一个数据库通过保存记录
- icloud之部署架构
- icloud之关键词
- iCloud
- iCloud
- iCloud
- iCloud
- 十四章--iCloud--之三
- 十四章--icloud之四
- icloud之添加参考字段
- 十四章--icloud技术--之二
- 被拒 之 itunes and iCloud 同步
- iCloud之在app使用CloudKit
- iCloud之Using Asset and Location Fields
- iCloud之测试你CloudKit应用程序
- LWIP学习记录之如何动态更改IP地址
- 利用Path路径设计的按钮图标(Silverlight)
- Navigation Controller 学习
- 安卓 更新 fragment 里面 控件
- leetcode系列(29)Two Sum
- 拖拽产生tableViewCell
- iCloud之订阅记录更改
- Thinkphp基类库扩展
- Codeforces Round #319 (Div. 2)
- hdu1421搬寝室 DP
- 果蝇优化算法
- STL源码剖析 [容器](二十一)[stl_hash_map.h]
- 推荐两个界面原型设计工具--GUIDesignStudio 和 Mockups For Desktop
- PCM数据格式
- JavaScript学习笔记