iOS 10 后台 CoreBluetooth 广告

2024-03-16

首先:我有一台 iPad Air 2 和一台 iPhone 7。为了进一步阅读,我们估计该应用程序在 iPad 上处于活动状态并打开,在 iPhone 上处于后台模式。该应用程序完全相同,即使具有相同的蓝牙服务 UUID 和相同的 DataLocalNameKey。

我想编写一个应用程序,可以在后台宣传蓝牙服务,并且能够发现该服务(在后台也是最佳的)。正如我已经读过的 https://stackoverflow.com/questions/18944325/run-iphone-as-an-ibeacon-in-the-background我无法使用苹果信标技术,因为只能在后台附近通过信标进行扫描/通知(我对此进行了测试,工作正常),但不能做广告。所以我开始使用 CoreBluetooth,如上述 SO 答案中所述,因为可以在后台做广告。

我的应用程序调用didDiscoverPeripheraliPhone 上的 CBCentralManagerDelegate 中的方法(应用程序在后台),因此它检测到了 iPad。这isAdvertisingiPhone 上 CBPeripheralManager 的属性是true. But didDiscoverPeripheraliPad 上不调用。我有点困惑。一种选择是我的 iPad 由于某些原因无法再检测到 iPhone,或者我的 iPhone 正在撒谎并且它不是广告。

所以我认为我只是有点愚蠢并在谷歌上搜索“CoreBluetooth 调试应用程序”。我发现Vicinity https://github.com/Instrument/Vicinity and 替代信标 https://github.com/Decemberlabs/AltBeacon。这两个应用程序的行为是相同的!如果您将广告应用程序置于后台(按主页/睡眠按钮),则浏览应用程序将无法再发现它。如果您打开后台应用程序,它会立即发现它。这两个应用程序都提到它们可以在后台播放。

难道我做错了什么;这是预期的行为吗?我是否误解了框架?你能确认这个行为吗?

要确认这一点,最快的方法是安装Vicinity https://github.com/Instrument/Vicinity在两台设备上(您必须添加NSBluetoothPeripheralUsageDescription键(Info.plist)设置要广播的一台设备,然后按主页按钮。


这并不是 iOS 10 特有的——iOS 上一直都是这样。在 iOS 上,应用程序在后台时根本无法发送标准蓝牙 LE 广告。他们必须在前台才能执行此操作。

也就是说,iOS 对后台广告 GATT 服务的应用程序的支持有限。这使用了一种专有技术,仅适用于正在寻找这些服务的其他 iOS 设备。 (例如,由于它使用非标准专有方案,因此相同的技术不适用于信标广告。)

苹果是这样描述的:

...您应该意识到,当您的应用程序位于后台时,广告的运作方式与您的应用程序位于前台时的运作方式不同。特别是当您的应用程序在后台投放广告时:

  • 忽略 CBAdvertisementDataLocalNameKey 通告键,并且不通告外设的本地名称。
  • CBAdvertisementDataServiceUUIDsKey 广告键值中包含的所有服务 UUID 均放置在特殊的“溢出”区域中;它们只能被明确扫描它们的 iOS 设备发现。
  • 如果所有广告应用程序都在后台运行,则外围设备发送广告数据包的频率可能会降低。

