Swift 2和Cloudkit的通知

用户名

我正在制作一个可以使用它的“文本应用程序”,它使用了cloudkit,并且我一直在到处寻找添加可与cloudkit一起使用的通知...有人可以告诉我代码来详细添加针对cloudkit的推送通知,因为我很失落...我也不想通知去不同的“文本室”(在Cloudkit中,它将是记录类型...)例如,我有一个称为“文本”的记录类型,而另一种称为“文本”的记录类型。文字2”我不希望“文字”的通知传递给使用“文字2”的用户,反之亦然。

用户名

将Swift 2.0与El Captain和Xcode 7.2.1结合使用

Elia,您需要将此添加到您的应用程序委托中。哪个将到达userInfo数据包中,然后您可以解析该数据包以查看哪个数据库/应用程序发送了它。

UIApplicationDelegate to the class
application.registerForRemoteNotifications() to the

func application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

比这种方法

func application(application: UIApplication, didReceiveRemoteNotification  userInfo: [NSObject : AnyObject]) {
    let notification = CKQueryNotification(fromRemoteNotificationDictionary: userInfo as! [String : NSObject])

    let container = CKContainer(identifier: "iCloud.com")
    let publicDB = container.publicCloudDatabase

    if notification.notificationType == .Query {
        let queryNotification = notification as! CKQueryNotification
        if queryNotification.queryNotificationReason  == .RecordUpdated {
            print("queryNotification.recordID \(queryNotification.recordID)")
            // Your notification

        }
    }

    print("userInfo \(userInfo["ck"])")
                    NSNotificationCenter.defaultCenter().postNotificationName("NotificationIdentifier", object: self, userInfo:dataDict)
                }
            }
        }
    }

}

那会让您入门。

您可以使用此方法以编程方式检查您的订阅,当然,在开发过程中,您可以使用仪表板。

func fetchSubsInPlace() {
    let container = CKContainer(identifier: "iCloud.com")
    let publicDB = container.publicCloudDatabase

    publicDB.fetchAllSubscriptionsWithCompletionHandler({subscriptions, error in
        for subscriptionObject in subscriptions! {
            let subscription: CKSubscription = subscriptionObject as CKSubscription
            print("subscription \(subscription)")
        }
    })
}

最后,当您得到它时;您可以使用此例程来确保您捕获应用在睡眠状态时丢失的所有订阅,并确保订阅也不会在所有设备上都得到处理。

 func fetchNotificationChanges() {
    let operation = CKFetchNotificationChangesOperation(previousServerChangeToken: nil)

    var notificationIDsToMarkRead = [CKNotificationID]()

    operation.notificationChangedBlock = { (notification: CKNotification) -> Void in
        // Process each notification received
        if notification.notificationType == .Query {
            let queryNotification = notification as! CKQueryNotification
            let reason = queryNotification.queryNotificationReason
            let recordID = queryNotification.recordID

            print("reason \(reason)")
            print("recordID \(recordID)")
            // Do your process here depending on the reason of the change

            // Add the notification id to the array of processed notifications to mark them as read
            notificationIDsToMarkRead.append(queryNotification.notificationID!)
        }
    }

    operation.fetchNotificationChangesCompletionBlock = { (serverChangeToken: CKServerChangeToken?, operationError: NSError?) -> Void in
        guard operationError == nil else {
            // Handle the error here
            return
        }

        // Mark the notifications as read to avoid processing them again
        let markOperation = CKMarkNotificationsReadOperation(notificationIDsToMarkRead: notificationIDsToMarkRead)
        markOperation.markNotificationsReadCompletionBlock = { (notificationIDsMarkedRead: [CKNotificationID]?, operationError: NSError?) -> Void in
            guard operationError == nil else {
                // Handle the error here
                return
            }
        }

        let operationQueue = NSOperationQueue()
        operationQueue.addOperation(markOperation)
    }

    let operationQueue = NSOperationQueue()
    operationQueue.addOperation(operation)
}


}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PromiseKit和CloudKit保存(使用Swift)

来自分类Dev

使用CloudKit和Swift一次保存多个CKRecord

来自分类Dev

Swift / Cloudkit谓词格式

来自分类Dev

使用Swift在CloudKit上的CKReference

来自分类Dev

Swift 3.0 CloudKit fetchDatabaseChangesCompletionBlock错误

来自分类Dev

CloudKit通知

来自分类Dev

Swift <<,> <,<= <和> = <

来自分类Dev

(iOS 10,Swift 3)从CloudKit通知中读取`userInfo`字典:如何将`[AnyHashable:Any]`强制转换为`[String:NSObject]`?

来自分类Dev

Swift Mac 和 CloudKit 上的问题,应用程序运行后立即崩溃

来自分类Dev

Azure + Swift推送通知

来自分类Dev

在 Swift 上推送通知

来自分类Dev

Swift-远程通知和导航控制器流程

来自分类Dev

使用Swift和iOS 7.1进行远程通知时出错

来自分类Dev

订阅和订阅时上次访问值的通知结构-Swift

来自分类Dev

在locationManager中进行swift和iBeacon firedate通知

来自分类Dev

在推送通知Swift 2 AppDelegate上加载特定的viewController

来自分类Dev

在Swift 2 iOS 9中解析推送通知

来自分类Dev

iOS Swift:CloudKit的本地持久性

来自分类Dev

Swift Nsnotificationcenter发布通知错误

来自分类Dev

在Swift中设置多次通知

来自分类Dev

Swift 3:过滤 IOS 通知

来自分类Dev

离线本地通知 (Swift)

来自分类Dev

SWIFT 发送本地通知

来自分类Dev

Swift 中的 Flurry 推送通知

来自分类Dev

在 Swift 中获取通知的时间

来自分类Dev

批量获取解析和Swift 2

来自分类Dev

Swift 2 Parse和KingFisher缓存图像

来自分类Dev

结合使用imagePickerController和Swift 2

来自分类Dev

批量获取解析和Swift 2