9

我正在使用EAWiFiUnconfiguredAccessoryBrowser来检测EAWiFiUnconfiguredAccessory。启动附件搜索的代码如下:

- (void)viewDidLoad {
    [super viewDidLoad];

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

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

不幸的是,它仅在第一次加载视图时才找到附件。如果我回到上一个视图然后重新加载视图,它不会找到它们。

我试过了:

  • 重新创建浏览器附件并重新开始搜索(不起作用)
  • 停止搜索并重新启动它(不起作用)

这是我得到的最新代码(与上面的代码一起参考):

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

附件列表信息似乎缓存在APP内的某处。如果我重新启动应用程序,它会找到它们,所以我想我缺少一些东西。

有什么帮助吗?

4

3 回答 3

4

所以我有同样的问题..你应该使用unconfiguredAccessories数组。此外,请尝试保持浏览器实例处于活动状态。如果您发现该设备一次,然后重新实例化浏览器,您将不会再次找到它

于 2015-10-23T19:42:50.987 回答
1

EAWiFiUnconfiguredAccessoryBrowser 存在问题,在某些用例中无法提供可靠的结果。我想你应该试试这个

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

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

下面的方法使浏览器对象为零并重新初始化它,在这种情况下浏览器对象将始终返回您更新的(即正确的)值。它对我来说非常有效。

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

任何时候你觉得 EAWiFiUnconfiguredAccessoryBrowser 没有提供正确的结果,试试这个。

于 2017-03-23T09:11:59.580 回答
0

我也有这个问题。所以我构建了一个名为 WAC 服务的单例,然后你可以在应用程序生命周期中保持这个单例存活。任何你想加载未配置附件的地方。只需从 [_browser unconfiguredAccessories] 加载它。

于 2017-02-17T01:52:25.083 回答