2015-09-17 25 views
7

To nie był problem na watchOS 1, ale teraz na watchOS 2 nie mogę odczytać wartości na przedłużeniu zegarka.ustawienia Nie zwijaj pracy na watchOS 2

Według Apple docs, jest to możliwe. Według niektórych ludzi na this thread, jest to możliwe. Według pracownika Apple na this thread, jest to możliwe.

mam wszystko jest skonfigurowane poprawnie o ile mogę powiedzieć:

  • Włączyłem aplikacji Grupy zarówno na iOS i oglądać rozszerzenie z samym identyfikatorem.
  • dodałem Ustawienia-Watch.bundle do aplikacji iOS i dodaje ApplicationGroupContainerIdentifier z tym samym identyfikatorem do plist

Kiedy zainicjować NSUserDefaults obiekt z identyfikatorem jak nazwa łazienką, nie mogę czytać wartości w rozszerzeniu oglądania. Mogę je przeczytać w aplikacji na iOS. Zdarza się to w symulatorze i prawdziwym urządzeniu.

proszę nie pisać odpowiedź o tym, jak to zrobić z Watch połączeń. Jest możliwe, aby to zrobić z zaledwie udostępnionych App grup na watchOS 2 bez Watch Łącze, ludzie są w stanie to zrobić, i to jest tutaj prosto z docs:

W watchOS 2, Twój rozbudowa WatchKit może odczytaj wartości preferencji, ale nie możesz pisać nowych wartości. Preferencje w watchOS 2 są przekazywane z iOS do Apple Watch, ale wszelkie wprowadzone modyfikacje nie są wysyłane z powrotem do systemu iOS.

+0

Czy możesz przesłać przykład, w jaki sposób próbujesz odczytać pakiet ustawień? – agy

+0

Próbowałem tego również na zegarku i mogę potwierdzić, że problem nadal występuje! (Włączone grupy, z odpowiednim profilem i ustawieniami) – insanoid

Odpowiedz

7

Edytowałem swoją odpowiedź. Wcześniej mówiono o niemożności używania grup aplikacji do synchronizowania danych w zegarku watchOS 2, ale twoje konkretne pytanie dotyczy pakietu ustawień, który wciąż jest synchronizowany z iOS do Apple Watch w watchOS 2.

Nie mogę uzyskać to do pracy w Xcode 7.1/7.2 w symulatorze, ale to działa na rzeczywistym urządzeniu. Od docs:

Preferencje w watchOS 2 są przekazywane z iOS w Apple Watch, ale wszelkie zmiany wprowadzone nie są odsyłane do iOS. W funkcji watchOS 1 rozszerzenia WatchKit mają bezpośredni dostęp do domyślnej bazy danych i mogą odczytywać i zapisywać wartości.

Wszystkie 3 cele powinny mieć takie same Grupa App skonfigurowana (cel Watch App tutaj wydaje się być składnikiem brakuje w OPS pytanie):

targets app group

Moje ustawienia wiązka :

enter image description here enter image description here

Niektóre prosty kod interfejsu w InterfaceController.swift:

@IBOutlet var label: WKInterfaceLabel! 

@IBAction func buttonAction() { 

    let sharedDefaults = NSUserDefaults.init(suiteName: "group.testSettings") 
    let name_preference = String(sharedDefaults?.objectForKey("name_preference")) 
    self.label.setText(name_preference) 
} 

i ostateczny wynik:

enter image description here enter image description here

Tak, to działa zgodnie z oczekiwaniami, tylko nie w Symulator. Wygląda na to, że pomiędzy dwoma urządzeniami w Symulatorze występuje pewna izolacja, a to trochę frustrujące, gdy próbuję dokładnie określić, co się tam dzieje.

+0

Pierwszy blok cytowanego tekstu jest dokładnie tym, o czym mówię. "Preferencje w watchOS 2 są przekazywane z iOS do Apple Watch". Po co mieliby pisać, jeśli to nie jest kłamstwo? – spybart

+0

również sprawdź moje zmienione pytanie, umieszczam link do wątku, gdzie pracownik Apple mówi, że jest to możliwe. – spybart

+0

To jest interesujące i staram się z Tobą przezwyciężyć :) Masz na myśli ten cytat, tak? "Istnieje jednak jeden wyjątek, a jest to pakiet ustawień, który zostanie automatycznie zsynchronizowany z iPhone'a na Watch." Wygląda na to, że pakiet ustawień ma być nadal przesłany do Apple Watch. –

0

Dzieje się tak dlatego, że aplikacje działają teraz w trybie macierzystym w Apple Watch, co oznacza, że ​​nie są w stanie uzyskać ustawień z iPhone'a, ponieważ ustawienia nie są już przechowywane na tym samym urządzeniu. Więcej informacji: Unable to get values from settings bundle in watchOS 2

+0

Twoja odpowiedź nie dotyczy tego scenariusza. Przeczytaj wątki, do których odwołam się w pytaniu. – spybart

+2

Czekaj, co? Moja odpowiedź została opublikowana, gdy to pytanie zawierało znacznie mniej informacji. – Roel

-1

Nowy proces obsługi za pomocą `WCSessions można zobaczyć w przykładowej aplikacji Apple - Lister w poniższym pliku.

https://developer.apple.com/library/ios/samplecode/Lister/Listings/Objective_C_ListerKit__WatchOS__AAPLConnectivityListsController_m.html#//apple_ref/doc/uid/TP40014701-Objective_C_ListerKit__WatchOS__AAPLConnectivityListsController_m-DontLinkElementID_57

Również odpowiedź wymienionych w https://stackoverflow.com/a/32628105/1640786 wydaje się, aby cały proces o wiele bardziej wygodne.

+0

Proszę przerwać publikowanie odpowiedzi sugerujących użycie funkcji WatchConnectivity. Celem tego wątku jest przekonanie, że ten proces działa przy użyciu wspólnych grup aplikacji, bez żadnego kodu WatchConnectivity. Tak to mozliwe. – spybart