1、获取蓝牙mac地址
  因为安卓不能得到uuid,所以,在要同步的时候要将uuid转换成mac地址,下面是转换方法
[peripheral discoverServices:@[[CBUUID UUIDWithString:@"xxxx"]]]; [service discoverCharacteristics:@[[CBUUID UUIDWithString:@"xxxx"]]]; [peripheral readValueForCharacteristic:characteristic] NSString *value = [NSString stringWithFormat:@"%@",characteristic.value]; NSMutableString *valueMuStr = [[NSMutableString alloc] init];
[valueMuStr appendString:[[value substringWithRange:NSMakeRange(16, 2)] uppercaseString]];
[valueMuStr appendString:@":"];
[valueMuStr appendString:[[value substringWithRange:NSMakeRange(14, 2)] uppercaseString]];
[valueMuStr appendString:@":"];
[valueMuStr appendString:[[value substringWithRange:NSMakeRange(12, 2)] uppercaseString]];
[valueMuStr appendString:@":"];
[valueMuStr appendString:[[value substringWithRange:NSMakeRange(5, 2)] uppercaseString]];
[valueMuStr appendString:@":"];
[valueMuStr appendString:[[value substringWithRange:NSMakeRange(3, 2)] uppercaseString]];
[valueMuStr appendString:@":"];
[valueMuStr appendString:[[value substringWithRange:NSMakeRange(1, 2)] uppercaseString]];
  最后得到这么一串东西   00:C0:4B:3A:12:AB  ,这里只是给出转换的方法,并没有做优化。
 
 
2、关于假连接
  假连接,是系统蓝牙显示连接上了设备,可是不能进行通讯。
  假连接的原因,是因为连接上了peripheral,可是在调用  [peripheral discoverServices:nil];这个方法的时候,没有能发现服务。也就是说获取不到读、写等的特征值 (characteristics),所以不能进行通讯。
  由于在这种状态下,不会有任何地方有通知回调的来知道读取不到服务列表,所以,我比较笨的方法是,在里面做一个超时的处理,如果发现没有读取到服务列表,重新断开,然后再进行连接。
  还有一种原因就是,在重连的时候出现假连接,有可能是没有清空缓存。这里所说的缓存是数组的缓存和蓝牙连接的缓存。数组的缓存就直接在重连时清空就好。系统的缓存。

  CBUUID *uuid =  [CBUUID UUIDWithString:BTDevInfo_ServiceUUID];

  NSArray *arr =[_centralManager retrieveConnectedPeripheralsWithServices:@[uuid]];

  if (arr.count) {

          for (CBPeripheral *peripheral in arr) {

        [_centralManager cancelPeripheralConnection:peripheral];

}

}

  苹果官方文档也有说明,即使是调用断开连接,也有可能会不能完成。导致没有能断开连接。所以,有可能是,调用了,系统还是会显示已连接的状态。

 
3、蓝牙断开连接系统提示
   连接上蓝牙之后,在关闭系统蓝牙或者离开蓝牙区域,而app在后台运行的时候,会接收到一条蓝牙断开的消息推送。
这里是带参连接peripheral,这个参数是number类型。想要去掉这个蓝牙提示,在调用连接的时候将这个设为NO就好。
[self.centralManager connectPeripheral:pheral
                                   options:[NSDictionary dictionaryWithObject:[NSNumber numberWithBool:NO] forKey:CBConnectPeripheralOptionNotifyOnDisconnectionKey]];
 
4、其他的基本的蓝牙连接之类的问题,网上已经很多了,就不去掺和了。如果哪里说的不对,希望指正。

