如何设置最小CKSubscription?

时间:2014-07-23 08:25:44

标签: push-notification publish-subscribe ios8 cloudkit cksubscription

我想设置一个简单的CKSubscription,通知我recordType已创建,怎么做?

2 个答案:

答案 0 :(得分:13)

经过一段时间的实验,这是如何设置最小CKSubscription。您必须在设备上测试它,推送通知在模拟器上不起作用。您可以在仪表板中添加记录,这也会触发推送通知。

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {

    application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: .Alert, categories: nil))
    application.registerForRemoteNotifications()
        return true
}

func someFunc() { // <- you need to call once in app life time, and again when it was removed / installed 
     let defaultContainer = CKContainer.defaultContainer()
     let publicDatabase = defaultContainer.publicCloudDatabase   
     let subs = CKSubscription(recordType: "xxx", predicate: NSPredicate(value: true), subscriptionID: "yyy", options: .FiresOnRecordCreation)
     subs.notificationInfo = CKNotificationInfo()
     subs.notificationInfo.alertBody = "New item added"
     publicDatabase.saveSubscription(subs, completionHandler: {subscription, error in})
}

func application(application: UIApplication!, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]!)
{
    // <- this method will invoked
}

答案 1 :(得分:3)

您是否注册了通知?你应该在你的应用程序中使用类似的东西didFinishLaunchingWithOptions:

application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: .Alert | .Badge | .Sound, categories: nil))
application.registerForRemoteNotifications()

我创建了一个可在https://github.com/evermeer/EVCloudKitDao

处获得的工作演示