gpt4 book ai didi

ios - 用于实时消息传递的 WKExtension 状态和 sendMessage

转载 作者:行者123 更新时间:2023-12-01 16:23:23 25 4
gpt4 key购买 nike

我正在开发一个需要与 iOS 应用程序通信的 WatchApp,我正在使用 Watch Connectivity fwk 来做到这一点。

每次用户显示我的 WatchApp 时,我都需要从 iOS 应用程序中获取一组必须在 Watch 上显示的新数据。

为了获取这些数据,我使用了 sendMessage(_:replyHandler:errorHandler:) 但有时似乎这种通信不起作用,因为我的 WatchApp 没有更新。
从 Xcode 启动 WatchApp 时我没有问题,只有在我在现实生活中使用它时才会出现问题。

每次我的 WatchApp 回调时,我都会触发 WatchApp 和 iOS App 之间的同步:

  • WKInterfaceController.willActivate() (我只有一个Controller)
  • WCSessionDelegate.session(WCSession, didReceiveApplicationContext:
    [字符串:任意])
    当activationState == .activated
  • WCSessionDelegate.sessionReachabilityDidChange(WCSession) 当。。。的时候
    session 可达

  • 在 2015 年 WWDC 的视频“介绍 Watch Connectivity”中,演讲者告诉 WatchKit Extension 必须运行 前景 向 iOS App 发送交互式消息时。

    这是否意味着我需要检查 WKExtention.shared().applicationState == .active 之前调用 sendMessage(_:replyHandler:errorHandler:) , 除了 WCSession.activationState == .激活 ?

    当我的 WatchApp 在 Dock 中并且用户显示 Dock 时,我的 WatchApp 有一个 WKExtension.shared().applicationState == .inactive WKExtension.shared().isApplicationRunningInDock == true ,我可以使用 sendMessage(_:replyHandler:errorHandler:) 在这种状态下更新我的应用程序吗?

    我只是想知道在使用 sendMessage(_:replyHandler:errorHandler:) 之前需要检查哪些条件。

    谢谢,

    最佳答案

    当我发送 watch 连接消息时,我总是检查 session.activationState == .activated && session.isReachable。此外,我通常会发送初始消息并等待手机响应,然后再请求数据。由于某种原因,这似乎使响应比最初请求数据更可靠。这是一个例子

    func sendActivationMessage() {
    if session.activationState == .activated && session.isReachable {
    session.sendMessage(["Watch Message" : "Activate"], replyHandler: { (reply) in

    // Send message requesting data

    }, errorHandler: { (error) in

    print("***** Error Did Occur: \(error) *****")
    })
    } else {
    print("***** Activation Error *****")
    }
    }

    如果 print("***** Activation Error *****") 被调用,那么您知道电话无法接通。

    关于ios - 用于实时消息传递的 WKExtension 状态和 sendMessage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47112220/

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