在这里阅读更多内容:https://developer.apple.com/library/content/documentation/NetworkingInternetWeb/Conceptual/CoreBluetooth_concepts/CoreBluetoothBackgroundProcessingForIOSApps/PerformingTasksWhileYourAppIsInTheBackground.html https://developer.apple.com/library/content/documentation/NetworkingInternetWeb/Conceptual/CoreBluetooth_concepts/CoreBluetoothBackgroundProcessingForIOSApps/PerformingTasksWhileYourAppIsInTheBackground.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS 10 后台 CoreBluetooth 广告 的相关文章

  • 以编程方式触发iOS摇动事件

    如何以编程方式触发 iOS 中的摇动事件 我尝试过以下方法 但它总是崩溃 void shake NSLog TEST UIMotionEventProxy m NSClassFromString UIMotionEvent alloc in
  • SiriKit 错误:此应用程序不支持捐赠意图

    我在 Xcode 10 iOS 12 Beta 中捐赠自定义意图时遇到问题 我创建了一个在我的主应用程序目标和 OrderIntent 目标之间共享的自定义框架 我创建了一个 intentdefinition 文件 并将目标成员资格设置为我
  • 指定访问组时出现 KeychainItemWrapper 错误

    相当长一段时间以来 我一直在使用 KeychainItemWrapper 的 ARC 版本成功读取和写入私有钥匙串项目 我现在正在努力将我的 iOS 应用程序转换为使用共享访问组 以便我的 2 个共享相同应用程序前缀的应用程序可以访问钥匙串
  • 在现有 iOS 应用程序中集成 React-native(0.40.0) 后找不到 Yoga/Yoga.h 头文件

    在我的 Swift iOS 应用程序中集成 React Native 后 我无法构建 yoga Yoga h file cannot be found 我已经浏览了文档 查看了react native github页面 检查了类似问题的SO
  • git 提交错误:检测到大文件

    您好 我正在为 ios 8 1 开发一个应用程序 xcode 我已经使用 googleMaps 框架来实现自动完成功能 当我尝试在 Git 中推送我的项目时 我收到大文件检测错误 后来尝试使用 git lfs 并跟踪 git 检测到的文件
  • 在故事板中的视图控制器之间滑动手势

    我希望添加左右滑动手势来在视图控制器之间进行更改 这是否可能 并且有没有一种简单的方法可以在故事板中执行此操作 谢谢 故事板允许您在两个视图控制器之间设置 Segues 我想说首先在视图之间附加 Segues 给它一个标识符 然后使用类似的
  • Swift 中的 UIAlert 自动消失?

    我有以下代码 Creates Alerts on screen for user func notifyUser title String message String gt Void let alert UIAlertController
  • 在 swift3 中结合平移、alpha 和缩放动画

    我是 iOS Swift 开发的新手 我尝试将三个参数组合在一个动画中 但没有成功 我认为解决方案就在这里 Apple Dev Core 动画编程指南 https developer apple com library content do
  • 在 swrevealcontroller 之前实现登录屏幕

    我刚刚开始学习 IOS 开发 我已经按照给定的在线教程成功实现了 SWRevealViewController 一切都按预期工作 然后 我决定添加一个登录屏幕 这将是应用程序运行时用户看到的第一个页面 我采取的步骤如下 将 UIViewCo
  • IOS7 状态栏在选定控制器上隐藏/显示

    我想在某些控制器上显示和隐藏状态栏 这可以完成吗 或者它更像是一个整体应用程序设置 我看过很多关于 plist 更新的帖子 问题 View controller based status bar appearance NO 如果这完成了 那
  • 在 iOS5 中使用 UISegmentedControl 切换 ViewController

    我正在尝试一些非常简单的事情 但不知何故我无法让它发挥作用 我尝试做的就是使用 UISegmentedControl 在 2 个视图控制器之间切换 就像您可以在 App Store 应用程序的 突出显示 选项卡中看到的那样 我正在使用 iO
  • 径向渐变绘制性能 - OpenGL-ES 可以改进吗?

    我正在开发一个图像处理应用程序 它将径向渐变叠加在从照片库加载的图像上 在屏幕上 我有一个滑块可以动态地增大 减小径向渐变的半径 我发现模拟器上的性能很好 但在 iPhone 3G 或 3GS 上就很糟糕了much移动滑块时重绘速度较慢 我
  • Objective-C中如何使继承的类能够看到父类的隐藏方法[重复]

    这个问题在这里已经有答案了 我有两个类 Class1 和 Class2 第二个类继承自第一个类 我需要重写 Class1 的 update 方法来实现我的目标 继承方法中 update方法的改变是在代码中间进行的 所以我不能使用 超级更新
  • (Ionic 2)尝试回退到 Cordova-lib 执行时发生错误:TypeError:无法读取未定义的属性“then”

    Edit 使用 ionic 2 时会发生这种情况 我知道它还不稳定 但我认为可能有一些解决方案 因为其他人似乎没有遇到这个问题 Edit end 由于某种原因 我在尝试使用 ionic build android 和 ionic build
  • CBPeripheral 名称有时为 null

    我正在开发一个应用程序来与蓝牙 LE 外围设备进行通信 我目前正在测试的外围设备是其中之一these http www ti com tool cc2540dk mini 有趣的是 有时当我发现它时 我会得到它的正确名称 SimpleBLE
  • 如何在 UICollectionView 的节标题中动态添加标签和按钮?

    请帮助我如何水平添加标签和水平添加类似的按钮 但每个按钮应像另一个部分一样在每个标签的下方对齐 这应该在 UICollectionView 的标题中动态发生 因为标签和按钮的数量根据我的数据 我想制作一种 Excel 类型的布局 并在标题中
  • ViewWillAppear 没有被 UISplitViewController 调用

    背景和目标 我有一个基于 UISplitViewController 的 iPad 应用程序 到目前为止它支持 4 个方向 但现在我想将其锁定为仅横向 我变了shouldAutorotateToInterfaceOrientation左视图
  • 防止UIScrollView的UIPanGestureRecognizer遮挡UIScreenEdgePanGestureRecognizer

    我有一个UIScrollView它填满了我应用程序的一页上的屏幕 但我希望允许用户从屏幕边缘平移以显示其后面的视图 问题是 UIScrollView 窃取了我的触摸UIScreenEdgePanGestureRecognizer在屏幕边缘
  • 尝试复制文件时出错

    我正在尝试使用 NSFileManager 将临时文件复制到另一个位置 但是它失败并抱怨其中一个文件不存在 Copy temp file NSError error BOOL exists fileManager fileExistsAtP
  • GMSMapView 中的倒多边形

    我必须在我的 iPhone 项目中使用 Google 地图 并且我正在使用 GMSPolygon 来绘制多边形 但是如何填充地图上除多边形内部之外的所有位置 就像下图一样 谢谢 我玩过你的问题 主要思想是用多边形填充整个地球 然后为您的特定

