博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS开发- 蓝牙后台接收数据(BLE4.0)
阅读量:6634 次
发布时间:2019-06-25

本文共 1980 字,大约阅读时间需要 6 分钟。

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

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

 

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

 

1.在xxx-info.plist文件中, 新建一行  Required background modes

 , 加入下面两项。

App shares data using CoreBluetooth

 和  App communicates using CoreBluetooth

如图所示:

 

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

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

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

 

2. 设置本地推送

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

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

 

转载于:https://www.cnblogs.com/yulang314/p/5088274.html

你可能感兴趣的文章
如何复制百度文库中的文章。。。这个必须留一份
查看>>
安全编程: 防止缓冲区溢出
查看>>
MVVM 模式
查看>>
喝茶有讲究:各种茶的功效
查看>>
Android性能测试工具--Oprofile
查看>>
Ffmpeg包中的Libavformat和libavcodec库的简单应用
查看>>
delphi 中如何执行SqlParameter形式的SQL语句
查看>>
ServiceStack.Redis的PooledRedisClientManager蛋痛的设计
查看>>
[Step By Step]使用SAP Business Objects Data Services将Excel数据导入到SAP HANA中
查看>>
设计模式(12)---->命令模式
查看>>
smarty学习——内建函数(部分接上)
查看>>
ubuntukylin提取root权限及mongoDB部署
查看>>
Linux防火墙的关闭和开启(转)
查看>>
Spring注解@Component、@Repository、@Service、@Controller区别
查看>>
Aimp3的播放列表 按评分排序 落雨
查看>>
【Leet Code】Palindrome Number
查看>>
python网络编程初级
查看>>
Ruby中的Symbol与字符串
查看>>
Ubuntu下crontab命令的用法
查看>>
KafkaConsumer 长时间地在poll(long )方法中阻塞
查看>>