【问题标题】:How to check whether iPhone and apple watch are connected如何检查iPhone和Apple Watch是否连接
【发布时间】:2015-03-03 18:59:42
【问题描述】:

有什么方法可以在 Apple Watch 中通知用户 iPhone 现在超出范围以及何时返回范围。我们如何在手表扩展中做到这一点。

提前致谢。

【问题讨论】:

  • 目前还没有通知或委托让您知道电话无法接通。只是一个想法:也许你可以使用openParentApplication 看看你是否能够ping iPhone。只是预感,没试过。

标签: ios watchkit apple-watch


【解决方案1】:

所以在 WatchOS 2 上是可能的!

你必须在 iPhone 端做:

第一:

import WatchConnectivity

然后:

   if WCSession.isSupported() { // check if the device support to handle an Apple Watch
        let session = WCSession.defaultSession()
        session.delegate = self
        session.activateSession() // activate the session

        if session.paired { // Check if the iPhone is paired with the Apple Watch
                // Do stuff
        }
    }

希望对你有帮助:)

【讨论】:

  • 与iPhone的连接突然断开时,手表上是否会触发任何通知?
  • 当然可以!然后你会在手表上看到一个红色的取消电话:
  • 如何在我的 watchkit 扩展程序或 watchkit 本机应用程序中观察到该通知?
  • 配对不正确,表示您已将手表与手机进行设置。你想要可达的属性。
  • 但如果手表应用不在前台,则配对返回false。如果您只想知道手表是否已连接怎么办?例如,确定通知是发送到手机还是手表?
【解决方案2】:

使用 watchOS 2.0,您可以。为此,如果您希望 Apple Watch 收到通知,请将这些添加到 ExtensionDelegate:

func watchKitSetup() {    
    if (WCSession.isSupported()) {
        let session = WCSession.defaultSession()
        session.delegate = self
        session.activateSession()

        // In your WatchKit extension, the value of this property is true when the paired iPhone is reachable via Bluetooth.
        // On iOS, the value is true when the paired Apple Watch is reachable via Bluetooth and the associated Watch app is running in the foreground.
        // In all other cases, the value is false.
        if session.reachable {

        }
    }
}

func applicationDidFinishLaunching () {
    self.watchKitSetup()
}

// Called when session.reachable value changes, such as when a user wearing an Apple Watch gets out of range of their iPhone.
func sessionReachabilityDidChange(session: WCSession) {
    if session.reachable {

    }
}

您还应该将 WCSessionDelegate 添加到您的 ExtensionDelegate。

【讨论】:

    【解决方案3】:

    从正式的角度来看,Apple 没有给出任何处理方式的指示。

    但是,鉴于操作系统在没有应用程序参与的情况下处理配对和通信区域,似乎几乎可以肯定,任何有关手表(和手机端)连接问题的通知都将由 Watch OS 处理为好吧。我的猜测是,用户将有机会解决连接丢失的问题,或者如果他们不能退出 Watch 应用程序。从开发人员的角度来看,我们的应用程序很可能无法区分未解决的连接丢失和用户正常退出应用程序,同时向任一应用程序发送相同的通知,但这只是一个猜测.

    需要注意的是,目前的手表应用程序没有在手表上运行第三方开发者代码,只是一个 UI,因此即使未解决的连接丢失也不会导致任何数据丢失。如果手表扩展程序(在 iPhone 上运行)由于与手表的连接中断而被操作系统退出,它仍然能够进行其通常的数据存储和清理。

    【讨论】:

      【解决方案4】:

      从目前的知识来看,这可能是不可能的。

      来自 Apple 的WatchKit App Architecture

      选择场景后,WatchKit 会告诉配对的 iPhone 启动 您的 WatchKit 扩展并创建管理它所需的对象 场景。当场景完全配置好后,在 Apple 上显示 手表。 WatchKit 应用程序和之间的信息传输 WatchKit 扩展在幕后透明地发生。

      也就是说,代码是在 iPhone 上执行的。如果 iPhone 无法触及,则无法在手表上运行该应用程序。

      【讨论】:

      • 实际上我们需要在手机无法触及时显示警报视图。我想应该有什么办法。
      • @MohitTotlani 不,如果 iPhone 超出范围,手表应用将退出,因为它无法在没有手机的情况下运行!
      【解决方案5】:

      您可以在WCSession documentation 中找到所有连接状态更改通知。

      【讨论】:

        猜你喜欢
        • 2020-10-03
        • 1970-01-01
        • 1970-01-01
        • 2022-07-27
        • 2015-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多