用于蓝牙的Objective-c长期运行后台服务,当应用程序后台运行时

时间:2017-07-10 14:33:46

标签: ios objective-c bluetooth uiapplication background-service

到目前为止,我似乎无法找到正确的文档,教程或SO帖子指向正确的实现...即使有很多关于这个主题的帖子浮出水面。

问题

我有一个连接(配对)我建立的BT设备的应用程序。我想要的是,当用户按下主页按钮或背景时,我想通过BT服务层定期向BT设备发送更新。我现在正在applicationWillResignActiveapplicationDidEnterBackground方法中执行此操作(仅触发一次),并且完美无缺。问题是我只能在看似一次后执行此操作。我在这些方法中启动的任何循环,计时器,后台类型服务很快就会死掉。

我需要什么

应用程序是否在后台和每10秒左右继续查找我的BT设备并向设备发送更新。我首先需要检查以确保应用程序仍然是背景,但一旦我知道它在后台我想发送更新。当应用程序重新聚焦时,我可以停止对BT设备的更新,但是当应用程序未处于焦点时它会发送它们至关重要。

研究

我找到了这些SO帖子(long-running tasksbackground task execution handlerusing this in an NSTimer loop ......但它已经死了)但是它们根本没有帮助实现。

1 个答案:

答案 0 :(得分:0)

当我写这篇文章时,我对OBJ-C来说太新了,并且没有完全理解委托方法的概念,在后台触发适当的访问级别(即在bluetooth-central下的info.plist访问) )。

一个月后的最终结果是构建一个外围设备,可以通过订阅的特征更新在定时循环中唤醒应用程序。一旦应用程序唤醒,您有10秒钟来处理刚刚发生的事件,因为我只保存了设备发布的数据副本,一切都很好。