首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSUbiquityIdentityDidChangeNotification与SIGKILL

NSUbiquityIdentityDidChangeNotification与SIGKILL
EN

Stack Overflow用户
提问于 2015-04-09 18:39:33
回答 4查看 1.4K关注 0票数 10

Swift 1.2 Xcode 6

长期听众,第一次来电者。

你好,

直截了当地说:“要处理iCloud可用性的变化,注册以接收NSUbiquityIdentityDidChangeNotification通知。”

下面是他们提供的代码来实现这个功能:

代码语言:javascript
复制
[[NSNotificationCenter defaultCenter]

addObserver: self

   selector: @selector (iCloudAccountAvailabilityChanged:)

       name: NSUbiquityIdentityDidChangeNotification

     object: nil];

我在我的应用程序中使用了以下功能:

代码语言:javascript
复制
var observer = NSNotificationCenter.defaultCenter().addObserverForName
(NSUbiquityIdentityDidChangeNotification, object: nil, queue: NSOperationQueue.mainQueue()
){...completion block...}

src:编号/doc/uid/SW6 40012094-CH6-SW6

实现这一点的正确方法是什么?它在AppDelegate里吗?当应用程序被发送到后台时,我们是否删除观察者?

我遇到的问题是,当无处不在的标记发生变化时,应用程序就会终止,因为用户已经更改了iCloud设置。

您是如何设法订阅此通知的,如果不订阅,您将如何跟踪当前已登录的iCloud用户呢?

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-07-31 23:03:32

简短回答

若要在iOS中通知用户在使用应用程序时登录或退出iCloud,请使用CKAccountChangedNotification而不是NSUbiquityIdentityChanged

长答案

我也一直想让这件事起作用。我记得在WWDC16的一次会谈中,有这样的东西,他们推荐使用。但是,从它们提供的示例代码中,我只能找到NSUbiquityKeyIdentityChanged,而我还没有找到它。

所以我回到了视频(从2015年开始)。这就是我看到他们引用CKAccountChangedNotification的地方--它的工作原理与预期完全相同:

  • 从Xcode在模拟器上启动应用程序
  • 退出到模拟器上的Settings应用程序
  • 登录(或退出) iCloud帐户
  • 回到你的应用程序中(点击模拟器主屏幕上的图标)
    • 收到通知。

  • 再次退出到设置应用程序
  • 重新登录(或登录)到iCloud帐户
  • 再次回到您的应用程序中,
    • 收到另一份通知。

票数 12
EN

Stack Overflow用户

发布于 2017-01-30 13:09:43

SWIFT3.0中,还有另一个改名:

现在,NSUbiquityIdentityDidChangeNotification已经变成了NSNotification.Name.NSUbiquityIdentityDidChange

因此,完整的注册如下:

代码语言:javascript
复制
// Register for iCloud availability changes
NotificationCenter.default.addObserver(self, selector: #selector(...), name: NSNotification.Name.NSUbiquityIdentityDidChange, object: nil)
票数 1
EN

Stack Overflow用户

发布于 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被发送到

  • 登录到iCloud帐户的用户,或
  • 用户在iCloud 11中启用iCloud驱动器。这总是导致iCloud驱动器->应用程序被启用。但是,获取帐户状态之后就产生了NoAccount!
  • 用户在iCloud 10中启用了iCloud驱动器。iCloud驱动器->应用程序的后续状态是我禁用iCloud驱动器时的任何状态。帐户状况是适当的。但是,如果此时禁用了iCloud驱动器->App,则启用它不会产生终止或通知。

申请在下列情况终止

  • 用户退出iCloud,而不考虑iCloud驱动器状态
  • 用户禁用iCloud驱动器->应用程序
  • 用户禁用iCloud驱动器(即使iCloud驱动器->应用程序已经禁用)
  • 用户在启用iCloud驱动器的情况下启动应用程序,然后启用iCloud驱动器-> app
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29546400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档