问题描述
我使用readRSSI函数
安排Timer读取RSSI,但是当我的应用程序进入后台时,计时器停止。当app进入后台
时,也许有一种很好的方法可以从外设的通知中获取RSSI值。但我不知道该怎么做。
有人能帮帮我吗?
任何人都有更好的方法吗?
I schedule a Timer to read RSSI using readRSSI function,but the timer stops when my app go into background. Maybe there is a good method to get RSSI value from peripheral's notification when app comes into background. But I don't know how to do.Could anybody help me?Anyone has a better method?
推荐答案
我遇到了同样的问题,我有两个想法。
I have got the same problem, and I have two idea.
1。
首先,您应该有一些服务定期获得corebluetooth委托。
F
或我的例子,我有一个电池服务,我可以用 didUpdateValueForCharacteristic
定期委托。
First, you should have some service that got corebluetooth delegate periodly.For my example, I have a battery service that I can got delegate with didUpdateValueForCharacteristic
periodly.
其次,在 didUpdateValueForCharacteristic
中设置readRSSI函数。并且不要忘记使用Corebluetooth设置后台模式。现在,您可以在更新电池值时更新RSSI。
Second, set readRSSI function in didUpdateValueForCharacteristic
. And don't forget to set background mode with Corebluetooth.So now you can got the RSSI updating when update battery value.
这对我来说很好,但是我得到了另一个一些示例代码中的想法。
This works fine for me, but I got another idea from some sample code.
2.
每当您想启动RSSI阅读器时,请使用以下代码:
Use the code below whenever you want to start the RSSI reader:
NSTimer *rssiTimer;
[rssiTimer invalidate];
rssiTimer = [NSTimer timerWithTimeInterval:1.0 target:peripheral selector:@selector(readRSSI) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop]addTimer:rssiTimer forMode:NSRunLoopCommonModes];
它也适用于我。
这篇关于我安排一个Timer使用readRSSI函数读取RSSI,但是当我的应用程序进入后台时计时器停止的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!