2015-01-06 7 views
7

sto creando un'app iwatch solo per visualizzare un valore sull'orologio quando si fa clic su un tableview nell'app per iPhone.NSUserDefault modifica notifica gestione in watchppExtension

Vorrei ricevere una notifica su un valore di utente predefinito modificato. è condiviso tra watchkitapp e l'app per iphone, quindi quando l'utente apporta modifiche nel telefono devo ricevere la notifica. ho fatto la seguente

Quando l'utente fare qualche azione in applicaton sul telefono

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

nell'estensione watchkit si sono registrati per la notifica

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

ma purtroppo non ricevo alcuna notifica , qualcuno conosce qualche soluzione

+0

Avete abilitato 'App group' per la vostra applicazione e l'estensione? – iphonic

+0

@iphonic sì. è abilitato sia per l'estensione che per l'app – ManuRaphy

+1

sono in grado di ottenere i dati selezionati tramite userdefault. Ma quello di cui ho bisogno è eseguire un'azione al momento del cambio userdefault – ManuRaphy

risposta

2

Non credo che iOS abbia capacità di distributed notifications tra app ed estensione, notifiche non funzionerà tra entrambi, ma è necessario trovare un modo in cui entrambi possono monitorare i cambiamenti. Ad esempio i file.

Come si è creato group, è possibile mantenere un file nella cartella del gruppo e aggiungere un filewatcher in estensione, aggiornare il file da app, e filewatcher prenderà il cambiamento, e il vostro lavoro è fatto.

Per filewatcher vedere codice here.

Spero che aiuti.

Cheers.

Aggiornamento

Trova File watcher Swift versionhere. Grazie @rivera per l'aggiunta.

+0

Grazie per il tuo suggerimento. Ma può dirmi come condividere file nel gruppo? – ManuRaphy

+0

grazie, iphonic, ha funzionato. !!!!! – ManuRaphy

+0

@ManuRaphy È semplice, è sufficiente creare un file nella cartella di gruppo e aggiornarlo rilevando 'NSUserDefaultNotification' solo nell'app, accedere alla cartella di gruppo usando' [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier: GROUPKEY] .path; ' – iphonic

2

Si può provare MMWormHole che prevede:

  • un canale tra il dispositivo iOS e l'orologio, che consente di inviare i dati avanti e indietro tra di loro.
  • Fornisce anche un modo per fare Notifiche senza dover gestire il monitoraggio dei file da soli.

Usandolo, Questo è tutto il codice necessario per fare le notifiche in ur app

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

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