到目前为止,我似乎无法找到正确的文档,教程或SO帖子指向正确的实现...即使有很多关于这个主题的帖子浮出水面。
问题
我有一个连接(配对)我建立的BT设备的应用程序。我想要的是,当用户按下主页按钮或背景时,我想通过BT服务层定期向BT设备发送更新。我现在正在applicationWillResignActive
和applicationDidEnterBackground
方法中执行此操作(仅触发一次),并且完美无缺。问题是我只能在看似一次后执行此操作。我在这些方法中启动的任何循环,计时器,后台类型服务很快就会死掉。
我需要什么
应用程序是否在后台和每10秒左右继续查找我的BT设备并向设备发送更新。我首先需要检查以确保应用程序仍然是背景,但一旦我知道它在后台我想发送更新。当应用程序重新聚焦时,我可以停止对BT设备的更新,但是当应用程序未处于焦点时它会发送它们至关重要。
研究
我找到了这些SO帖子(long-running tasks,background task execution handler,using this in an NSTimer loop ......但它已经死了)但是它们根本没有帮助实现。
答案 0 :(得分:0)
当我写这篇文章时,我对OBJ-C来说太新了,并且没有完全理解委托方法的概念,在后台触发适当的访问级别(即在bluetooth-central下的info.plist访问) )。
一个月后的最终结果是构建一个外围设备,可以通过订阅的特征更新在定时循环中唤醒应用程序。一旦应用程序唤醒,您有10秒钟来处理刚刚发生的事件,因为我只保存了设备发布的数据副本,一切都很好。