zoukankan      html  css  js  c++  java
  • iOS开发- 蓝牙后台接收数据(BLE4.0)

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

    本来以后会很麻烦, 但是学习了下..发现就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.     //收到数据, 设置推送  
    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. }  

    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;  

  • 相关阅读:
    Windows Server 2003 SP2(32位) 中文版 下载地址 光盘整合方法
    用Recycle()方法对Java对象的重要性
    Lotus中千奇百怪的 $$
    Developing a simple application using steps "User Decision" and "Mail"(1) 沧海
    沟通中的情绪管理(演讲稿) 沧海
    人只有在压力之下,才可能成功,没做一件事,都必须成功,不许言败 沧海
    什么是IDOC,以及IDOC的步骤 沧海
    VS2008 Professional Edition CHS中的deffactory.dat读取错误 沧海
    Including custom text in the step "User Decision" 沧海
    SAP Upgrade Strategy 沧海
  • 原文地址:https://www.cnblogs.com/AlvinCrash/p/5379427.html
Copyright © 2011-2022 走看看