EAAccessory останавливается после сворачивания приложения Cordova на iOS

Я создаю приложение Cordova, которое подключается к считывателю Bluetooth. Все работает найти, когда приложение запущено (не свернуто). Я могу читать данные bluetooth. Если я теперь минимизирую приложение, а затем снова увеличиваю его (не уверен, что это правильный термин), я больше не смогу получать никаких данных. Я вижу в XCode следующее:

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 вызывается, но accessoryDidConnect или accessoryDidDisconnect никогда не вызывается. Как повторно подключиться к считывателю bluetooth?


person Sonu Kapoor    schedule 26.11.2015    source источник


Ответы (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];

}
person Sonu Kapoor    schedule 26.11.2015