【发布时间】:2016-06-12 15:08:58
【问题描述】:
我正在为以下订阅而苦苦挣扎:
let predicate = NSPredicate(format: "gc_alias != %@ AND distanceToLocation:fromLocation:(%K,%@) < %f",
self.localPlayer!.alias!,
"location",
self.currentLocation!,
10)
let subscription = CKSubscription(recordType: "Player", predicate: predicate, options: .FiresOnRecordCreation)
subscription.zoneID = nil
let notification = CKNotificationInfo()
notification.alertBody = "Nearby Player within Range!"
notification.soundName = UILocalNotificationDefaultSoundName
subscription.notificationInfo = notification
let container = CKContainer.defaultContainer()
let publicDb = container.publicCloudDatabase
publicDb.saveSubscription(subscription) { (result, error) -> Void in
if error != nil {
print(error!.localizedDescription)
} else {
print("SUBSCRIBED SUCCESS")
print(result)
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "subscribed")
}
}
基本上,当创建或更新新玩家记录时,我会记录用户的位置。
我希望当用户 B 创建或更新他们的玩家记录并且在 10KM 内时,通过推送通知用户 A。
我相信我在我的应用中正确设置了推送权限(例如,在创建用户之前,会提示用户确认这一点)。
没有推送到达。有任何想法吗?我是否有一些基本的 CK 误解?
【问题讨论】:
-
能否在创建 CK 记录和注册通知的位置添加代码?
-
distanceToLocation:fromLocation:() 返回米而不是公里。您需要通过 10000 而不是 10。
-
Diegog FTW!米似乎抓住了它!令人惊讶的是,网络上有关于此的错误信息。 :|