2015-04-15 127 views

回答

10

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

+1

使用布尔在NSUserDefaults无法在登机时使用正确的用户。例如,如果您需要为Watch应用程序提供额外的权限,则不需要向所有人咨询。但是,您也不希望强制用户打开您的Watch App,只有在他们打开iPhone应用程序并请求权限之前,才能使用它。 @bilalreffas的答案很不错。 – SpacyRicochet

+2

不幸的是,WatchOS 1中没有其他方法。WatchOS 2引入了新功能,取代了我的答案。 –

1

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

23

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

+0

即使我的应用程序与Apple Watch没有任何关系,该声明是否会返回true? – Sti

+2

我现在测试了它,它工作。但是,手表会收到一条信息来信任/接受该应用程序。如果目标是简单地检查是否有AppleWatch,那看起来有点苛刻。另一方面,在用户获得手表上的对话之前,if语句'if session.paired'返回true,所以用户是否接受该应用程序并不重要。 – Sti

相关问题