Swift 1.2 Xcode 6
长期听众,第一次来电者。
你好,
直截了当地说:“要处理iCloud可用性的变化,注册以接收NSUbiquityIdentityDidChangeNotification通知。”
下面是他们提供的代码来实现这个功能:
[[NSNotificationCenter defaultCenter]
addObserver: self
selector: @selector (iCloudAccountAvailabilityChanged:)
name: NSUbiquityIdentityDidChangeNotification
object: nil];我在我的应用程序中使用了以下功能:
var observer = NSNotificationCenter.defaultCenter().addObserverForName
(NSUbiquityIdentityDidChangeNotification, object: nil, queue: NSOperationQueue.mainQueue()
){...completion block...}src:编号/doc/uid/SW6 40012094-CH6-SW6
实现这一点的正确方法是什么?它在AppDelegate里吗?当应用程序被发送到后台时,我们是否删除观察者?
我遇到的问题是,当无处不在的标记发生变化时,应用程序就会终止,因为用户已经更改了iCloud设置。
您是如何设法订阅此通知的,如果不订阅,您将如何跟踪当前已登录的iCloud用户呢?
谢谢!
发布于 2016-07-31 23:03:32
简短回答
若要在iOS中通知用户在使用应用程序时登录或退出iCloud,请使用CKAccountChangedNotification而不是NSUbiquityIdentityChanged。
长答案
我也一直想让这件事起作用。我记得在WWDC16的一次会谈中,有这样的东西,他们推荐使用。但是,从它们提供的示例代码中,我只能找到NSUbiquityKeyIdentityChanged,而我还没有找到它。
所以我回到了视频(从2015年开始)。这就是我看到他们引用CKAccountChangedNotification的地方--它的工作原理与预期完全相同:
发布于 2017-01-30 13:09:43
在SWIFT3.0中,还有另一个改名:
现在,NSUbiquityIdentityDidChangeNotification已经变成了NSNotification.Name.NSUbiquityIdentityDidChange。
因此,完整的注册如下:
// Register for iCloud availability changes
NotificationCenter.default.addObserver(self, selector: #selector(...), name: NSNotification.Name.NSUbiquityIdentityDidChange, object: nil)发布于 2017-11-07 11:48:24
在iOS 10上,我发现NSUbiquityIdentityDidChangeNotification从未被发送过。如果我有一个CKContainer (按照文档),CKAccountChangedNotification是在非常有限的情况下发送的。
用xCode 9.1构建,然后在iOS 10.02 iPhone 6+和iOS 11.0.3 iPhone SE上进行测试
CKAccountChangedNotification被发送到
申请在下列情况终止
https://stackoverflow.com/questions/29546400
复制相似问题