gpt4 book ai didi

ios - 接收 applicationContext 并避免重新传输的正确方法? - WatchConnectivity

转载 作者:行者123 更新时间:2023-11-28 07:56:15 26 4
gpt4 key购买 nike

我一直致力于从我的 iOS 应用向我的 WatchOS 发送 ApplicationContext 形式的 int notificationCount

func session(_ session: WCSession, didReceiveApplicationContext applicationContext: [String : Any]) {}

问题是,上面的代码片段只会在 notificationCount 发生变化时使用react。这意味着当我在需要 notificationCount 的地方打开我的 InterfaceController 时,在从 iOS 对应值更新值之前我没有任何数字。

我确实怀疑 didReceiveApplicationContext 仅当发送值不同时才发生。但是有没有一种正确的方法来检查 notificationCount 的值是否与最近的传输具有相同的值以避免某些重新传输?

最佳答案

只需将 notificationCount 保存在您的扩展委托(delegate)的属性(或您可能用于存储数据的任何其他实例)中,并在您的 Controller 的唤醒方法中使用它(或/和 willActivate,如果适用)。此外,您可能希望将其保存在您的 UserDefaults 或文件中,以便它在重新启动您的应用程序时仍然存在。

像这样:

class ExtensionDelegate: NSObject, WKExtensionDelegate, WCSessionDelegate {
var notificationCount: Int?

// ...

func applicationDidFinishLaunching() {
// do your normal init stuff
// read notificationCount from UserDefaults
}

// ...

func session(_ session: WCSession, didReceiveApplicationContext applicationContext: [String : Any]) {
if let count = applicationContext["NotificationCount"] {
notificationCount = count
// save to UserDefaults here
}
}
}

关于ios - 接收 applicationContext 并避免重新传输的正确方法? - WatchConnectivity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47989557/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com