iOS蓝牙心得的更多相关文章

  1. iOS蓝牙开发(二)蓝牙相关基础知识

    原文链接: http://liuyanwei.jumppo.com/2015/07/17/ios-BLE-1.html iOS蓝牙开发(一)蓝牙相关基础知识: 蓝牙常见名称和缩写 MFI ====== ...

  2. https://github.com/coolnameismy/BabyBluetooth github上的一个ios 蓝牙4.0的库并带文档和教程

    The easiest way to use Bluetooth (BLE )in ios,even bady can use. 简单易用的蓝牙库,基于CoreBluetooth的封装,并兼容ios和 ...

  3. iOS蓝牙BLE开发

    蓝牙是一个标准的无线通讯协议,具有设备成本低.传输距离近和功耗低等特点,被广泛的应用在多种场合.蓝牙一般分为传统蓝牙和BLE两种模式:传统蓝牙可以传输音频等较大数据量,距离近.功耗相对大:而BLE则用 ...

  4. iOS 蓝牙开发资料记录

    一.蓝牙基础认识:   1.iOS蓝牙开发:  iOS蓝牙开发:蓝牙连接和数据读写   iOS蓝牙后台运行  iOS关于app连接已配对设备的问题(ancs协议的锅)          iOS蓝牙空中 ...

  5. iOS蓝牙APP常驻后台

    iOS蓝牙类APP常驻后台的实现方法,经过在苹果开发者论坛询问,以及查看苹果开发者文档,最后得出正确的方法为: 1.设置plist,蓝牙权限 2.到target-capabilities-backgr ...

  6. iOS蓝牙BLE4.0通信功能

    概述 iOS蓝牙BLE4.0通信功能,最近刚学的苹果,为了实现蓝牙门锁的项目,找了一天学习了下蓝牙的原理,亲手测试了一次蓝牙的通信功能,结果成功了,那么就把我学习的东西分享一下. 详细 代码下载:ht ...

  7. iOS蓝牙原生封装,助力智能硬件开发

    代码地址如下:http://www.demodashi.com/demo/12010.html 人工智能自1956年提出以来,一直默默无闻,近年来人工智能的发展得到重视逐渐发展起步,智能硬件.智能手环 ...

  8. ios 蓝牙相关

      ios蓝牙开发项目实战 -(附小米手环实例)   前言 最近一直在开发关于蓝牙的功能,本来是不想写这一篇文章,因为网上关于ios蓝牙开发的文章实在太多了,成吨成吨的文章出现,但是很遗憾都只是一些皮 ...

  9. iOS蓝牙4.0开发

    文/starfox寒流(简书作者)原文链接:http://www.jianshu.com/p/974d165f78b5著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. iOS 蓝牙4.0 ...

随机推荐

  1. Python | 多种编码文件(中文)乱码问题解决

    问题线索   1 可以知道的是,文本文件的默认编码并不是utf8. 我们打开一个文本文件,并点击另存为 2 我们在新窗口的编码一栏看到默认编码是ANSI.先不管这个编码是什么编码,但是通过下拉列表我们 ...

  2. Python之测试webservice接口

    前段时间学习了Python操作http接口,觉得挺容易的.最近项目组也有接触webservice接口,心里想想是否Python也可以操作这类接口.于是利用伟大的度娘,花了6个小时研究出来了,所以迫不及 ...

  3. hdu5673 Robot 卡特兰数 / 默慈金数

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5673 分析: 这道题是一道裸的默慈金数,比较容易想到的是用卡特兰数来做.不了解的可以先学习一下. 卡特 ...

  4. python 三级联动

       china_map ={  "华南":{   "广东":["广州市","佛山市","深圳市", ...

  5. sqlplus命令历史解决方案

    在Linux上使用sqlplus比较痛苦,因为不能使用上下方向键来调出命令历史,也不能使用左右键移动光标对输入的命令进行修改,甚至连Backspace键都不能用(不过我发现大部分Backspace不能 ...

  6. selenium系列------元素定位套路

    selenium定位分为上三门,平三门,下三门, id,name,linktext上三门, class ,css,js平三门, xpath,tag名,复数定位(定位一组然后选index元素).

  7. appium python api收集

    1.contexts contexts(self): Returns the contexts within the current session. 返回当前会话中的上下文,使用后可以识别H5页面的 ...

  8. MySQL存储引擎中的MyISAM和InnoDB区别

    MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的顺序访问方法)所改良.虽然性能极佳,但却有一个缺点 ...

  9. myeclipse eclipse创建maven web项目时 index.jsp报错

    第一种办法 解决办法: ---------------------------------------------------------------------------------------- ...

  10. Centos 6启动流程详解

    author:JevonWei 版权声明:原创作品 Centos6 启动流程 POST开机自检 当按下电源键后,会启动ROM芯片中的CMOS程序检查CPU.内存等硬件设备是否正常运行,CMOS中的程序 ...