苹果手表应用如何检测手表是否与手机配对成功

9

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


你的问题标题和问题内容相互矛盾。在标题中,你问“我们能否从Apple Watch应用程序检测到手表是否与iPhone配对”,而在问题内容中完全相反,“我们能否从iPhone应用程序检测到手机是否已配对/连接到Apple Watch”。我认为,你应该考虑更新这个问题的标题,因为你已经收到了与问题内容相关的答案。 - Hemang
3个回答

25

所以在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
        }
    }

我希望它能对你有所帮助 :)


1
你不应该在自己的答案中评论其他人的答案。"将布尔值添加到共享默认值以检查iPhone是否已配对并不是一个好的解决方案。"请在实际答案下发表评论,因为这可以保持对话清晰。 - SpacyRicochet
即使我的应用程序与Apple Watch无关,这个语句是否会返回true? - Sti
2
我现在测试了一下,它可以工作。然而,手表会收到一个信任/接受应用程序的消息。如果目标只是检查是否有AppleWatch,那似乎有点苛刻。另一方面,if语句if session.paired会在用户在手表上收到对话框之前返回true,因此无论用户是否接受该应用程序都没有关系。 - Sti

10

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


1
在NSUserDefaults中使用布尔值对于适当的用户引导是行不通的。例如,如果您的手表应用程序需要额外的权限,您不希望向每个人都询问。然而,您也不希望强迫用户打开手表应用程序,阅读它在打开iPhone应用程序之前是不可用的,然后再请求权限。@bilalreffas的答案非常好。 - SpacyRicochet
2
不幸的是,在WatchOS 1中没有其他方法。 WatchOS 2引入了新功能,取代了我的答案。 - Mike Swanson

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

我能否显示一个UI来让用户知道他的手表没有与iPhone配对?根据我的发现,如果Apple Watch没有与iPhone配对,则不会显示任何UI元素,只会显示黑屏。你处理过这种情况吗? - Hemang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接