EAAccessoryManager connectedAccessories返回空数组

Aru*_*amy 8 iphone xcode bluetooth objective-c ios

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

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

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

小智 8

我遇到了同样的问题,并且能够通过Supported external accessory protocols向我的info.plist文件添加密钥来解决它(原始密钥名称是UISupportedExternalAccessoryProtocols)。就我而言,我想扫描连接的 PayPal™ 信用卡终端和 Zebra™ 打印机。这是我的 info.plist 中的相应摘录:

<key>UISupportedExternalAccessoryProtocols</key>
<array>
    <string>com.paypal.here.reader</string>
    <string>com.zebra.rawport</string>
</array>
Run Code Online (Sandbox Code Playgroud)

一旦我添加了这些,connectedAccessories就被填充了。


Mas*_*eni 1

你能试试这个功能吗?

- (void)_getAttachedDevices;
{
    EAAccessoryManager* accessoryManager = [EAAccessoryManager sharedAccessoryManager];
    if (accessoryManager)
    {
        NSArray* connectedAccessories = [accessoryManager connectedAccessories];
        NSLog(@"ConnectedAccessories = %@", connectedAccessories);
    }
    else 
    {
       NSLog(@"No accessoryManager");
    }
}
Run Code Online (Sandbox Code Playgroud)

你得到哪个结果?

显然请记住,EAAccessory仅适用于 Made-For-iPod/iPhone/iPad/AirPlay 许可配件;因此,如果您没有获得许可的配件,您将始终看到一个空数组。您有正规授权的 MFI 配件吗?

如果您还没有阅读过,我建议您阅读Apple 文档。

编辑1:

如果您仍然卡住,请尝试实现连接/断开连接的通知:

[[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];
Run Code Online (Sandbox Code Playgroud)

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

配件已连接