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. sequelizejs中文文档(一)

    英文文档 入门 安装 Sequelize 支持 NPM 和 Yarn 的安装. // Using NPM $ npm install --save sequelize # And one of the ...

  2. URI和URL的区别 一起学习呗

    一直存在很多技术上的争论,其中最为妙的恐怕就是web地址应该叫什么的问题.通常情况就是这样:有人把地址栏的内容叫"URL",这时候有些人就来劲了:"不!其实那就是URI. ...

  3. java面向对象(二)之继承

    继承 介绍 继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力.继承即常说的is-a关系.子类继承父类的特征和行为,使得子类具有父类的各种属性和方法.或子类从父类继承 ...

  4. 第1阶段——uboot分析之仿照bootm制作hello命令(7)

    仿照bootm命令生成来制作一个hello命令,功能:打印出hello,world!和参数值 1.点击New File ,创建cmd_hello.c将./common/cmd_bootm.c的头文件复 ...

  5. C# 获取exe、dll中的图标,支持获取256x256分辨率

    在网上找过许多文章,都没有成功获取过大图标,只能获取最大32x32.最后自己尝试了相关的windows api,终于找到一个可用的. 主要用到的C++的PrivateExtractIcons函数,具体 ...

  6. 玩一把JS的链式调用

    链式调用我们平常用到很多,比如jQuery中的$(ele).show().find(child).hide(),再比如angularjs中的$http.get(url).success(fn_s).e ...

  7. 201521123061 《Java程序设计》第十三周学习总结

    201521123061 <Java程序设计>第十三周学习总结 1. 本周学习总结 2. 书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jm ...

  8. 第6周-接口、内部类与Swing

    1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖 ...

  9. 201521123028 《Java程序设计》第6周学习总结

    1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 2. 书面作业 Q1.clone方法 1.1 Object ...

  10. 201521123089《Java程序设计》第6周学习总结

    1. 本周学习总结 2. 书面作业 clone方法1.1 Object对象中的clone方法是被protected修饰,在自定义的类中覆盖clone方法时需要注意什么?                 ...