2015-11-26 3 views
1

Я создаю приложение cordova, которое подключается к считывателю Bluetooth. Все работает, когда приложение работает (не минимизировано). Я могу прочитать данные Bluetooth. Если я сейчас минимизирую приложение, а затем увеличу его снова (не уверен, что это правильный термин), то я больше не могу получать данные. Я вижу следующие в XCode:EAAccessory останавливается после того, как приложение cordova сведено к минимуму на 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 окончание фоновой задачи

Я также пытался реализовать accessoryDidConnect и accessoryDidDisconnect, используя код, приведенный ниже, но обе функции никогда не дозвонились:

- (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; 
} 

Вызывается функция pluginInitialize, но вспомогательный DidConnect или принадлежностьDidDisconnect никогда не вызывается. Как подключиться к Bluetooth-считывателю?

ответ

1

У меня это работает. Я пропускал следующую последнюю строку внутри моего плагина:

[[EAAccessoryManager sharedAccessoryManager] registerForLocalNotifications]; 

Вот полный метод снова:

- (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]; 

}