我们正在尝试观察何时连接蓝牙设备并断开与iPhone的连接。当某些感兴趣的设备连接时,我们基本上想要做出反应(不一定在前台)。在Android中,您可以接收ACL_CONNECTED
和ACL_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>
答案 0 :(得分:1)
我published a demo app called Beetee展示了蓝牙经典在iOS上的运作方式以及全球事件的内容。但是这个私有框架不是AppStore的投诉!
答案 1 :(得分:0)
您无法直接收听iOS中的全局事件,所有应用都在自己的沙箱中,并且无法相互访问。
也就是说,您可以使用retrieveConnectedPeripheralsWithServices:
的{{1}}方法获取当前连接的设备列表。定期调用该函数并检查更改可以实现您的目标。