2015-04-15 183 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

相關問題