iOS蓝牙后台接收数据(BLE4.0)

2024-01-07 22:58

本文主要是介绍iOS蓝牙后台接收数据(BLE4.0),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

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


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


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

App shares data using CoreBluetooth  和  App communicates using CoreBluetooth

如图所示:



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

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

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


2. 设置本地推送

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

[cpp] view plain copy
  1. -(void)receiveData:(NSData*)data  
  2. {  
  3.     NSLog(@"收到数据了");  
  4.       
  5.     //收到数据, 设置推送  
  6.     UILocalNotification *noti = [[UILocalNotification alloc] init];  
  7.     if (noti)  
  8.     {  
  9.         //设置时区  
  10.         noti.timeZone = [NSTimeZone defaultTimeZone];  
  11.         //设置重复间隔  
  12.         noti.repeatInterval = NSWeekCalendarUnit;  
  13.         //推送声音  
  14.         noti.soundName = UILocalNotificationDefaultSoundName;  
  15.         //内容  
  16.         noti.alertBody = @"接收到数据了";  
  17.         noti.alertAction = @"打开";  
  18.         //显示在icon上的红色圈中的数子  
  19.         noti.applicationIconBadgeNumber = 1;  
  20.         //设置userinfo 方便在之后需要撤销的时候使用  
  21.         NSDictionary *infoDic = [NSDictionary dictionaryWithObject:@"name" forKey:@"key"];  
  22.         noti.userInfo = infoDic;  
  23.         //添加推送到uiapplication  
  24.         UIApplication *app = [UIApplication sharedApplication];  
  25.         [app scheduleLocalNotification:noti];  
  26.     }  
  27. }  

[cpp] view plain copy
  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;  

这篇关于iOS蓝牙后台接收数据(BLE4.0)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/581512

相关文章

电脑蓝牙连不上怎么办? 5 招教你轻松修复Mac蓝牙连接问题的技巧

《电脑蓝牙连不上怎么办?5招教你轻松修复Mac蓝牙连接问题的技巧》蓝牙连接问题是一些Mac用户经常遇到的常见问题之一,在本文章中,我们将提供一些有用的提示和技巧,帮助您解决可能出现的蓝牙连接问... 蓝牙作为一种流行的无线技术,已经成为我们连接各种设备的重要工具。在 MAC 上,你可以根据自己的需求,轻松地

使用nohup和--remove-source-files在后台运行rsync并记录日志方式

《使用nohup和--remove-source-files在后台运行rsync并记录日志方式》:本文主要介绍使用nohup和--remove-source-files在后台运行rsync并记录日... 目录一、什么是 --remove-source-files?二、示例命令三、命令详解1. nohup2.

Android与iOS设备MAC地址生成原理及Java实现详解

《Android与iOS设备MAC地址生成原理及Java实现详解》在无线网络通信中,MAC(MediaAccessControl)地址是设备的唯一网络标识符,本文主要介绍了Android与iOS设备M... 目录引言1. MAC地址基础1.1 MAC地址的组成1.2 MAC地址的分类2. android与I

Linux使用nohup命令在后台运行脚本

《Linux使用nohup命令在后台运行脚本》在Linux或类Unix系统中,后台运行脚本是一项非常实用的技能,尤其适用于需要长时间运行的任务或服务,本文我们来看看如何使用nohup命令在后台... 目录nohup 命令简介基本用法输出重定向& 符号的作用后台进程的特点注意事项实际应用场景长时间运行的任务服

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

【iOS】MVC模式

MVC模式 MVC模式MVC模式demo MVC模式 MVC模式全称为model(模型)view(视图)controller(控制器),他分为三个不同的层分别负责不同的职责。 View:该层用于存放视图,该层中我们可以对页面及控件进行布局。Model:模型一般都拥有很好的可复用性,在该层中,我们可以统一管理一些数据。Controlller:该层充当一个CPU的功能,即该应用程序

开放式耳机好用?平价开放式耳机推荐?四款开放式的蓝牙耳机推荐

开放式耳机好用吗?有平价些的开放式耳机推荐吗?那这两个问题的回答当然是肯定的。 首先开放式耳机好不好用取决于对耳机的需求,因为开放式耳机其实是比较适用于需要注意周围环境、需要‌长时间佩戴舒适以及需要频繁与人交流的场景中,在这些场景下使用开放式耳机的话就会比较有优势。就例如跑步骑行健身等运动的时候,能够兼得佩戴舒适度的同时,增加一定的安全性;还有在办公学习的时候,会很适合长时间佩戴,能够方便和

adb shell 执行后台程序后断开adb后台进程被结束的解决办法

环境:Android 版本 Android8 通常让程序后台执行就是在命令 最后加上 &即可,但是在Android 8上实验发现,程序的确后台了,但是拔掉USB线再连接上发现进程已结束。不确定Android早期版本是否存在此问题。 参考网上一些Linux方法,如加nohup 仍然无效,还是会结束。看来Android adb shell 与 Linux shell 还是有一定区别。 后来在网上

用ajax json给后台action传数据要注意的问题

必须要有get和set方法   1 action中定义bean变量,注意写get和set方法 2 js中写ajax方法,传json类型数据 3 配置action在struts2中

iOS剪贴板同步到Windows剪贴板(无需安装软件的方案)

摘要 剪贴板同步能够提高很多的效率,免去复制、发送、复制、粘贴的步骤,只需要在手机上复制,就可以直接在电脑上 ctrl+v 粘贴,这方面在 Apple 设备中是做的非常好的,Apple 设备之间的剪贴板同步功能(Universal Clipboard)确实非常方便,它可以在 iPhone、iPad 和 Mac 之间无缝传输剪贴板内容,从而大大提高工作效率。 但是,iPhone 如何和 Wind