最近在做一个蓝牙相关的项目, 需要在应用进入后台, 或者手机属于锁屏状态的情况下, 仍然保持蓝牙连接, 并且能正常接收数据。

本来以后会很麻烦, 但是学习了下..发现就2步而已。简单的不能再简单了。

好了。下面是具体实现办法。

1.在xxx-info.plist文件中, 新建一行  Required background
modes
 , 加入下面两项。

App shares data using CoreBluetooth 和 App
communicates using CoreBluetooth

如图所示:

加入这个项后, 你会发现, 当应用进入后台后, 蓝牙还是保持连接的。

但是, 进入后台后, 虽然应用还挂着, 能够正常接收数据。但是,  来数据了, 如果需要我们实时响应, 那就要用到推送了。

也就是, 当数据来的时候, 弹出一个提示框, 提示用户来数据了。

2. 设置本地推送

这里的方法写在AppDelegate.m中。  receiveData对应你接收到数据的响应函数。

  1. -(void)receiveData:(NSData*)data
  2. {
  3. NSLog(@"收到数据了");
  4. //收到数据, 设置推送
  5. UILocalNotification *noti = [[UILocalNotification alloc] init];
  6. if (noti)
  7. {
  8. //设置时区
  9. noti.timeZone = [NSTimeZone defaultTimeZone];
  10. //设置重复间隔
  11. noti.repeatInterval = NSWeekCalendarUnit;
  12. //推送声音
  13. noti.soundName = UILocalNotificationDefaultSoundName;
  14. //内容
  15. noti.alertBody = @"接收到数据了";
  16. noti.alertAction = @"打开";
  17. //显示在icon上的红色圈中的数子
  18. noti.applicationIconBadgeNumber = 1;
  19. //设置userinfo 方便在之后需要撤销的时候使用
  20. NSDictionary *infoDic = [NSDictionary dictionaryWithObject:@"name" forKey:@"key"];
  21. noti.userInfo = infoDic;
  22. //添加推送到uiapplication
  23. UIApplication *app = [UIApplication sharedApplication];
  24. [app scheduleLocalNotification:noti];
  25. }
  26. }
  1. #pragma mark - 接收到推送
  2. - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification*)notification
  3. {
  4. UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"来电提示"
  5. message:notification.alertBody
  6. delegate:nil
  7. cancelButtonTitle:@"接听"
  8. otherButtonTitles:@"挂断",nil];
  9. [alert show];
  10. //这里,你就可以通过notification的useinfo,干一些你想做的事情了
  11. application.applicationIconBadgeNumber -= 1;
  12. }

iOS开发- 蓝牙后台接收数据(BLE4.0)的更多相关文章

  1. ios开发视频播放后台下载功能实现 :1,ios播放视频 ,包含基于AVPlayer播放器,2,实现下载,iOS后台下载(多任务同时下载,单任务下载,下载进度,下载百分比,文件大小,下载状态)(真机调试功能正常)

    ABBPlayerKit ios开发视频播放后台下载功能实现 : 代码下载地址:https://github.com/niexiaobo/ABBPlayerKit github资料学习和下载地址:ht ...

  2. iOS开发网络篇—JSON数据的解析

    iOS开发网络篇—JSON数据的解析 iOS开发网络篇—JSON介绍 一.什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式 ...

  3. 玩转iOS开发 - JSON 和 Xml 数据解析

    前言 Json 和xml是网络开发中经常使用的数据格式,JSON轻量级.xml相对较复杂.所以如今用JSON的比例很大.基本上从server获取的返回数据都是JSON格式的,作为iOS开发人员,解析J ...

  4. iOS开发:后台运行以及保持程序在后台长时间运行

    第一部分 1.先说说iOS 应用程序5个状态: 停止运行-应用程序已经终止,或者还未启动. 不活动-应用程序处于前台但不再接收事件(例如,用户在app处于活动时锁住了设备). 活动-app处于“使用中 ...

  5. iOS开发网络篇—XML数据的解析

     iOS开发网络篇—XML数据的解析 iOS开发网络篇—XML介绍 一.XML简单介绍 XML:全称是Extensible Markup Language,译作“可扩展标记语言” 跟JSON一样,也是 ...

  6. android蓝牙(二)——接收数据

    在蓝牙开发中,我们有这种一个需求:我们的androidclient要始终保持和蓝牙的连接,当蓝牙有数据返回的时候,androidclient就要及时的收取数据,当蓝牙没有数据返回的时候我们就要保持an ...

  7. iOS开发蓝牙 蓝牙4.0的各种踩过的坑,希望你们少踩点

    1.首先建立这个三个参数 @property (nonatomic,strong)CBCentralManager * manager; @property (nonatomic,strong)CBP ...

  8. iOS开发简单高效的数据存储

    在iOS开发过程中,不管是做什么应用,都会碰到数据保存的问题,你是用什么方法来持久保存数据的?这是在几乎每一次关于iOS技术的交流或讨论都会被提到的问题,而且大家对这个问题的热情持续高涨.本文主要从概 ...

  9. IOS开发之后台处理

    1 前言IOS4 之后提供了后台处理,在后台运行应用程序,在一些情形下甚至可以在用户按下Home按钮之后在后台运行. 2 详述IOS可以在用户按下Home按钮后将应用程序添加到暂停状态.这种暂停执行的 ...

随机推荐

  1. Android --Search界面样式

    Lay_Weight 权重属性的使用 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android ...

  2. memwatch内存泄露检测工具

    工具介绍 官网 http://www.linkdata.se/sourcecode/memwatch/ 其功能如下官网介绍,挑选重点整理: 1. 号称功能: 内存泄露检测 (检测未释放内存, 即 动态 ...

  3. iTOP-4412 开发板镜像的烧写

    镜像就是源代码编译并连接以后生成的可执行文件包,把这些镜像文件烧写到开发板的存储芯片里,开机就可以运行了. 烧写方式有两种,通过TF卡烧写以及使用OTG接口烧写 OTG方式:只能在WIN7 或者XP ...

  4. poj: 1004

    简单题 #include <iostream> #include <stdio.h> #include <string.h> #include <stack& ...

  5. BroadCast Receive 生命周期

    BroadCastReceiver 简介 BroadCastReceiver 源码位于: framework/base/core/java/android.content.BroadcastRecei ...

  6. <c:if>标签的使用

    <c:if>标签用来在页面中实现条件化的判断功能.它的主要目的就是替换Java脚本中的if语句,来实现页面内容的条件化输出功能.这个标签所进行的判读主要是依据表达式来进行的,如果该表达式的 ...

  7. 1020: 部分A+B

    1020: 部分A+B 时间限制: 1 Sec  内存限制: 128 MB提交: 307  解决: 223[提交][状态][讨论版] 题目描述 正整数A的“DA(为1位整数)部分”定义为由A中所有DA ...

  8. 深度解析 Java 内存原型

    一.Java 虚拟机内存原型 寄存器:我们在程序中无法控制. 栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在 堆中. 堆:存放用 new 产生的数据. 静态域:存放在对象中用  ...

  9. centos 关闭不使用的服务

    CentOS关闭服务的方法: chkconfig –level 2345 服务名称 off 服務名稱 建議 說明 acpid 停用 Advanced Configuration and Power I ...

  10. linux centos5.7(32bit) oracle 10g oracle11g

    cenOS5.5安装oracle10g(傻瓜篇) http://www.cnblogs.com/fnng/archive/2012/06/19/2554159.html  (转) 在cenOS5.5上 ...