2015-01-06 19 views
7

tworzę aplikację watch tylko po to, aby wyświetlić wartość na zegarku po kliknięciu widoku tableview w aplikacji na iPhone'a.NSUserDefault zmiana obsługi powiadomień w watchppExtension

Chciałbym otrzymać powiadomienie na temat zmian wartości udostępnionego użytkownika. jest on dzielony między aplikację watchkitapp i iphone, więc gdy użytkownik wprowadza zmiany w telefonie, muszę otrzymać powiadomienie. mam zrobić następujące

Kiedy użytkownik zrobić jakąś akcję w applicaton na telefon

NSUserDefaults *shared = [[NSUserDefaults alloc] initWithSuiteName:@"group.app"];</br> 
id object = [self.plantsArray objectAtIndex:[self.plantsTable indexPathForSelectedRow].row];</br> 
[shared setObject:object forKey:@"data"];</br> [shared synchronize]; 

w rozszerzeniu watchkit zarejestrowany dla powiadomienia

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(print) name:NSUserDefaultsDidChangeNotification object:nil]; 

Ale niestety nie otrzymuję żadnych powiadomień , ktoś zna jakieś rozwiązanie

+0

Czy włączona 'App Grupą swojej aplikacji i rozbudowy? – iphonic

+0

@iphonic tak. jego włączona dla rozszerzenia i aplikacji – ManuRaphy

+1

jestem w stanie uzyskać wybrane dane przez użytkownika. Ale potrzebuję wykonać akcję w czasie zmiany domyślnej użytkownika – ManuRaphy

Odpowiedz

2

Nie sądzę, że iOS ma możliwość distributed notifications między aplikacją a rozszerzeniem, powiadomienia nie będzie działać między oboma, zamiast tego musisz znaleźć sposób, w jaki obie mogą monitorować zmiany. Na przykład pliki.

Jak już stworzyliśmy group, można zachować plik w folderze grupy i dodać filewatcher w rozszerzeniu, zaktualizuj plik z aplikacją i filewatcher złapie zmianę, a praca jest wykonywana.

Dla filewatcher patrz kod here.

Mam nadzieję, że to pomaga.

Pozdrawiam.

Aktualizacja

Znajdź File watcher Swift versionhere. Dzięki @rivera za dodanie.

+0

Dzięki za twoją sugestię. Ale czy możesz mi powiedzieć, jak udostępnić plik w grupie? – ManuRaphy

+0

dziękuję iphonic, zadziałało. !!!!! – ManuRaphy

+0

@ManuRaphy To proste, wystarczy utworzyć plik w folderze grupy i zaktualizować go poprzez przechwycenie 'NSUserDefaultNotification' tylko w aplikacji, dostęp do folderu grupy za pomocą' [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier: GROUPKEY] .path; ' – iphonic

2

Można spróbować MMWormHole który stanowi:

  • kanał między urządzeniem z systemem iOS i zegarka, który umożliwia wysyłanie danych iz powrotem między nimi.
  • Umożliwia także wykonywanie powiadomień bez konieczności samodzielnego obsługiwania monitorowania plików.

Używając go, że będzie cały kod potrzebny do zrobienia powiadomień w ur aplikacji

[self.wormhole passMessageObject:@{@"buttonNumber" : @(1)} identifier:@"button"]; 

[self.wormhole listenForMessageWithIdentifier:@"button" 
    listener:^(id messageObject) { 
    self.numberLabel.text = [messageObject[@"buttonNumber"] stringValue]; 
}];