美文网首页
iOS蓝牙后台运行

iOS蓝牙后台运行

作者: zhlv | 来源:发表于2020-04-09 11:10 被阅读0次

蓝牙后台运行
最近开始做一些关于蓝牙的项目,之前也做过连接蓝牙打印机.做一些简单的打印之类的, 这些网上一搜一大把.就不说了. 但是这次项目需要在后台运行, 后台扫描.连接,发送消息等操作,也上网搜索了大量的资料.
https://www.jianshu.com/p/38a4c6451d93
https://www.jianshu.com/p/927ef9d5d2d1
......

功夫不负苦心人,终于完成了

蓝牙外设
蓝牙中心

需要注意的地方

1.蓝牙在后台运行需要打开后台模式(Xcode里面配置)
2.官方文档里面在创建蓝牙管理中心的时候, option里面增加恢复标识

//CBCentralManagerOptionRestoreIdentifierKey   app中加入状态的保存和恢复功能的方式很简单
        //CBCentralManagerOptionShowPowerAlertKey布尔值,表示如果当前蓝牙没打开,是否弹出alert框(已经不管用了. 可以在centralManagerDidUpdateState 这里检测)
        self.centralManager = [[CBCentralManager alloc] initWithDelegate:self queue:dispatch_get_main_queue() options:@{CBCentralManagerOptionRestoreIdentifierKey:kUaesCentralManagerIdentifier,
            CBCentralManagerOptionShowPowerAlertKey:@(1)}];

3.复原central和peripheral manager

当应用被系统唤醒,你需要做的第一件事是使用还原id复原central and peripheral manager。如果应用中只有一个central or peripheral manager,并且在应用的整个生命周期中存在,那么就简单了。
如果应用使用多个central or peripheral manager 或如果应用使用的manager不是在app的整个生命周期中存在,那么应用需要知道哪些managers需要复原。在实现application:didFinishLaunchingWithOptions: 这个代理方法时,通过使用参数launchoptions中的键(UIApplicationLaunchOptionsBluetoothCentralsKey or UIApplicationLaunchOptionsBluetoothPeripheralsKey) 可以获得应用在终止时为我们保存的还原id列表。
第一次做的时候一直没有值,
那什么时候有值.
连接成功以后, 点击按钮闪退.(exit(0)), 等带蓝牙外设自动连接,进入APP这时就有值了.. 很关键


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    NSArray *identifiers = launchOptions[UIApplicationLaunchOptionsBluetoothCentralsKey];
 for (NSString *identifier in identifiers){
            if ([identifier isEqualToString:kUaesCentralManagerIdentifier])   {
           //做你的操作     
}
    return YES;
}

3.在断开设备的代理方法中写上继续扫描, 指定的serviceID


    [self.centralManager scanForPeripheralsWithServices:@[[CBUUID UUIDWithString:self.serviceID]] options:@{CBCentralManagerScanOptionAllowDuplicatesKey:@(1)}];

最后测试结果
我用A手机当做蓝牙外设., B手机当做蓝牙中心
A与B第一次连接上以后, 发送消息.... 然后B手机退出后台, A手机进程杀死, 关机.(相当于断开设备), 间隔很久, 打开A手机的蓝牙外设, 可以继续发送消息....
(我要的就是这样的效果, 不管多久, 当距离外设很近时, 可以自动连接. 发送消息)

相关文章

  • iOS 蓝牙后台运行

    在info.plist文件中加入Array类型的Required background modes字段并添加两个元...

  • iOS蓝牙后台运行

    首先,先来大概了解下苹果的后台运行的机制:一般说来,所有程式进入背景后都还有5 秒的执行缓冲时间,有些程序可以要求...

  • ios蓝牙后台运行

    ios蓝牙运行有两种方式: 方式一: 在info.plist文件中加入Array类型的Required backg...

  • iOS蓝牙后台运行

    蓝牙后台运行最近开始做一些关于蓝牙的项目,之前也做过连接蓝牙打印机.做一些简单的打印之类的, 这些网上一搜一大把....

  • iOS蓝牙后台运行

    我们做的是需要连接蓝牙的App,默认情况下当应用进入后台或挂起时,蓝牙任务将会被终止 开启蓝牙后台模式 在Xcod...

  • iOS - 蓝牙后台运行问题

    App在连接蓝牙设备使用时,手机可能会息屏或者手动锁屏了,App进入后台模式,如果没有进行相应处理,App就不会继...

  • 蓝牙后台运行

    设置info.plist 在info.plist文件中设置Required background modes添加A...

  • Paper Collection - Background Ta

    1.IOS后台运行机制详解(一)2.IOS后台运行机制详解(二)3.IOS后台运行 之 后台播放音乐4.转载:IO...

  • iOS 短信验证码倒计时按钮

    级别: ★★☆☆☆标签:「iOS 验证码后台倒计时」「NSTimer后台运行」「iOS 定时器后台运行」作者: ...

  • iOS--iOS app中蓝牙的后台处理

    iOS app中蓝牙的后台处理(Core Bluetooth Background Processing for ...

网友评论

      本文标题:iOS蓝牙后台运行

      本文链接:https://www.haomeiwen.com/subject/jfkqmhtx.html