Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Wireless accessory configuration in iOS: EAWiFiUnconfiguredAccessoryBrowser will detect unconfigured accessories only once

I am using EAWiFiUnconfiguredAccessoryBrowser to detect EAWiFiUnconfiguredAccessory. The code to start the accessory search it's the following:

- (void)viewDidLoad {
    [super viewDidLoad];

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

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

Unfortunately it does find accessories only the first time the View loads. If I go back to the previous view and then reload the view it does not find them.

I tried:

  • recreating the browser accessory and restarting the search (does not work)
  • stopping the search and restarting it (does not work)

This is the latest code I got (refer to this together with the code above):

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

It seems that the accessory list information is cached somewhere within the APP. If I restart the APP it will find them so I guess there is something that I am missing.

Any help?

like image 765
mm24 Avatar asked Aug 04 '15 08:08

mm24


2 Answers

so i have the same problem..you should use the unconfiguredAccessories array. Also, try keeping the instance of the browser alive. If you discover the device once, and you re-instantiate the browser, you wont find it again

like image 57
Tushar Koul Avatar answered Oct 16 '22 11:10

Tushar Koul


EAWiFiUnconfiguredAccessoryBrowser has issues,and doesn't provide reliable result in certain use cases. i think you should try this

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

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

below method makes browser object nil and reinitialises it, in this case browser object will always return you updated(i.e, proper) values . it worked perfectly for me.

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

anytime you feel EAWiFiUnconfiguredAccessoryBrowser isn't providing proper result , try this.

like image 1
n devaraj Avatar answered Oct 16 '22 11:10

n devaraj