【发布时间】:2015-03-09 00:28:41
【问题描述】:
我正在创建一个 cloudkit 应用程序,并且一直在尝试多种方法来获取 NSUbiquityIdentityDidChangeNotification,但我始终无法收到此通知。
我已经在委托didFinish 和viewDidLoad 方法下尝试了这两个代码版本。我尝试从另一个通知中调用它 - UIApplicationDidBecomeActiveNotification。我还将import Foundation 放在文件顶部。
这是我尝试过的基本代码:
NSNotificationCenter.defaultCenter().addObserver(self,
selector: "handleIdentityChanged:",
name: NSUbiquityIdentityDidChangeNotification,
object: nil)
// 这个我也在另一篇帖子here 上尝试过:
var localeChangeObserver = NSNotificationCenter.defaultCenter().addObserverForName(NSUbiquityIdentityDidChangeNotification, object: nil, queue: NSOperationQueue.mainQueue()) { _ in
println("The user’s iCloud login changed: should refresh all user data.")
}
有谁知道如何让这个通知在 swift 中仅适用于 cloudkit 应用程序?我真的只是想检测 iCloud 状态变化,然后如果有变化就开始获取userID。
不是我需要访问ubiquityIdentityToken,但我想知道为什么不存储令牌,并且每次应用程序启动时将当前令牌与本地存储中的令牌进行比较,看看它是不同的帐户还是零?因此,为什么需要通知?
此外,获取令牌的代码似乎只有在我打开不需要的“iCloud 文档”时才有效。有谁知道打开它对不需要它的社交应用程序的影响?还有其他方法可以在不启用 iCloud 文档的情况下获取令牌吗?
这是我用来获取令牌并放在委托didFinish 方法中的代码,但仅在打开 iCloud 文档时有效:
var token = NSFileManager.defaultManager().ubiquityIdentityToken
println("token is \(token!)")
【问题讨论】:
标签: ios swift notifications cloudkit