2015-11-26 1 views
1

Je construis une application Cordova qui se connecte à un lecteur Bluetooth. Tout fonctionne trouver lorsque l'application est en cours d'exécution (pas minimisé). Je suis capable de lire les données Bluetooth. Si je minimise maintenant l'application et que je la maximise ensuite (je ne sais pas si c'est le bon terme), je ne peux plus recevoir de données. Je ne vois ce qui suit dans XCode:EAAccessory s'arrête après que l'application Cordova est réduite sur iOS

2015-11-26 12: 24: 13,944 MyAppName [704: 170849] /SourceCache/ExternalAccessory/ExternalAccessory-288.20.7/EAAccessoryManager.m:__51-[EAAccessoryManager _checkForConnectedAccessories] _block_invoke-631 de fin tâche de fond

J'ai aussi essayé de mettre en œuvre le accessoryDidConnect et accessoryDidDisconnect en utilisant le code ci-dessous, mais les deux fonctions ne se dit:

- (void) pluginInitialize 
{ 
    NSLog(@"init called"); 
    [[NSNotificationCenter defaultCenter] addObserver:selfselector:@selector(accessoryDidConnect:) 
               name:EAAccessoryDidConnectNotification 
               object:nil]; 


    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(accessoryDidDisconnect:) 
               name:EAAccessoryDidDisconnectNotification object:nil]; 
} 

-(void) accessoryDidConnect:(NSNotification *)notification 
{ 
    EAAccessory *connectedAccessory = [[notification userInfo] objectForKey:EAAccessoryKey]; 
    NSLog(@"error :%@", connectedAccessory.protocolStrings); 
    // Only notify of change if the accessory added has valid protocol strings 
    if(connectedAccessory.protocolStrings.count != 0) 
    { 
     _accessoryList = [[[EAAccessoryManager sharedAccessoryManager] connectedAccessories] mutableCopy]; 
    } 
    NSLog(@"connected"); 
    isDeviceLoaded=true; 
} 

- (void)accessoryDidDisconnect:(NSNotification *)notification 
{ 
    // EAAccessory *disconnectedAccessory = (EAAccessory *)[notification.userInfo objectForKey:@"EAAccessorySelectedKey"]; 
    NSLog(@"disconnected"); 
    _accessoryList = [[[EAAccessoryManager sharedAccessoryManager] connectedAccessories]mutableCopy]; 
    isDeviceLoaded=true; 
} 

La fonction pluginInitialize est appelée, mais accessoryDidConnect ou accessoryDidDisconnect n'est jamais appelée. Comment me reconnecter au lecteur Bluetooth?

Répondre

1

Je l'ai fonctionné. Je manquais la dernière ligne suivante dans mon plugin:

[[EAAccessoryManager sharedAccessoryManager] registerForLocalNotifications]; 

Voici la méthode complète à nouveau:

- (void) pluginInitialize 
{ 
    NSLog(@"init called"); 
    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(accessoryDidConnect:) 
               name:EAAccessoryDidConnectNotification 
               object:nil]; 


    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(accessoryDidDisconnect:) 
               name:EAAccessoryDidDisconnectNotification 
               object:nil]; 

    [[EAAccessoryManager sharedAccessoryManager] registerForLocalNotifications]; 

}