随机推荐

  • HashMap没有实现Iterable接口的原因? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 谁能告诉我原因HashMap没有实施Iterable 界面 不客气地说 Map一般来说 和HashMap特别是 不实施Iterator因为不清楚
  • 将 Jekyll 添加到现有网站

    我有一个简单的网站 并尝试在新文件夹中添加 Jekyll 博客blog因此我已经跑了jekyll new blog在文件夹中 path 但是当我运行命令时jekyll build in path我有这些错误 jekyll build Con
  • Microsoft SkyDrive 有 API 吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 所以与最近有消息称 Microsoft Skydrive 的存储容量将增至 25GB http lif
  • 将小多边形堆叠在另一个较大的多边形内

    我有以下形状优美的像素多边形 big poly Polygon 94 5 77 0 92 5 53 0 87 5 45 0 66 0 20 5 9 0 3 5 5 5 6 0 4 5 13 0 7 5 26 0 6 5 91 0 8 0 9
  • 去比较字符串

    给定两个字符串a and b 有时我想确定这三个语句中的哪一个 a lt b a b or a gt b是真的 在 C 或 C 等语言中 我将得到一个 int 值v在调用相应的函数或方法后 然后我可以通过检查是否可以确定上述哪一个陈述是正确
  • 在Flutter中使DataTable双向滚动

    如何使数据表双向滚动 我使数据表水平滚动 但我的列表很大并且无法向下滚动 override Widget build BuildContext context return Scaffold appBar AppBar title Text
  • 让QGraphicsView做平滑centerOn

    我并不是 Qt 的新手 但有一些事情我不知道 我正在使用 Python 进行编程 但请随意以任何语言发布您的答案 所以 我有几个QGraphicsItem s 位于QGraphics场景 以正常观看场景QGraphicsView 一切正常
  • 你能克隆一个匿名对象吗? (Java/面向对象编程)

    我正在创建一个非常常见 非常简单的形状的库 球体以及环面等都将成为成员 环面有两个半径场 而球体有一个 我们可以通过更改函数的实现以包含两个半径来提供修改后的行为 当然还可以添加额外的半径字段 环面很常见 因此将这种行为包含在永久库中是有益
  • 首先添加一个UIView,甚至是导航栏

    我想在任何其他视图 甚至导航栏 上方显示一种 弹出 视图 如下所示 全屏黑色背景 alpha 为 0 5 可以看到其他内容UIViewController下 a UIView中间的窗口包含一些信息 如果您想了解一切 则可以使用日历 为此 我
  • 如何检查 Java 上的 SSLSocket 连接是否正常?

    我有一个 SSLSocket 池 我需要在借用对象之前检查套接字连接是否正常 isConnected isInputShutdown 和 isOutputShutdown 没有用 因为它们不检查双方是否已连接 如果我尝试从套接字写入或读取
  • 删除表中的行会导致 LOCKS

    我正在运行以下命令从大型表 1 5 亿行 中批量删除行 DECLARE RowCount int WHILE 1 1 BEGIN DELETE TOP 10000 t1 FROM table t1 INNER JOIN table2 t2
  • 为什么 React useState 钩子不能在 for 循环中工作?

    我很好奇为什么在 for 循环中设置状态不能按预期工作 这是我使用钩子的代码 const count setCount useState 0 const onButtonPress gt for let i 0 i lt 100 i set
  • 此脚本(使用 Outlook 发送电子邮件)如何工作?

    谁能帮助我了解 MAPI 的工作原理 我有一个简单的 vbscript 它使用 MAPI 发送电子邮件 它工作得很好 但是 我不知道它是如何做到的 后台发生了什么 Const ForReading 1 Set args WScript Ar
  • Jquery - 根据 的内容应用类

    我有一个水平导航菜单 我可以编辑其源代码 我唯一的选择是在通过 JQUERY 加载时动态添加类 假设我有 3 个选项卡 Home Profile Blog 每个都有一个链接 如下所示 a href home html Home a JQUE
  • 按距给定的升序距离对点数组进行排序

    我需要你的帮助 我有一个已知坐标的点 例如 x 5 y 4 和每个代表点的对象数组 x 2 y 6 x 14 y 10 x 7 y 10 x 11 y 6 x 6 y 2 现在我需要按距给定点的距离按升序对数组进行排序 例如 x 6 y 2
  • 识别表中所选行何时已被选择

    我有一个p datatable在 primefaces 中 我有不同的侦听器 以不同的方式在数据表中选择行事件 我需要确定表中所选行何时已被选择 我该怎么做 我需要这个因为我不想那个p blockUI当我选择表中已选择的行时运行 有我的页面
  • textcat -> 不允许架构额外字段

    我一直在尝试练习从本教程中学到的知识 https realpython com sentiment analysis python https realpython com sentiment analysis python 使用 PyCh
  • 如何仅使 Dropzone.js Previews Div 可点击而不是整个表单

    我必须使用 dropzone js 表单 它将几个输入和一个文件上传信息发送到另一个页面 我的 dropzone 代码如下所示 gt Dropzone options mydropzone maxFiles 1 maxFilesize 10
  • 如何在Python中根据特定日期提取前两年的数据?

    我有一个 csv 文件 其中包含过去 3 年的时间序列月度数据 根据今天的日期 我只想读取前两年的数据来预测未来 Data file example has data from 01 01 15 to 31 10 19 Date Value
  • iOS 10 后台 CoreBluetooth 广告

    首先 我有一台 iPad Air 2 和一台 iPhone 7 为了进一步阅读 我们估计该应用程序在 iPad 上处于活动状态并打开 在 iPhone 上处于后台模式 该应用程序完全相同 即使具有相同的蓝牙服务 UUID 和相同的 Data