ios - 当应用程序在后台运行时使用非核心蓝牙框架访问蓝牙 LE 设备

标签 ios bluetooth bluetooth-lowenergy core-bluetooth

我的 iOS 应用程序通过专有 SDK(即非核心蓝牙框架)与 BTLE 设备通信。配对也通过此 SDK(即插即用代码)进行。 SDK 服务有许多非标准的蓝牙服务和特性。

一旦用户切换到另一个应用程序,即主应用程序在后台运行,我就无法再访问 SDK 服务。但是,即使我的应用程序在后台运行,我仍能继续从设备接收数据,这一点至关重要。

根据我的研究,Apple 只允许很少的背景模式,列在这里 https://developer.apple.com/library/ios/documentation/general/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html (在页面中搜索“UIBackgroundModes”),例如音频、位置、voip、获取、远程通知、报摊内容、外部附件、蓝牙中心、蓝牙外设

由于 SDK 使用自己的蓝牙框架和许多非标准蓝牙服务,我必须选择什么选项(如果有的话)让我的应用程序即使在后台运行时也能以连续的时间间隔持续访问服务?

我正在考虑在后台使用定位服务。我有一个疑问:

  1. 如果 Apple 发现定位服务在我的应用中用处很少或没有用处,那么他们可能会拒绝它?

  2. 如果我的 iPhone 在平面上,那么它不会调用 didUpdateLocation 方法,在这种情况下我无法与 SDK 通信?

请建议,在后台运行我的应用程序的最佳方式是什么,这样我就不会遇到任何问题。

最佳答案

在 XCode 中,转到您的项目->功能->背景模式并将背景模式标记为开。 Mark 还使用蓝牙 LE 配件:

enter image description here

关于ios - 当应用程序在后台运行时使用非核心蓝牙框架访问蓝牙 LE 设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23871461/

相关文章:

iOS 本地存储的任何大小限制

iphone - iphone应用程序是否有API可以更改其自己的设备蓝牙名称?

Android startBluetoothSco 不启动 sco 但 isBluetoothScoOn 返回 true

c++ - Qt Bluetooth Low Energy - 使用非标准 GATT 的问题

android - onCharacteristicWrite 如何知道 Android 中的状态是成功的?

ios - 如何从 iOS 网络应用程序与蓝牙设备配对?

ios - 无法使用快速包管理器安装 firebase crashlytics

ios - CGContextDrawTiledImage 超过一定尺寸显示黑色背景

ios - 无法使用命令行构建 iOS 项目,但可以通过 Xcode 界面构建

linux - 蓝牙 LE 信号强度 Linux