iOS中的无线配件配置:EAWiFiUnconfiguredAccessoryBrowser仅检测一次未配置的配件

时间:2015-08-04 08:44:43

标签: ios objective-c configuration wifi accessory

我正在使用 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;
    }
}

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

我试过了:

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

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

- (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中某处的附件列表信息似乎缓存。如果我重新启动APP,它会找到它们,所以我猜有些东西我不知道。

任何帮助?

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

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

public abstract class BaseClass<T> where T : ICollection<int>
{
    public T Numbers { get; set; }
}

public abstract class SubClass : BaseClass<ObservableCollection<int>>
{

}

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

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

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

如果您认为EAWiFiUnconfiguredAccessoryBrowser未提供正确的结果,请尝试此操作。

答案 2 :(得分:0)

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