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. 2017多校第10场 HDU 6171 Admiral 双向BFS或者A*搜索

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6171 题意: 给你一个高度为6的塔形数组,你每次只能将0与他上下相邻的某个数交换,问最少交换多少次可以 ...

  2. Java 调用Azure认知服务Demo--Computer API

    说明 本文主要介绍使用Java代码,基于HTTP请求调用Microsoft Azure的认知服务.图片来源分别介绍了使用公网的URL和上传本地图片. 依赖的jar包下载地址: key的获取需要登录到A ...

  3. grep命令中文手册(info grep翻译)

    body { font: 13.34px helvetica, arial, freesans, clean, sans-serif; color: black; line-height: 1.4em ...

  4. 《阿里巴巴Java开发手册v1.2》解析(编程规约篇)

    之前在乐视天天研究各种底层高大上的东西,因为我就一个人,想怎么弄怎么弄.如今来了新美大,好好研读一下<阿里巴巴Java开发手册v1.2>.还要对这么看似简单的东西解析一番.毕竟现在带团队, ...

  5. DNSmasq服务搭建

    .c { background: #FEFEF2; padding: 30px } hr { border: 1px dotted #70C4EF } DNSmasq介绍 DNSmasq是一个小巧且方 ...

  6. Android持续集成之Jenkins 部署

    Android持续集成之Jenkins 部署 [TOC] 0x00安装 准备工作如下: Tomcat8.5下载地址 Jenkins下载链接 1 将下载的jenkins.war包放至tomcat下的we ...

  7. window 使用git 非ssh key 面密码登录

    Windows下使用git bash时,总是提示输入用户名密码,严重影响了开发效率,经搜索查找找到了如下有效的解决方案,屡试不爽! 1.先创建存储用户名密码的文件 ,在home文件夹,一般是 C:\D ...

  8. Jmeter遇到的坑

    一.分布式获取不到结果需要改配置文件   在jmeter.properties文件找到mode=Standard去掉# 二.有一个请求要循环查询进度,当进度为100为,跳出循环.这个要怎么操作? ${ ...

  9. Java 随笔记录

    1. java对象转json Message msg = generateMessage();ObjectMapper mapper = new ObjectMapper();String json ...

  10. base64随机字符混淆加密、解密-美拍视频地址解密,反推加密算法

    用火车头测试采集美拍的数据时无意中发现美拍的视频地址是一段加了混淆字符串的base64代码.如下图 于是好奇之下研究了下解密算法.具体过程省略800字.发现美拍的视频解密是通过js完成,于是找到了具体 ...