本文介绍了我安排一个Timer使用readRSSI函数读取RSSI,但是当我的应用程序进入后台时计时器停止的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用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,但是当我的应用程序进入后台时计时器停止的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-26 14:44