2013-03-27 1 views
2

Je programme un minuteur pour lire RSSI en utilisant la fonction readRSSI , mais le minuteur s'arrête lorsque mon application passe en arrière-plan. Peut-être qu'il y a une bonne méthode pour obtenir la valeur RSSI de la notification du périphérique lorsque l'application arrive en arrière-plan . Mais je ne sais pas comment faire. Quelqu'un pourrait-il m'aider? Quelqu'un a une meilleure méthode?Je programme un minuteur pour lire RSSI en utilisant la fonction readRSSI, mais le minuteur s'arrête quand mon application passe en arrière-plan

+1

Les applications iOS ne s'exécutent pas en arrière-plan, sauf si vous spécifiez qu'elles sont nécessaires, puis uniquement pendant une courte période. Toutes vos minuteries seront suspendues jusqu'à ce que l'application revienne au premier plan. (http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html) – Greg

Répondre

1

J'ai le même problème et j'ai deux idées.

1.

D'abord, vous devriez avoir un service qui a obtenu corebluetooth délégué periodly. F ou mon exemple, j'ai un service de batterie que je peux déléguer avec didUpdateValueForCharacteristic périodiquement.

Ensuite, définissez la fonction readRSSI dans didUpdateValueForCharacteristic. Et n'oubliez pas de définir le mode d'arrière-plan avec Corebluetooth. Ainsi, vous pouvez obtenir la mise à jour RSSI lors de la mise à jour de la valeur de la batterie.

Cela fonctionne très bien pour moi, mais j'ai eu une autre idée à partir d'un exemple de code.

2.

Utilisez le code ci-dessous chaque fois que vous voulez démarrer le lecteur RSSI:

NSTimer *rssiTimer; 
[rssiTimer invalidate];  
rssiTimer = [NSTimer timerWithTimeInterval:1.0 target:peripheral selector:@selector(readRSSI) userInfo:nil repeats:YES]; 
[[NSRunLoop currentRunLoop]addTimer:rssiTimer forMode:NSRunLoopCommonModes]; 

Il fonctionne très bien pour moi aussi.

+0

J'ai cette idée hier, et j'essaie de la résoudre en modifiant le périphérique. question est, je vois certaines applications qu'ils peuvent atteindre alerte à distance sans modifier mon appareil. – user2214220

+0

Je ne sais pas exactement ce que signifie "modifier votre appareil". Pouvez-vous décrire en détail votre question? – momoyo

+0

merci, j'ai trouvé la réponse. – user2214220