首页 > 解决方案 > CKAccountChanged 通知只收到一次

问题描述

我想在 iCloud 帐户状态更改时在我的 iOS 应用程序中收到通知,因此我通过以下方式注册

NotificationCenter.default.addObserver(self, selector: #selector(iCloudAvailabilityChanged), name: Notification.Name.CKAccountChanged, object: nil)

事实上,当我在后台运行我的应用程序,并在设置中翻转应用程序的 iCloud 开关,然后返回并前台运行我的应用程序时,我会在 applicationWillEnterForeground 之后立即收到通知。

但是,如果我重复此操作,则再次将我的应用程序置于后台,翻转开关,然后再次将我的应用程序置于前台,则不会收到通知。如果我第三次、第四次等,也不会这样做。

这种行为有时不会发生在我身上,但总是会发生,而且我在不同的设备上尝试过,都是一样的。

我使用 iOS 13 和 Swift 5。

这是预期的行为,还是错误,还是我做错了什么?感谢您的任何帮助!

标签: ios13cloudkit

解决方案


正如我上面的评论所暗示的那样,我认为您可能拨错了开关。据我了解,CKAccountChanged当您更改以下两项之一时会触发:

  1. 在设备上登录/退出iCloud。
  2. 打开/关闭 iCloud Drive(在 中Settings > iCloud Profile > iCloud > iCloud Drive

我还没有在任何地方看到更改特定应用程序的 iCloud 可用性会触发CKAccountChanged


推荐阅读