使我的python的蓝牙服务器对iOS可见

Dan*_*elY 11 python bluetooth ios cordova ionic-framework

我一直在努力连接一个蓝牙服务器(使用Bluez或类似的)在一个运行在Linux服务上的Python脚本,一个运行Cordova混合应用程序的iPhone设备.

我正在为后者使用cordova-plugin-ble-central,对于前者我给你的代码如下:

try:
    server_sock = BluetoothSocket(RFCOMM)

    server_sock.bind(("", 0))
    server_sock.listen(1)
    port = server_sock.getsockname()[1]

    uuid = "d507688e-5fa7-11e7-907b-a6006ad3dba0"
    advertise_service(server_sock, "TestService", service_id=uuid, service_classes=[uuid])

    print("Waiting for connection on RFCOMM channel %d" % port)

    client_sock, address = server_sock.accept()
    print "Accepted connection from ", address

    data = client_sock.recv(1024)
    print "received [%s]" % data

    client_sock.close()
    server_sock.close()
except Exception as e:
    print 'ERROR: ' + str(e)
Run Code Online (Sandbox Code Playgroud)

问题是来自iPhone的"scan()"功能结果给了我附近的几个设备,但不是我的...在Android中它的功能非常好!

我错过了什么?有没有办法让它发现?

提前致谢

tit*_*ito 2

你不能。

iOS 会过滤蓝牙配置文件,并且不支持 RFCOMM(又名蓝牙串行端口配置文件)。以下是Apple 本身支持的 iOS 蓝牙配置文件的列表。

是的,很遗憾,我们知道这在桌面和 Android 上运行得很好,但你不能在 iOS 上做同样的事情:)