iOS上的蓝牙连接

时间:2015-05-21 18:49:59

标签: android ios bluetooth android-bluetooth ios-bluetooth

我们正在尝试观察何时连接蓝牙设备并断开与iPhone的连接。当某些感兴趣的设备连接时,我们基本上想要做出反应(不一定在前台)。在Android中,您可以接收ACL_CONNECTEDACL_DISCONNECTED操作。

在iOS上这种行为的等价物是什么?

我先发现CoreBluetooth之前发现它是针对蓝牙LE,然后查看了ExternalAccessory,但它只显示了the picker中的MFI设备,似乎要求用户通过选择器。我们发现唯一可行的方法是go through Apple's BluetoothManager itself,根据第2.5节中的AppStore guidelines禁止这种方法,可能是因为它们可以完全控制Apple生态系统。

等效的Android代码:

MyReceiver.java

public class MyReceiver extends BroadcastReceiver {

  @Override
  public void onReceive(Context context, Intent intent) {
    if (intent.getAction().equals(BluetoothDevice.ACL_CONNECTED)) {
      //do stuff
    } else if (intent.getAction().equals(BluetoothDevice.ACL_DISCONNECTED)) {
      //do stuff
    }
  }

}

AndroidManifext.xml

<receiver
  android:name="com.myapp.MyReceiver"
  android:exported="true"
  android:enabled="true"
  android:label="MyReceiver">
  <intent-filters>
      <action android:name="android.bluetooth.device.action.ACL_CONNECTED" />
      <action android:name="android.bluetooth.device.action.ACL_CONNECTED" />
    </intent-filters>
</receiver>

2 个答案:

答案 0 :(得分:1)

published a demo app called Beetee展示了蓝牙经典在iOS上的运作方式以及全球事件的内容。但是这个私有框架不是AppStore的投诉!

答案 1 :(得分:0)

您无法直接收听iOS中的全局事件,所有应用都在自己的沙箱中,并且无法相互访问。

也就是说,您可以使用retrieveConnectedPeripheralsWithServices:的{​​{1}}方法获取当前连接的设备列表。定期调用该函数并检查更改可以实现您的目标。