未收到 CKAccountChanged 通知
CKAccountChanged notifications not received
我想在 iCloud 帐户状态更改时收到通知。
因此,我通过以下方式注册了这些通知:
NotificationCenter.default.addObserver(self,
selector: #selector(iCloudAvailabilityDidChange),
name: .CKAccountChanged,
object: nil)
并期望相应地调用 iCloudAvailabilityDidChange
:
@objc func iCloudAvailabilityDidChange(_ notification: Notification) {
handleICloudAccountStatus()
}
为了检查这些通知,我在 iCloudAvailabilityDidChange
和 运行 Xcode 下的应用程序中设置了一个断点。
然后我发出 Home
,打开系统设置应用程序,然后登录 iCloud 帐户或注销它。
我预计Xcode会到达断点,但事实并非如此
有什么问题吗?
编辑:
可能问题与docs到CKAccountChanged
中的以下信息有关,我不明白:
通知由 CKContainer class 的实例发送。如果没有 class 的实例,则不会发送通知。
我不明白的是 CKContainer.default()
应该总是被定义。
已解决的问题:
首先,必须访问容器,例如通过
let container = CKContainer.default()
这将实例化可以发送此类通知的容器对象。
其次,要获得通知,必须 运行 应用程序,轻按主页按钮,打开系统设置,登录或注销 to/from iCloud 帐户, 和切换回应用。只有这样才会发送通知。
我想在 iCloud 帐户状态更改时收到通知。
因此,我通过以下方式注册了这些通知:
NotificationCenter.default.addObserver(self,
selector: #selector(iCloudAvailabilityDidChange),
name: .CKAccountChanged,
object: nil)
并期望相应地调用 iCloudAvailabilityDidChange
:
@objc func iCloudAvailabilityDidChange(_ notification: Notification) {
handleICloudAccountStatus()
}
为了检查这些通知,我在 iCloudAvailabilityDidChange
和 运行 Xcode 下的应用程序中设置了一个断点。
然后我发出 Home
,打开系统设置应用程序,然后登录 iCloud 帐户或注销它。
我预计Xcode会到达断点,但事实并非如此
有什么问题吗?
编辑:
可能问题与docs到CKAccountChanged
中的以下信息有关,我不明白:
通知由 CKContainer class 的实例发送。如果没有 class 的实例,则不会发送通知。
我不明白的是 CKContainer.default()
应该总是被定义。
已解决的问题:
首先,必须访问容器,例如通过
let container = CKContainer.default()
这将实例化可以发送此类通知的容器对象。
其次,要获得通知,必须 运行 应用程序,轻按主页按钮,打开系统设置,登录或注销 to/from iCloud 帐户, 和切换回应用。只有这样才会发送通知。