Je suis en train de développer une application qui doit fonctionner en continu et suivre certaines caractéristiques périphériques.CoreBluetooth "willRestoreState" - que devrait-on faire exactement là-bas?
Tout fonctionne bien à l'avant-plan.
Cela fonctionne également en arrière-plan, mais je ne suis pas sûr de le faire correctement.
Je publie de nombreux articles sur la restauration d'état et l'implémentation willRestoreState
, mais beaucoup d'entre eux ne sont pas explicites et vous indiquent ce qu'il faut faire lorsque cette méthode est appelée.
Le processus que je fais va comme ceci:
Je crée un gestionnaire central à l'aide
myCentralManager =
[[CBCentralManager alloc] initWithDelegate:self queue:nil
options:@{ CBCentralManagerOptionRestoreIdentifierKey:
@"myCentralManagerIdentifier" }];
A partir de là que je fais le du flux régulier :
attente pour que le gestionnaire central soit mis sous tension (centralManagerDidUpdateState) -> Rechercher mon périphérique -> Se connecter -> Découvrir le service -> Découvrir la caractéristique -> S'abonner à la caractéristique -> Lire les données
Alors je tue mon application avec
kill(getpid(), SIGKILL);
J'attends quelques secondes, puis commence la publicité à nouveau de mon périphérique.
Ensuite, je peux voir que le processus revient à la vie, et mes journaux montrent que didFinishLaunchingWithOptions
dans AppDelegate est appelée.
Je puis restaurer le gestionnaire central comme celui-ci:
NSArray *identifiers = launchOptions[UIApplicationLaunchOptionsBluetoothCentralsKey];
if (identifiers && identifiers.count > 0) {
_centralManager = [[CBCentralManager alloc] initWithDelegate:self
queue:nil
options:@{CBCentralManagerOptionRestoreIdentifierKey:[identifiers objectAtIndex:0]}];
}
Je peux aussi voir que willRestoreState
et centralManagerDidUpdateState
sont appelés se.
Voici où je suis perdu. Que dois-je faire ensuite? Si je suis continuer à faire le flux régulier (que je décrit ci-dessus, tout semble fonctionner correctement -. Et de la même manière que ci-dessus
Mais - Est-ce que je fais la bonne chose
dois-je faire quelque chose? ? dans willRestoreState
Si oui, ce que je devrais faire
Merci à l'avance