2015-08-04 15 views
9

Tôi đang sử dụng EAWiFiUnconfiguredAccessoryBrowser để phát hiện EAWiFiUnconfiguredAccessory. Mã để bắt đầu tìm kiếm phụ kiện, ví dụ như sau:cấu hình phụ kiện không dây trong iOS: EAWiFiUnconfiguredAccessoryBrowser sẽ phát hiện phụ kiện chưa được cấu hình chỉ một lần

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    if (_accessories == nil) { 
     _accessories = [[NSMutableArray alloc] init]; 
    } 

    if (_browser == nil) { 
     _browser = [[EAWiFiUnconfiguredAccessoryBrowser alloc] initWithDelegate:self queue:nil]; 
     _browser.delegate = self; 
    } 
} 

Thật không may, nó chỉ tìm thấy phụ kiện khi lần đầu tiên Chế độ xem tải. Nếu tôi quay lại chế độ xem trước đó và sau đó tải lại chế độ xem, nó sẽ không tìm thấy chúng.

tôi đã cố gắng:

  • tái tạo phụ kiện trình duyệt và khởi động lại tìm kiếm (không hoạt động)
  • dừng việc tìm kiếm và khởi động lại nó (không hoạt động)

Đây là mới nhất mã tôi nhận được (tham khảo điều này cùng với mã bên trên):

- (void) viewWillAppear:(BOOL)animated{ 
    NSLog(@"view will appear"); 

    if (_accessories != nil) { 
     [_accessories removeAllObjects]; 
    } 

    [self.tableView reloadData]; 
    [self initializeBrowswerAndStartSearch]; 
} 

- (void) initializeBrowswerAndStartSearch{ 
    if (_browser != nil) { 
     [_browser stopSearchingForUnconfiguredAccessories]; 
    } 

    [_browser startSearchingForUnconfiguredAccessoriesMatchingPredicate:nil]; 
} 

- (void) viewWillDisappear:(BOOL)animated{ 
    [_browser stopSearchingForUnconfiguredAccessories]; 
} 

I t dường như thông tin danh sách phụ kiện là được lưu trong bộ nhớ cache ở đâu đó trong APP. Nếu tôi khởi động lại APP nó sẽ tìm thấy chúng vì vậy tôi đoán có cái gì đó mà tôi đang thiếu.

Bất kỳ trợ giúp nào?

+0

Yep .. Tôi đã rời khỏi phần này của dự án trong vài tuần và tập trung vào điều gì đó khác hy vọng rằng ai đó có câu trả lời. Hãy giữ cho tôi cập nhật nếu bạn quản lý để tìm hiểu lý do tại sao .. – mm24

+0

Ví dụ chính thức của Apple có cùng một vấn đề. https://developer.apple.com/library/ios/samplecode/HomeKitCatalog/Introduction/Intro.html#//apple_ref/doc/uid/TP40015048 – Adinp

+0

Eh eh ... Apple .. họ có hàng tỷ và điều này xảy ra, Tôi hy vọng họ sẽ sớm giải quyết nó. – mm24

Trả lời

4

vì vậy tôi có cùng một vấn đề .. bạn nên sử dụng mảng unconfiguredAccessories. Ngoài ra, hãy thử giữ phiên bản trình duyệt còn sống. Nếu bạn phát hiện thiết bị một lần và bạn khởi tạo lại trình duyệt, bạn sẽ không tìm thấy lại nó

0

Tôi cũng gặp sự cố này. Vì vậy, tôi xây dựng một singleton được gọi là dịch vụ WAC, sau đó bạn có thể giữ singleton này sống trong vòng đời ứng dụng. Bất cứ nơi nào bạn muốn tải các accissories chưa được cấu hình. Chỉ cần tải nó từ [_browser unconfiguredAccessories].

1

EAWiFiUnconfiguredAccessoryBrowser có sự cố và không cung cấp kết quả đáng tin cậy trong các trường hợp sử dụng nhất định. tôi nghĩ bạn nên thử phương thức này

- (void) viewWillAppear:(BOOL)animated{ 
     NSLog(@"view will appear"); 
     if (_accessories != nil) { 
      [_accessories removeAllObjects]; 
     } 

     [self.tableView reloadData]; 
     [self initializeBrowswerAndStartSearch]; 
    } 

dưới đây làm cho đối tượng trình duyệt không khởi động lại, trong trường hợp này, đối tượng trình duyệt sẽ luôn trả về giá trị cập nhật. Nó làm việc hoàn hảo cho tôi.

-(void) initializeBrowswerAndStartSearch  
{ 
     // Make EAWiFiUnconfiguredAccessoryBrowser object nil and reinitiate ,start searching again 
     _browser = nil; 
     _browser = [[EAWiFiUnconfiguredAccessoryBrowser alloc]  initWithDelegate:self queue:nil]; 
     [_browser startSearchingForUnconfiguredAccessoriesMatchingPredicate:nil]; 
} 

bất cứ khi nào bạn cảm thấy EAWiFiUnconfiguredAccessoryBrowser không cung cấp kết quả phù hợp, hãy thử điều này.

Các vấn đề liên quan