美文网首页iOSiOS BLEiOS蓝牙开发
iOS关于app连接已配对设备的问题(ancs协议的锅)

iOS关于app连接已配对设备的问题(ancs协议的锅)

作者: 干不动 | 来源:发表于2016-10-15 16:51 被阅读1246次

    很多同学在做蓝牙开发的时候,很有可能你的设备是支持ancs协议的,那么ancs协议在首次连接app蓝牙的时候就会配对,之后只要你手机开着蓝牙,它都会自动连接。这时候,你再进入app,会发现明明在设置里面显示蓝牙已经连接,但是你在app怎么搜索都搜索不到改蓝牙外设。
    这个时候,就需要用到 retrieveConnectedPeripheralsWithServices 这个方法了。
    大概思路就是 当用户进去app,只要发现手机的蓝牙已经开启,那么就可以执行以下代码:

     //已经被系统或者其他APP连接上的设备数组
                NSArray *arr = [self.cmgr retrieveConnectedPeripheralsWithServices:@[[CBUUID UUIDWithString:serviceUUID]]];//serviceUUID就是你首次连接配对的蓝牙
                NSLog(@"%@",arr);
                if(arr.count>0)
                {
                    for (CBPeripheral* peripheral in arr)
                    {
                        if (peripheral != nil)
                        {
                            self.peripherale = peripheral;//这一个必须要,需要一个全局变量接受,否则无法连接
                            [self.cmgr connectPeripheral:self.peripherale options:nil];
                        }
                    }
                }
    
    

    要注意的是,手机作为中心者模式,是可以连接多个从机的,你要必须从连接到的数组里面找到你要连接的蓝牙外设

    相关文章

      网友评论

      • 阿福lfy:@[[CBUUID UUIDWithString:serviceUUID]] 可以换成nil 吗
        手机连接蓝牙,从别地软件上得知所有的serviceUUID,全试过了,还是检索不到该设备。。。
      • 酸三角:搜索不到已连接的设备或者搜索到设备了 该设备下没有服务啊
      • LaiBit:你好,想跟您請教個問題,如你題目說明的延伸
        如果想將斷線,我發現使用 cancelPeripheralConnection 是無效的,完全無法中斷連線
        請問您有遇到類似問題嗎?
      • 爱民谣的coderMrZhou:nice 。 刚刚踩过的坑,感谢分享:smile:
      • MangoJ:您好 为甚么在外围设备中找不到 找不到service.UUID: 7905F431-B5CE-4E99-A40F-4B1E122D00D0呢
        zdl:连接断开蓝牙音箱怎么实现 ??
        lzh_coder:这个不是service的UUID。是设备的uuid

      本文标题:iOS关于app连接已配对设备的问题(ancs协议的锅)

      本文链接:https://www.haomeiwen.com/subject/jjxoyttx.html