CKAccountChanged 通知只收到一次

CKAccountChanged notification is only received once

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

注册

NotificationCenter.default.addObserver(自己, 选择器:#selector(iCloudAvailabilityChanged), 姓名:Notification.Name.CKAccountChanged, 对象:无)

事实上,当我将我的应用程序置于后台,并在设置中为该应用程序切换 iCloud 开关,然后返回并将我的应用程序置于前台时,我会在 applicationWillEnterForeground 后立即收到通知。

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

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

我使用 iOS 13 和 Swift 5.

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

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

  1. 在设备上签署in/out iCloud。
  2. 打开iCloud Drive on/off(在Settings > iCloud Profile > iCloud > iCloud Drive

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