Задать вопрос
@Muramidaza

При использовании react-native-ble-manager не работает подписка на notifiction — при сборке приложения как Release, но работает в Debug, почему так?

Я использую для тестирования Oppo Reno 5 с Android 13. Приложение подключается по BLE к смарт часам, соединяется, подписывается на уведомления и отправляет команды на часы. При сборке приложения как Debug - всё работает замечательно. При сборке как Release - не приходят уведомления с часов.

То есть - вот так я подписываюсь:

try {
      await this.BLEService.startNotification(this.device.id, appConfig.UUID_S, appConfig.UUID_C_1);
      await this.BLEService.startNotification(this.device.id, appConfig.UUID_S, appConfig.UUID_C_3);
    } catch (err: any) {
      console.error(err.toString())
      this.addDebugInfo(err.toString())
    }


Здесь ошибок при дебаг и релиз не возникает

Так устанавливаю слушатель событий:

this.bleManagerEmitter.addListener('BleManagerDidUpdateValueForCharacteristic', ...);


При сборке в как Debug - всё работает отлично - все события приходят. При Release - событий нет.

Мой AndroidManifest:

<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission-sdk-23 android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-feature android:name="android.hardware.bluetooth_le" android:required="true" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission-sdk-23 android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
<uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />


При инициализации запрашиваю разрешения на
ACCESS_FINE_LOCATION, BLUETOOTH_SCAN и BLUETOOTH_CONNECT - как в инструкции

Причем на других смартфонах - Release работает тоже отлично.

Но нужно именно на смартфонах Oppo
  • Вопрос задан
  • 33 просмотра
Подписаться 1 Сложный Комментировать
Решения вопроса 1
@Muramidaza Автор вопроса
Нужно отключить оптимизацию в build.gradle

def enableProguardInReleaseBuilds = false

Либо настроить правила, отключающие оптимизацию react-native-ble-manager в proguard-rules.pro

-keep class it.innove.** { *; }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы