【发布时间】:2017-07-10 14:33:46
【问题描述】:
到目前为止,我似乎无法找到正确的文档、教程或 SO 帖子来为我指明正确的实现……尽管有很多关于这个主题的帖子。
问题
我有一个应用程序可以连接(配对)到我构建的 BT 设备。我想要的是,当用户按下主页按钮或背景应用程序时,我想通过 BT 服务层定期向 BT 设备发送更新。我现在正在 applicationWillResignActive 和 applicationDidEnterBackground 方法中执行此操作(仅触发一次),并且效果很好。问题是我只能执行一次。我在这些方法中启动的任何循环、计时器、后台类型服务,都会很快死掉。
我需要什么
让应用程序在后台持续寻找我的 BT 设备,每 10 秒左右,并向设备发送更新。我首先需要检查以确保应用程序仍然在后台,但是一旦我知道它在后台,我想发送更新。当应用重新获得焦点时,我可以停止对 BT 设备的更新,但在应用未获得焦点时发送更新至关重要。
研究
我找到了这些 SO 帖子(long-running tasks、background task execution handler、using this in an NSTimer loop... 但它死了)但它们根本没有帮助实施。
【问题讨论】:
-
你检查过这个吗:stackoverflow.com/questions/40761722/…。此外,您不能在后台使用 NSTimer,因为它适用于主线程。
-
@ninjaproger 如何让间隔计时器或某种受控循环在后台运行并将更新发送到我的蓝牙设备?
标签: ios objective-c bluetooth uiapplication background-service