标签: eaaccessory

iPad显示连接的蓝牙配件,但EAAccessoryManager找不到它?

这让我疯了......我以前工作得很好,不知道发生了什么变化.我通过蓝牙连接到专有的公司设备,它有auth芯片和(正如我所说)之前一切都很好.

我的iPad和配件都显示它们彼此连接.然而,当我尝试在我的应用程序中与设备通信时,大多数时候EAAccessoryManager甚至都找不到它......但偶尔我可以连接.是什么赋予了?

-(void)scanForDevice
{

NSArray *accList = [[EAAccessoryManager sharedAccessoryManager] connectedAccessories];

// This is ZERO every time...even though iPad and device both indicate connection.
DLog(@"accList count: %i", accList.count);

for (EAAccessory *accessory in accList)
{
    for (NSString* protocolString in accessory.protocolStrings) {
        if ([protocolString isEqualToString:[redacted]]) {
            [self connectToAccessory:accessory];
            break;
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

ETA:我已经连接了一个按钮来调用showBluetoothAccessoryPicker ...方法在应用程序中显示蓝牙选择器.这导致了更多的混乱.iPad告诉我的配件我已经连接到(在设置中)显示在选择器中.单击它时,控制台输出如下:

2014-04-01 16:48:00.324 Subview[3438:60b] BTM: attempting to connect to service 0x00000080 on device [redacted] 00:07:80:73:06:01
2014-04-01 16:48:02.497 Subview[3438:60b] BTM: connection to service 0x00000080 on device [redacted] 00:07:80:73:06:01 …
Run Code Online (Sandbox Code Playgroud)

bluetooth ipad ios eaaccessory

7
推荐指数
1
解决办法
2133
查看次数

EASession Leaks

我有一个连接到附件的应用程序,当我断开附件时,我创建的EASession是为了与附件通信泄漏.

当附件连接时,我收到通知,并检查EAAccessoryManager的附件集合,以查找具有使用某种协议的特定名称的附件.当我发现这个时,我使用代码为该附件创建了一个EASession对象:

-(void) openSession
{
   ...  // finds accessory object

   if (accessory)
   {
      [self closeSession];
      session = [EASession alloc];
      NSLog(@"alloc :: session retainCount: %i", session.retainCount);
      [session initWithAccessory:accessory forProtocol:SmokeSignalsProtocolName]; 
      NSLog(@"init  :: session retainCount: %i", session.retainCount);

      [[session inputStream] open]; 
      [[session outputStream] open]; 

      ... // other logic (pump run loop, etc..)
   }
}

-(void) closeSession
{
    if (session)
    {
       [[session inputStream] close]; 
       [[session outputStream] close]; 
       [session release], session = nil;
    }
}
Run Code Online (Sandbox Code Playgroud)

通常我在一行上有alloc和init,但我发现(将其分离出来)是alloc给出了+1保留计数(正如你所期望的那样)但是iniWithAccessory:forProtocol:给它+3保留计数当我只会期望来自init方法的+2 retainCount.

泄漏仪器似乎也支持这一点:

在此输入图像描述

一步一步看看泄漏仪器:

  1. +1保留计数:: [???Accessory openSession] …

memory-leaks external-accessory ios eaaccessory

6
推荐指数
1
解决办法
3040
查看次数

什么时候[UIScreen屏幕]会返回一个空数组

[UIScreen screens]在iOS 5.0.1中看到奇怪的行为,我们在崩溃时登录Flurry.有时[UIScreen screens]会返回一个空数组.我们的应用程序通过EAAccessory框架实现对外部附件的支持.这种行为是完全出乎意料的,因为即使Apple的文档说从该方法返回的数组总是包含至少一个条目.

ios uiscreen eaaccessory

6
推荐指数
1
解决办法
296
查看次数

连接外部配件蓝牙设备无需用户交互

根据iOS6以后的EAAccessoryManager类参考使用showBluetoothAccessoryPickerWithNameFilter,我们可以显示一个附件选择器,它将帮助用户连接外部附件,包括iAP over Bluetooth唯一ID.

现在我们想要以编程方式连接该列表中的一个外部附件.

我们需要您的支持.

我们如何以编程方式连接手机范围内的任何外部设备?

如何在没有用户交互的情况下以编程方式连接任何外部设备?

我们如何以编程方式获得用户手机范围内的外部设备列表?

我们如何获得范围内但未连接的外部设备的EAAccessory对象列表?

我们可以在NSUserDefaults中存储EAAccessory对象吗?如果是的话,我们怎么做?由于EAAccessory EAAccessory未实现encodeWithCoder和initWithCoder方法,因此它不允许将其存储到NSUserDefaults中.

使用BTLE我们可以解决这个问题,但我们想要BT Classic中的解决方案.

bluetooth accessory core-bluetooth eaaccessory

5
推荐指数
1
解决办法
1154
查看次数

iOS EAAccessory框架:唤醒以前配对的不自动连接的配件

我在Apple网站上发现:

还提供支持以唤醒先前未自动连接的配对附件.

这对我来说很有用,因为用户在启动应用程序之前不需要每次都进行配对.

我提到了EAAccessory Manager API,但似乎没有这样的调用.

任何人都可以提供有关此主题的更多参考资料,我该如何去做?

bluetooth ios eaaccessory

5
推荐指数
1
解决办法
1582
查看次数

在调用蓝牙附件选取器完成块之前,EAAccessoryDidConnectNotification不会触发

我最近开始使用这种EAAccessoryManager showBluetoothAccessoryPickerWithNameFilter方法,以便在我们的应用程序启动时连接到我们的MFI蓝牙配件(如果它还没有连接).我遇到了以下情况:

  1. 附件已关闭
  2. 用户启动应用程序
  3. 显示附件选择器
  4. 用户启动附件(之前已配对,因此重新连接)
  5. 继续显示附件选择器,并且EAAccessoryDidConnectNotification在用户通过按"取消"取消附件选择器之前,应用程序不会收到.

在我上面已经解释的情况下,即使我们连接到我们定义的附件NSPredicate,选择器也会挂起,我们不会收到附件已连接的通知,直到调用拾取器的完成块为止.用户有点陷入困境.

我们正在运行iOS 7.1.1并已针对7.1和7.0进行了测试.

任何帮助,将不胜感激.这是一些显示我所看到的日志:

2014-04-28 12:03:48.028 App[508:60b] BTM: attaching to BTServer
2014-04-28 12:03:48.262 App[508:60b] BTM: setting pairing enabled
2014-04-28 12:03:55.578 App[508:60b] BTM: attempting to connect to service 0x00000001 on device "Accessory-10" 00:07:80:79:92:8D
2014-04-28 12:03:55.966 App[508:60b] BTM: connection to service 0x00000001 on device "Accessory-10" 00:07:80:79:92:8D succeeded
2014-04-28 12:03:55.991 App[508:60b] BTM: attempting to connect to service 0x00000080 on device "Accessory-10" 00:07:80:79:92:8D
2014-04-28 12:03:56.024 App[508:60b] BTM: connection to service 0x00000080 …
Run Code Online (Sandbox Code Playgroud)

bluetooth ios eaaccessory

5
推荐指数
0
解决办法
1202
查看次数

EAAccessory.Name与配对的设备名称不匹配

我有一个iOS应用程序.我可以成功连接到我的配对EAAccessory(蓝牙经典).我能够从通过EAAccessory对象公开的设备中提取信息.我注意到的一件事是配对设备的名称(在我的设置 - >蓝牙 - >我的设备列表中)与我的EAAccessory对象公开的设备名称不匹配.我觉得这很奇怪.

有没有办法通过我的iOS应用程序获取设备的实际名称(来自"设置"页面的名称)?

xcode bluetooth ios eaaccessory swift

5
推荐指数
1
解决办法
315
查看次数

使用非iOS设备与iOS设备通信

如Apple文档中所示,可以通过EAAccessory Framework进行与认证附件(由Apple认证)的通信.但我有点困惑,因为有些帖子告诉我它也可以通过CoreBluetooth制作.

我还读到CoreBlueTooth仅受iOS 5支持,iPhone 4S可以与外部附件通信.

问题是"我应该同时使用CoreBluetooth和EAAccessory Framework(我认为在这种情况下我将不得不测试设备模型和iOS版本的组合)或者EAAccessory Framework是否足够? ".

ios core-bluetooth eaaccessory

2
推荐指数
1
解决办法
1744
查看次数