2015-01-06 20 views
7

Tôi đang tạo ứng dụng iwatch chỉ để hiển thị giá trị trên đồng hồ khi nhấp vào một chế độ xem bảng trong ứng dụng iphone.NSUserThay đổi thông báo thay đổi mặc định trong watchppExtension

tôi muốn nhận thông báo về các thay đổi giá trị mặc định của người dùng. nó được chia sẻ giữa ứng dụng watchkitapp và iphone, vì vậy khi người dùng thực hiện bất kỳ thay đổi nào trong điện thoại, tôi phải nhận được thông báo. tôi đã làm những điều sau đây

Khi người dùng thực hiện một số hành động trong applicaton trên điện thoại

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

trong phần mở rộng watchkit đã đăng ký thông báo

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

Nhưng tiếc là tôi không nhận được bất kỳ thông báo , bất kỳ ai biết một số giải pháp

+0

Bạn đã kích hoạt 'App Group' cho ứng dụng và phần mở rộng của bạn? – iphonic

+0

@iphonic yes. được bật cho cả tiện ích mở rộng và ứng dụng – ManuRaphy

+1

tôi có thể nhận dữ liệu được chọn thông qua userdefault. Nhưng những gì tôi cần là để thực hiện một hành động tại thời điểm thay đổi userdefault – ManuRaphy

Trả lời

2

Tôi không nghĩ rằng iOS có khả năng distributed notifications giữa ứng dụng và tiện ích, thông báo sẽ không làm việc giữa cả hai, thay vào đó bạn cần phải tìm một cách mà cả hai có thể theo dõi thay đổi. Ví dụ các tập tin.

Như bạn đã tạo group, bạn có thể giữ một tệp trong thư mục nhóm và thêm filewatcher trong tiện ích mở rộng, cập nhật tệp từ ứng dụng và filewatcher sẽ bắt sự thay đổi và công việc của bạn đã hoàn tất.

Đối với filewatcher xem mã here.

Hy vọng điều đó sẽ hữu ích.

Chúc mừng.

Cập nhật

Tìm File watcher Swift versionhere. Cảm ơn @rivera để thêm.

+0

Cảm ơn đề xuất của bạn. Nhưng xin vui lòng cho tôi biết làm thế nào để chia sẻ tập tin trong nhóm? – ManuRaphy

+0

cảm ơn Bạn đã làm việc, nó hoạt động. !!!!! – ManuRaphy

+0

@ManuRaphy Đơn giản của nó, bạn chỉ cần tạo một tệp trong thư mục nhóm và cập nhật nó bằng cách bắt 'NSUserDefaultNotification' trong ứng dụng duy nhất, bạn truy cập thư mục nhóm bằng cách sử dụng' [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier: GROUPKEY] .path; ' – iphonic

2

Bạn có thể thử MMWormHole cung cấp:

  • một kênh giữa thiết bị iOS và chiếc đồng hồ cho phép bạn gửi dữ liệu qua lại giữa chúng.
  • Cũng cung cấp cách thực hiện Thông báo mà không phải xử lý việc theo dõi tệp của chính mình.

Sử dụng nó, đó sẽ là tất cả các mã cần thiết để làm thông báo trong ứng dụng ur

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

[self.wormhole listenForMessageWithIdentifier:@"button" 
    listener:^(id messageObject) { 
    self.numberLabel.text = [messageObject[@"buttonNumber"] stringValue]; 
}]; 
Các vấn đề liên quan