云套件不会触发 NSUbiquityIdentityDidChangeNotification

Posted

技术标签:

【中文标题】云套件不会触发 NSUbiquityIdentityDidChangeNotification【英文标题】:NSUbiquityIdentityDidChangeNotification does not fire with cloud kit 【发布时间】:2015-07-07 16:02:34 【问题描述】:

这是我当前的代码

func applicationDidBecameActive(notification:NSNotification) 

    println("Application is active")

    NSNotificationCenter.defaultCenter().addObserver(self, selector: "handleIdentityChange:", name: NSUbiquityIdentityDidChangeNotification, object: nil)



func applicationBecameInactive(notification:NSNotification) 

    println("Application is inactive")

    NSNotificationCenter.defaultCenter().removeObserver(self, name: NSUbiquityIdentityDidChangeNotification, object: nil)



func handleIdentityChange(notification:NSNotification) 

    println("this is working")

    let fileManager = NSFileManager()

    if let token = fileManager.ubiquityIdentityToken 

        println("New token is \(token)")

    
    else 

        println("User has logged out of iCloud")

    


“应用程序处于活动状态”和“应用程序处于非活动状态”正常工作。那里没有问题。

我无法让它“这工作正常”。通过登录不同的 iCloud 帐户或退出 iCloud 帐户。

我在模拟器和实际设备上试过。

请帮我解决这个问题或建议替代方法来实现相同的目标(更改 iCloud 帐户)。

【问题讨论】:

如果您想更改其他用户答案的​​含义,而不是对其进行编辑,请在对该答案的评论中说明您认为应该更改的内容,或添加您自己的答案。 尝试在 willEnterForeground 上连接通知处理程序。 didBecomeActive 为时已晚。 我试过了。它仍然不起作用。感谢您的帮助,但我现在在 ios 9 中使用 CKAccountChangeNotification。 【参考方案1】:

在 Swift 中,我有时需要在函数前面添加 @objc 以便 NSNotificationCenter 找到它。

所以不是

func handleIdentityChange(notification:NSNotification)

我会试试的

@objc func handleIdentityChange(notification:NSNotification)

【讨论】:

【参考方案2】:

看看我在this question 中的评论。我也从未收到过NSUbiquityIdentityDidChangeNotification。在 iOS 中,当您更改帐户时,您的应用程序会被终止。在 tvOS 中,您可以使用 NSUbiquitousKeyValueStoreAccountChange

【讨论】:

以上是关于云套件不会触发 NSUbiquityIdentityDidChangeNotification的主要内容,如果未能解决你的问题,请参考以下文章

华为云计算基础-华为云计算套件

在VSTS上发布释放触发器,以运行端到端测试套件

阿里云-物联网套件体验

是否有任何选项可以导出所有云套件数据?

云套件。订阅问题

如何更新云套件数据