ios – EAAccessoryManager connectedAccessories返回空数组

我正在使用EAAccessoryManager将我的应用程序连接到MFI附件.在初始连接期间,在蓝牙设置屏幕中,它显示为设备已连接.

当我尝试使用连接设备列表时
[accessoryManager connectedAccessories],它返回一个空数组.但是当我使用showBluetoothAccessoryPickerWithNameFilter时,它会向我显示列表中的附件.

问题是我不希望用户选择配件.我想让这个过程成为一个自动化过程.我也在info.plist中包含了附件协议字符串.请指导我这个问题.我在这做什么错?

解决方法

你能试试这个功能吗?
- (void)_getAttachedDevices;
{
    EAAccessoryManager* accessoryManager = [EAAccessoryManager sharedAccessoryManager];
    if (accessoryManager)
    {
        NSArray* connectedAccessories = [accessoryManager connectedAccessories];
        NSLog(@"ConnectedAccessories = %@",connectedAccessories);
    }
    else 
    {
       NSLog(@"No accessoryManager");
    }
}

你得到了哪些结果?

显然记得EAAccessory仅适用于Made-For-iPod / iPhone / iPad / AirPlay许可配件;因此,如果您没有许可配件,您将始终看到一个空数组.您是否拥有正规的MFI附件?

瘾我建议如果你还没读过Apple Documentation.

编辑1:

如果您仍然卡住,请尝试实施connect / disconnect通知

[[EAAccessoryManager sharedAccessoryManager] registerForlocalnotifications];  
[[NSNotificationCenter defaultCenter] addobserver:self
                                             selector:@selector(accessoryDidConnect:)
                                                 name:EAAccessoryDidConnectNotification
                                               object:nil];

[[NSNotificationCenter defaultCenter] addobserver:self
                                             selector:@selector(accessoryDiddisconnect:)
                                                 name:EAAccessoryDiddisconnectNotification
                                               object:nil];

您是否看到了设备的连接?如果是,请尝试获取已连接设备的列表

accessoryDidConnect

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...