【问题标题】:Apple Watch app detect if a apple watch is paired with the phoneApple Watch 应用检测 Apple Watch 是否与手机配对
【发布时间】:2015-04-15 21:27:34
【问题描述】:

当用户在手机上打开应用时,有没有办法检测手机是否已配对/连接到 Apple Watch?

【问题讨论】:

  • 您的问题标题和问题内容相互矛盾。在标题中,您在问can we detect from an apple watch app that the watch is paired with an iPhone or not,而在问题内容中,它完全颠倒了-can we detect from an iPhone app that the phone is paired/connected to an apple watch。我认为,您应该考虑更新此问题标题,因为您已经收到与问题内容相关的答案。

标签: ios cocoa-touch watchkit


【解决方案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 是否已配对,这不是一个很好的解决方案。”将其作为对实际答案的评论,因为这样可以保持对话清晰。
  • 即使我的应用与 Apple Watch 没有任何关系,此语句是否会返回 true?
  • 我现在测试了它,它可以工作。但是,手表会收到一条消息以信任/接受该应用程序。如果目标只是简单地检查是否有 AppleWatch,那似乎有点苛刻。另一方面,if 语句 if session.paired 在用户获得手表上的对话框之前返回 true,因此用户是否接受应用程序并不重要。
【解决方案2】:

没有内置方法(至少在 WatchKit SDK 中)可以确定手表是否已与 iPhone 配对。一种常见的策略是将 BOOL 写入共享的 NSUserDefaults(使用应用程序组),以便 iPhone 知道 Watch 应用程序已至少运行一次。这是我在自己的应用中使用的技术。

【讨论】:

  • 在 NSUserDefaults 中使用布尔值不适用于正确的登录用户。例如,如果您需要对 Watch 应用程序的额外权限,您不想向所有人询问。但是,您也不想强迫人们打开您的 Watch 应用程序,在他们打开 iPhone 应用程序然后请求权限之前阅读它是不可用的。 @bilalreffas 的回答很好。
  • 不幸的是,WatchOS 1 中没有其他方法。WatchOS 2 引入了取代我的答案的新功能。
【解决方案3】:

如果您的扩展程序中的代码在您的控制器上运行 willActivate:,则 Apple Watch 与手机配对。由于您无法在实际的 Apple Watch 上运行任何代码,因此无法知道手表是否未与 iPhone 配对。

【讨论】:

  • 我可以显示一个 UI 让用户知道他的手表没有与他的 iPhone 配对吗?在我的发现中 - 如果 Apple Watch 没有与 iPhone 配对,那么它不会显示任何 UI 元素,只会显示黑屏。你处理过这个案子吗?
猜你喜欢
  • 1970-01-01
  • 2022-07-27
  • 1970-01-01
  • 2015-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多