2015-04-15 14 views

risposta

10

Non esiste alcun metodo integrato (almeno nel WatchKit SDK) per determinare se un orologio è stato accoppiato con un iPhone. Una strategia comune è scrivere un BOOL su un NSUserDefaults condiviso (utilizzando gruppi di app) in modo che l'iPhone sappia che l'app Watch è stata eseguita almeno una volta. Questa è la tecnica che ho usato nella mia app.

+1

Utilizzando un valore booleano nel NSUserDefaults non funzionerebbe con l'utente corretto al momento dell'imbarco. Ad esempio, se hai bisogno di autorizzazioni extra per l'app Watch, non devi chiederlo a tutti. Tuttavia, non vuoi forzare le persone ad aprire l'app di visualizzazione, ma non è utilizzabile finché non aprono l'app per iPhone e poi chiedono i permessi. la risposta di @bilalreffas è abbastanza buona. – SpacyRicochet

+2

Sfortunatamente, non c'era nessun altro metodo in WatchOS 1. WatchOS 2 ha introdotto nuove funzionalità che sostituiscono la mia risposta. –

1

Se il codice dell'estensione viene eseguito willActivate: sul controller, Apple Watch viene accoppiato al telefono. Dal momento che non puoi eseguire alcun codice sull'effettivo Apple Watch, non c'è da sapere se l'orologio non è abbinato a un iPhone.

23

Quindi su WatchOS 2 è possibile!

Devi fare su iPhone lato:

Primo:

import WatchConnectivity 

Poi:

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 
     } 
    } 

Spero Sarebbe aiutare :)

+1

Non si dovrebbe commentare la risposta di altri nella propria risposta. "Per aggiungere un valore booleano alle impostazioni di condivisione per verificare se l'iPhone è accoppiato non è una soluzione eccezionale." Fatelo come commento sulla risposta effettiva, poiché ciò mantiene chiara la conversazione. – SpacyRicochet

+0

Questa istruzione restituirà true anche se la mia app non ha nulla a che fare con Apple Watch? – Sti

+2

L'ho testato ora e funziona. Tuttavia, l'orologio riceverà un messaggio di fiducia/accettazione dell'applicazione. Se l'obiettivo è semplicemente controllare se c'è un Apple Watch, sembra un po 'duro. D'altra parte, l'istruzione if 'if session.paired' restituisce true prima che l'utente ottenga la finestra di dialogo sull'orologio, quindi non importa se l'utente accetta l'app o meno. – Sti

Problemi correlati