2015-01-06 10 views
20

Czy istnieje sposób powiadomienia użytkownika w Apple Watch, że iPhone jest teraz poza zasięgiem i kiedy wraca w zasięgu. Jak możemy to zrobić w rozszerzeniu oglądania?Jak sprawdzić, czy iPhone i zegarek Apple są połączone?

Z góry dziękuję.

+0

W tej chwili nie ma powiadomienia ani delegata, który poinformuje Cię, że telefon jest poza zasięgiem. Tylko jedna myśl: może mógłbyś użyć [openParentApplication] (https://developer.apple.com/library/prerelease/ios/documentation/WatchKit/Reference/WKInterfaceController_class/index.html#//apple_ref/occ/clm/WKInterfaceController/ openParentApplication: odpowiedz :) i sprawdź, czy możesz pingować iPhone'a. Tylko przeczucie, nie próbowałem tego. – GoodSp33d

Odpowiedz

0

Z obecnego punktu wiedzenia prawdopodobnie nie będzie to możliwe.

Od Apple WatchKit App Architecture

Po wybraniu sceny WatchKit opowiada sparowany iPhone uruchomienie swoje rozszerzenie WatchKit i tworzyć przedmioty potrzebne do zarządzania danym scenę. Gdy scena jest w pełni skonfigurowana, jest ona wyświetlana na Apple Watch Apple Watch . Przekazywanie informacji między aplikacją WatchKit i rozszerzeniem WatchKit odbywa się w sposób przejrzysty za kulisami.

Oznacza to, że kod jest wykonywany na iPhonie. Jeśli iPhone jest poza zasięgiem, nie będzie można uruchomić aplikacji na zegarku.

+0

W rzeczywistości musimy wyświetlić widok alertu, gdy telefon znajdzie się poza zasięgiem. Chyba powinien być jakiś sposób. –

+1

@MohitTotlani nie, jeśli iPhone znajdzie się poza zasięgiem, aplikacja do zegarka zostanie zamknięta, ponieważ nie będzie działać bez telefonu! –

1

Z formalnego punktu widzenia firma Apple nie podała żadnego wskazania, w jaki sposób będzie to obsługiwane.

Jednak biorąc pod uwagę parowanie i obszar komunikacji obsługiwany przez system operacyjny bez udziału aplikacji, wydaje się prawie pewne, że wszelkie powiadomienia użytkownika dotyczące problemów z połączeniem na zegarku (i na końcu telefonu) będą obsługiwane przez Watch Watch także. Domyślam się, że użytkownik będzie miał możliwość rozwiązania problemu utraty łączności lub zamknięcia aplikacji Watch, jeśli nie będzie mógł. Z perspektywy programisty jest wysoce prawdopodobne, że nasze aplikacje nie będą w stanie odróżnić nierozwiązanej utraty połączenia od użytkownika, który zwykle opuszcza aplikację, z tym samym powiadomieniem wysyłanym do rozszerzenia Watch, ale to tylko domysły .

Należy zauważyć, że na zegarze nie ma uruchomionego kodu innej firmy dla bieżących aplikacji Watch, tylko interfejs użytkownika, więc nawet nierozwiązana utrata połączenia nie spowoduje utraty danych. Jeśli aplikacja Watch Extension (działająca na iPhonie) zostanie wyłączona przez system operacyjny z powodu utraty połączenia z zegarkiem, nadal będzie mogła wykonywać zwykłe przechowywanie i czyszczenie danych.

8

Tak na WatchOS 2 jest to możliwe!

Musisz zrobić na stronie iPhone:

pierwsze:

import WatchConnectivity 

wówczas:

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

Mam nadzieję, że to pomoże Ci :)

+1

Czy są jakieś powiadomienia na zegarku, które zostaną uruchomione, gdy połączenie z iPhonem zostanie nagle przerwane? –

+0

Tak, oczywiście! Następnie na zegarze pojawi się czerwony telefon anulowania: – BilalReffas

+0

Jak mogę obserwować to powiadomienie w moim rozszerzeniu Watchkit lub w macierzystej aplikacji na zegarki? –

5

Dzięki watchOS 2.0 możesz. Aby to zrobić, należy dodać je do swojej ExtensionDelegate jeśli chciał Apple Watch aby otrzymać powiadomienie:

func watchKitSetup() {  
    if (WCSession.isSupported()) { 
     let session = WCSession.defaultSession() 
     session.delegate = self 
     session.activateSession() 

     // In your WatchKit extension, the value of this property is true when the paired iPhone is reachable via Bluetooth. 
     // On iOS, the value is true when the paired Apple Watch is reachable via Bluetooth and the associated Watch app is running in the foreground. 
     // In all other cases, the value is false. 
     if session.reachable { 

     } 
    } 
} 

func applicationDidFinishLaunching() { 
    self.watchKitSetup() 
} 

// Called when session.reachable value changes, such as when a user wearing an Apple Watch gets out of range of their iPhone. 
func sessionReachabilityDidChange(session: WCSession) { 
    if session.reachable { 

    } 
} 

Należy również dodać WCSessionDelegate do ExtensionDelegate.

Powiązane problemy