gpt4 book ai didi

ios - WatchKit - 如何在首次启动时获取数据?

转载 作者:可可西里 更新时间:2023-10-31 23:44:31 26 4
gpt4 key购买 nike

我创建了一个 watch 应用程序,但在第一次打开时向 watch 发送数据时遇到问题。

我第一次强调是因为一旦打开 watch 上的应用程序,手机就会负责更新应用程序上下文,因此手机始终会发起连接。这部分工作正常。但是,第一次打开 watch 应用程序时,我希望 watch 应用程序启动连接并向手机应用程序请求数据。我无法让它工作......

我一直在尝试通过使用此从 watch 发送消息来让 watch 从 IOS 应用程序请求数据:

        if (WCSession.defaultSession().reachable) {
WCSession.defaultSession().sendMessage(infoDictionary,
replyHandler: { userInfo in
self.combinedDict = userInfo
self.defaults.setObject(self.combinedDict, forKey: "combinedict")
self.defaults.synchronize()
self.LoadTheView()
},
errorHandler: { (error:NSError) -> Void in
print("WatchKit communication error: \(error.localizedDescription)")
})

收到消息后,ios 应用程序应该用字典回复,我实现了这个并将其放在 AppDelegate 中:

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

if #available(iOS 9.0, *) {

if (WCSession.isSupported()) {
watchSession = WCSession.defaultSession()
watchSession!.delegate = self
watchSession!.activateSession()

}

} else {
// Fallback on earlier versions
}

return true

}
@available(iOS 9.0, *)
func session(session: WCSession, didReceiveMessage message: [String : AnyObject], replyHandler: ([String : AnyObject]) -> Void) {

print("Did receive message on ios app") // this is never fired

replyHandler(WatchConnection().SendToWatch()) //WatchConnection().SendToWatch() returns a value of type [String : AnyObject]

}

但是它不起作用,该应用程序确实发送了消息但从未收到回复......我怎样才能让它工作? watch 是否有其他方式在首次启动时请求数据?

最佳答案

WCSession 是一个进程范围的单例,只能有一个委托(delegate)。确保将其设置在一个位置以避免混淆或错误!

如果您的应用程序的许多不同部分都关心正在设置的 watch 连接性,则单例包装 WCSession 是一种不错的模式。

关于ios - WatchKit - 如何在首次启动时获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32928257/

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