2015-01-06 8 views
7

Ich erstelle eine iwatch-App, um nur einen Wert auf watch anzuzeigen, wenn ich auf eine Tabellenansicht in der iphone app klicke.NSUserDefault Änderungsbenachrichtigungsbehandlung in watchppExtension

Ich möchte eine Benachrichtigung über eine gemeinsame Benutzerdefault Wertänderungen erhalten. Es wird zwischen Watchkitapp und iPhone App geteilt. Wenn der Benutzer also Änderungen am Telefon vornimmt, muss ich die Benachrichtigung erhalten. Ich habe folgende

getan

Wenn der Benutzer am Telefon, eine Aktion in applicaton tun

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]; 

in der watchkit Erweiterung haben sich für die Benachrichtigung

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

registriert Aber leider bin ich keine Benachrichtigungen erhalten weiß jemand irgendeine Lösung

+0

Haben Sie aktiviert 'App Group' für Ihre Anwendung und Erweiterung zu tun? – iphonic

+0

@iphonic ja. Es ist sowohl für die Erweiterung als auch für die App – ManuRaphy

+1

aktiviert. Ich kann die ausgewählten Daten über den Benutzerdefault abrufen. Aber was ich brauche, ist eine Aktion zum Zeitpunkt der Benutzerdefault ändern – ManuRaphy

Antwort

2

Ich glaube nicht, dass iOS die Fähigkeit distributed notifications zwischen App und Erweiterung, Benachrichtigungen hat funktioniert nicht zwischen beiden, stattdessen müssen Sie einen Weg finden, auf dem beide Änderungen überwachen können. Zum Beispiel Dateien.

Wie Sie bereits group erstellt haben, können Sie eine Datei in den Gruppenordner halten und eine filewatcher in Erweiterung hinzufügen, aktualisieren Sie die Datei von App und filewatcher wird die Änderung fangen, und Ihre Arbeit ist getan.

Für filewatcher siehe Code here.

Ich hoffe, es hilft.

Prost.

aktualisieren

File watcher Swift versionhere finden. Danke @rivera für das Hinzufügen.

+0

Vielen Dank für Ihren Vorschlag. Aber kann mir bitte sagen, wie man Dateien in der Gruppe teilt? – ManuRaphy

+0

danke iphonic, es hat funktioniert. !!!!! – ManuRaphy

+0

@ManuRaphy Es ist einfach, Sie müssen nur eine Datei im Gruppenordner erstellen und aktualisieren, indem Sie 'NSUserDefaultNotification' nur in der App abfangen. Sie greifen auf Gruppenordner zu, indem Sie' [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier: GROUPKEY] .path; ' – iphonic

2

Sie können MMWormHole versuchen, die lautet:

  • ein Kanal zwischen dem iOS-Gerät und die Uhr, die Sie zum Senden von Daten hin und her zwischen ihnen ermöglicht.
  • Bietet auch eine Möglichkeit, Benachrichtigungen zu tun, ohne die Dateiüberwachung selbst zu handhaben.

es verwenden, dass alle Code sein benötigt Benachrichtigungen in ur App

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

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