2015-01-06 29 views
7

bildirim bildirimi değiştirme Ben sadece iphone app bir tablo görünümü tıklattığınızda saatte bir değer görüntülemek için bir iwatch uygulaması oluşturuyorum.NSUserDefault watchppExtension

Paylaşılan userdefault değer değişikliklerinde bildirim almak istiyorum. watchkitapp ve iphone uygulaması arasında paylaşılır, bu yüzden kullanıcı telefonda herhangi bir değişiklik yaptığında bildirimi almam gerekir. i aşağıdakileri

yapmış kullanıcı watchkit uzantısında telefondan

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

üzerine applicaton bazı eylem yaptığınızda bildirim için kayıt yaptıran

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

Ama ne yazık ki ben herhangi bir bildirim almıyorum herhangi biri bir çözüm biliyorum

+0

uygulamanızda ve uzatılması için 'App grup adı' etkin mı ur uygulamasında bildirimleri yapmak için gerekli tüm kodu olacak? – iphonic

+0

@iphonic yes. Hem uzantı hem de uygulama için etkinleştirilmiş – ManuRaphy

+1

Seçilen verileri userdefault üzerinden alabiliyorum. Ama ihtiyacım olan şey, userdefault değişikliği sırasında bir işlem yapmaktır. – ManuRaphy

cevap

2

iOS'un uygulama ve uzantı, bildirimler arasında distributed notifications yeteneğine sahip olduğunu sanmıyorum ikisi arasında çalışmaz, bunun yerine her ikisinin de değişiklikleri izleyebileceği bir yol bulmanız gerekir. Örneğin dosyalar.

Zaten group oluşturduk olarak, grup klasördeki bir dosyayı tutmak ve uzantısında bir filewatcher ekleyin güncellemek dosyayı uygulamasından ve filewatcher değişikliği yakalayacak ve işiniz tamamdır olabilir.

filewatcher için bkz. Kod here.

Yardım edin.

Şerefe.

Güncelleme

File watcher Swift versionhere bulun. Eklemek için teşekkürler @rivera.

+0

Öneriniz için teşekkürler. Ama lütfen bana dosyada nasıl grup paylaşılacağını söyler misiniz? – ManuRaphy

+0

Teşekkürler, iphonic, işe yaradı. – ManuRaphy

+0

@ManuRaphy Basit, sadece grup klasöründe bir dosya oluşturmanız ve sadece uygulamada 'NSUserDefaultNotification 'ı yakalayarak güncellemeniz gerekiyor,' [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier: GROUPKEY] .path; – iphonic

2

Sen sağlar MMWormHole deneyebilirsiniz:

  • iOS cihazı ve ileri geri aralarında veri göndermek sağlayan saatiniz arasında bir kanal.
  • Ayrıca, dosya izlemeyi kendiniz halletmek zorunda kalmadan Bildirimler yapmanın bir yolunu da sağlar. Bunu kullanarak

That

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

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