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. 【渗透课程】第二篇下-HTTP协议的请求与响应深度剖析

    [渗透课程]第二篇下-HTTP协议的请求与响应深度剖析 HTTP1.1目前支持以下7种请求方法: 常见的MIME类型如下: 第一个数字有五种可能的取值: 目录 什么是请求方法?什么是请求头? HTTP ...

  2. ie启动不了的解决办法,win7,win8都可以

    今天我的IE也无法打开了,我装的是win7的系统,ie升级到了IE11,无法打开了,看到下面这篇文章,借鉴试试,没想到也成功了. 按以上步骤,打开注册表, 第一步.按下Win+R组合键,在出现的运行命 ...

  3. 支付宝小程序PHP全栈开发--前端样式的设计.acss样式详解

    关于.acss文件 在视频中已经说过了,小程序的设计思想和原生app的设计思想颇为相似,基本的应用单元为页面.当然对于一个页面来说每一个元素的放置位置在哪儿以及显示成什么样子这个是由样式来决定的.我们 ...

  4. jQuery与js的length属性

    js:length 属性可返回字符串中的字符数目. stringObject.length jQuery:length 属性包含 jQuery 对象中元素的数目. $(selector).length ...

  5. Nginx keepalived实现高可用负载均衡详细配置步骤

    Keepalived是一个免费开源的,用C编写的类似于layer3, 4 & 7交换机制软件,具备我们平时说的第3层.第4层和第7层交换机的功能.主要提供loadbalancing(负载均衡) ...

  6. OCUpload的简单介绍与使用

     OCUpload (One Click Upload)译成中文就是一键上传的意思.它是JQuery的一个插件.   对于传统的文件上传,只能通过form表单,将enctype设置为multipart ...

  7. svn: Can't convert string from 'UTF-8' to native

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt227 svn 版本库中有文件是以中文字符命名的,在 Linux 下 chec ...

  8. Maven(二)Maven项目的创建(命令、myeclipse)及生命周期

    上一篇给大家介绍了Maven的概念和仓库的一些信息,接下来给大家分享一下使用命令和MyEclipse创建Maven项目 一.使用命令管理Maven项目 1.1.创建Maven java项目 1)创建一 ...

  9. Android学习记录:ViewPager实现欢迎页

    许多APP在第一次启动的时候,都会有welcome page.近日尝试利用ViewPager来实现Welcome Page. d0711 完成记录,跟新下载地址 =================== ...

  10. 我的hibernate学习记录(一)

    之前已经过滤一下hibernate的简单的用法,但是近期有点时间,所以重新看下视频,敲下代码,翻下笔记,写博客与大家分享一下. hibernate简介 Hibernate是一个开放源代码的对象关系映射 ...