Сканирование BLE с помощью Ionic4 на Android: не сканируется - PullRequest
0 голосов
/ 06 мая 2019

Сканирование BLE на Android не работает с простым тестовым приложением Ionic4 (4.12.0). Сообщение об ошибке отсутствует, проверки включения возвращаются положительно. Подписка просто никогда не возвращается. Смотрите logcat ниже. Любая помощь очень ценится.

Вот как воспроизвести проблему с нуля:

ionic start BLEscanner blank
cd BLEscanner/
cordova plugin add cordova-plugin-ble-central --variable BLUETOOTH_USAGE_DESCRIPTION="Scan for mesh packets"
npm install --save @ionic-native/ble
ionic cordova platform add android@8.0.0 (tried with 7.1.0 and 6.4.0)
ionic cordova plugin add cordova-plugin-ionic-webview@latest

заменить home.page.ts на этот код:

import { OnInit, Component } from '@angular/core';
import { BLE } from '@ionic-native/ble/ngx';
import {
  Platform,
} from '@ionic/angular';

@Component({
  selector: 'app-home',
  templateUrl: 'home.page.html',
  styleUrls: ['home.page.scss'],
})
export class HomePage implements OnInit  {
  constructor(
    private ble: BLE,
    private platform: Platform,
  ){
    console.log("constructor home page");
  }

  async ngOnInit() {
    // Since ngOnInit() is executed before `deviceready` event,
    // you have to wait the event.
    await this.platform.ready();
    console.log(`enter view, start scanning`)
    this.ble.scan([], 5).subscribe(
      device =>
        console.log(JSON.stringify(device))),
      error => console.log(`error ${error}`);
  }
}

скомпилируйте и запустите:

ionic cordova run android --device

check chrome: // осмотреть / # устройства для проверки и посмотреть на консоль. Все, что вы получаете:

Angular is running in the development mode. Call enableProdMode() to enable the production mode.
cordova.js:1218 deviceready has not fired after 5 seconds.
vendor.js:74395 Ionic Native: deviceready event fired after 3303 ms
home-home-module.js:98 constructor home page
home-home-module.js:135 enter view, start scanning

Нет результатов сканирования. Да, есть много рекламодателей BLE. И да, у приложения есть права доступа.

Сообщение об ошибке в Android LogCat:

05-03 15:30:42.368 17937 20508 I Places : ?: PlacesBleScanner stop()
05-03 15:30:42.394 17937 17937 I BeaconBle: 'L' hardware scan: scan stopped, no clients
05-03 15:30:42.394 17937 17937 I BeaconBle: Scan canceled successfully.

Есть идеи, что происходит. Странная вещь, это работало раньше. Некоторые версии не совпадают?

1 Ответ

0 голосов
/ 07 мая 2019

Ответ: несоответствие ионной версии. Если @ ionic-native / core и @ ionic-native / ble различаются, он перестает работать

Это сработало:

"@ionic-native/ble": "^5.5.1",
"@ionic-native/core": "^5.5.1",
...