React-native-onesignal: События onOpened/onReceived не срабатывают на Android

Созданный на 9 июл. 2018  ·  35Комментарии  ·  Источник: OneSignal/react-native-onesignal

Описание:
Всем привет. У меня проблемы с событиями onOpened/onReceived на Android. Поведение на эмуляторе и на реальном устройстве отличается, но в обоих случаях доставляется точное push-сообщение.

На эмуляторе:

  1. Передний план - событие onReceived вызывается, onOpened вызывается только при нажатии кнопки (правильно)
  2. Фон активен — вообще ничего не срабатывает (неверно)
  3. Фон неактивен (приложение закрыто) - onOpened вызывается только при нажатии кнопки (правильно)

На реальном устройстве:

  1. На переднем плане - вообще никто не стрелял (неверно)
  2. Фон активен — вообще ничего не срабатывает (неверно)
  3. Фон неактивен (приложение закрыто) - onOpened вызывается только при нажатии кнопки (правильно)

Окружающая обстановка

  1. реагировать-родной-onesignal: "3.2.4"
  2. родной реакции: "0.50.4"
  3. скомпилироватьSdkVersion: "27"
  4. buildToolsVersion: "27.0.3"
  5. класс: "4.1"

Шаги для воспроизведения проблемы:
Не могу предоставить шаги для воспроизведения из-за политики конфиденциальности моей компании.

Что-нибудь еще:
android/build.gradle

```// Файл сборки верхнего уровня, в который можно добавить параметры конфигурации, общие для всех подпроектов/модулей.

скрипт сборки {
репозитории {
jcenter()
Google()
}
зависимости {
путь к классам 'com.android.tools. сборка: градиент : 3.0.1 '

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}

}

все проекты {
репозитории {
maven { url " https://jitpack.io " } // используется для MPAndroidChart
mavenLocal()
Google()
jcenter()
знаток {
// Весь React Native (исходники JS, Obj-C, бинарники Android) устанавливается из npm
URL-адрес "$ rootDir/../node_modules/react-native/android"
}
}
}

`android/app/build.gradle`

применить плагин: «com.onesignal.androidsdk.onesignal-gradle-plugin»
применить плагин: "com.android.application"

импортировать com.android.build.OutputFile

скрипт сборки {
репозитории {
maven { url ' https://plugins.gradle.org/m2/ ' } // Портал плагинов Gradle
}
зависимости {
путь к классам 'gradle.plugin.com. onesignal: onesignal-gradle-plugin : [0.10.0, 0.99.99]'
}
}

применить плагин: «com.onesignal.androidsdk.onesignal-gradle-plugin»

/**

  • Файл react.gradle регистрирует задачу для каждого варианта сборки (например, bundleDebugJsAndAssets
  • и bundleReleaseJsAndAssets).
  • Они в основном вызывают react-native bundle с правильными аргументами во время сборки Android.
  • цикл. По умолчанию bundleDebugJsAndAssets пропускается, так как в режиме отладки/разработки мы предпочитаем загружать
  • комплект непосредственно с сервера разработки. Ниже вы можете увидеть все возможные конфигурации
  • и их значения по умолчанию. Если вы решите добавить блок конфигурации, обязательно добавьте его до
  • Строка apply from: "../../node_modules/react-native/react.gradle" .
    *
  • проект.ext.реагировать = [
  • // имя сгенерированного файла ресурсов, содержащего ваш пакет JS
  • bundleAssetName: "index.android.bundle",
    *
  • // входной файл для генерации пакета
  • входной файл: "index.android.js",
    *
  • // объединять ли JS и активы в режиме отладки
  • bundleInDebug: ложь,
    *
  • // объединять ли JS и активы в режиме выпуска
  • bundleInRelease: правда,
    *
  • // объединять ли JS и активы в другом варианте сборки (если настроено).
  • // См. http://tools.android.com/tech-docs/new-build-system/user-guide#TOC -Build-Variants
  • // Свойство конфигурации может быть в следующих форматах
  • // 'bundleIn${productFlavor}${buildType}'
  • // 'bundleIn${buildType}'
  • // bundleInFreeDebug: правда,
  • // bundleInPaidRelease: правда,
  • // bundleInBeta: правда,
    *
  • // отключать ли режим разработки в пользовательских вариантах сборки (по умолчанию отключен только в релизе)
  • // например: чтобы отключить режим разработки в промежуточном типе сборки (если настроено)
  • devDisabledInStaging: правда,
  • // Свойство конфигурации может быть в следующих форматах
  • // 'devDisabledIn${productFlavor}${buildType}'
  • // 'devDisabledIn${buildType}'
    *
  • // корень вашего проекта, т.е. там, где находится "package.json"
  • корень: "../../",
    *
  • // куда поместить актив JS-пакета в режиме отладки
  • jsBundleDirDebug: "$buildDir/промежуточные продукты/активы/отладка",
    *
  • // куда поместить актив JS-пакета в режиме выпуска
  • jsBundleDirRelease: "$buildDir/промежуточные продукты/активы/выпуск",
    *
  • // куда поместить ресурсы для рисования / активы React Native, например, те, которые вы используете через
  • // require('./image.png')), в режиме отладки
  • resourcesDirDebug: "$buildDir/intermediates/res/merged/debug",
    *
  • // куда поместить ресурсы для рисования / активы React Native, например, те, которые вы используете через
  • // require('./image.png')), в деблокированном режиме
  • resourcesDirRelease: "$buildDir/intermediates/res/merged/release",
    *
  • // по умолчанию задачи gradle пропускаются, если ни один из JS-файлов или ресурсов не изменяется; это означает
  • // что мы не просматриваем файлы в android/ или ios/, чтобы определить, готовы ли задачи
  • // Дата; если у вас есть другие папки, которые вы хотите игнорировать из соображений производительности (gradle
  • // индексирует все дерево), добавьте их сюда. В качестве альтернативы, если у вас есть файлы JS в android/
  • // например, вы можете удалить его отсюда.
  • inputExcludes: ["android/ ", "ios/ "],
    *
  • // переопределить, какой узел вызывается и с какими дополнительными аргументами
  • nodeExecutableAndArgs: ["узел"],
    *
  • // передать дополнительные аргументы упаковщику
  • дополнительныеПакагерарги: []
  • ]
    */

проект.ext.реагировать = [
cliPath: "node_modules/haul/bin/cli.js"
]

применить из: "../../node_modules/react-native/react.gradle"

/**

  • Установите значение true, чтобы создать два отдельных APK вместо одного:

    • APK, который работает только на устройствах ARM


    • APK, который работает только на устройствах x86

  • Преимущество заключается в том, что размер APK уменьшен примерно на 4 МБ.
  • Загрузите все APK в Play Store, и люди будут скачивать
  • правильный, основанный на архитектуре процессора их устройства.
    */
    def enableSeparateBuildPerCPUArchitecture = false

/**

  • Запустите Proguard, чтобы уменьшить байт-код Java в релизных сборках.
    */
    Def enableProguardInReleaseBuilds = ложь

андроид {
compileSdkВерсия 27
buildToolsVersion "27.0.3"

defaultConfig {
    applicationId "com.binomysteryshopper"
    minSdkVersion 16
    targetSdkVersion 22
    versionCode 1
    versionName "1.0"
    vectorDrawables.useSupportLibrary = true
    ndk {
        abiFilters "armeabi-v7a", "x86"
    }
}
signingConfigs {
      release {
          if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
              storeFile file(MYAPP_RELEASE_STORE_FILE)
              storePassword MYAPP_RELEASE_STORE_PASSWORD
              keyAlias MYAPP_RELEASE_KEY_ALIAS
              keyPassword MYAPP_RELEASE_KEY_PASSWORD
          }
      }
  }
splits {
    abi {
        reset()
        enable enableSeparateBuildPerCPUArchitecture
        universalApk false  // If true, also generate a universal APK
        include "armeabi-v7a", "x86"
    }
}
buildTypes {
    release {
        minifyEnabled enableProguardInReleaseBuilds
        proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
        signingConfig signingConfigs.release
    }
}
// applicationVariants are e.g. debug, release
applicationVariants.all { variant ->
    variant.outputs.each { output ->
        // For each separate APK per architecture, set a unique version code as described here:
        // http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits
        def versionCodes = ["armeabi-v7a":1, "x86":2]
        def abi = output.getFilter(OutputFile.ABI)
        if (abi != null) {  // null for the universal-debug, universal-release variants
            output.versionCodeOverride =
                    versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
        }
    }
}

}

зависимости {
скомпилировать (проект (': реагировать-родной-onesignal')) {
исключить группу: "com.google.android.gms"
}
скомпилировать ("com.google.android.gms:play-services-base:12.0.1") {
сила = правда;
}
скомпилировать проект (': реагировать на родной звук')
скомпилировать проект (': реагировать на родной звук')
скомпилировать проект (': реагировать на родной выборке-блоб')
скомпилировать проект (': реагировать-родной-фс')
скомпилировать проект (': реагировать-родной-геокодер')
скомпилировать проект (': реагировать на родное изображение-сборщик урожая')
скомпилировать проект (': реагировать на родную версию-проверка')
скомпилировать проект (': реагировать на собственные диаграммы-обертка')
скомпилировать проект (': реагировать на родной спинкит')
скомпилировать проект (': реагировать-родной-svg')
скомпилировать проект (': реагировать на родные карты')
скомпилировать дерево файлов (каталог: "libs", включить: ["*.jar"])
скомпилировать "com.android. support:appcompat-v7 :23.0.1"
скомпилировать "com.facebook. react :react-native :+" // Из node_modules
}

// Запустите это один раз, чтобы иметь возможность запускать приложение с помощью BUCK
// помещает все зависимости компиляции в папку libs для использования BUCK
задача copyDownloadableDepsToLibs(тип: Копировать) {
из конфигураций.компилировать
в «библиотеки»
}

`android/app/src/main/java/com/binomysteryshopper/MainApplication.java`

пакет com.binomysteryshopper;

импортировать android.app.Application;

импортировать com.facebook.react.ReactApplication;
импортировать com.geektime.rnonesignalandroid.ReactNativeOneSignalPackage;
импортировать com.zmxv.RNSound.RNSoundPackage;
импортировать com.rnim.rn.audio.ReactNativeAudioPackage;
импортировать com.RNFetchBlob.RNFetchBlobPackage;
импортировать com.rnfs.RNFSPackage;
импортировать com.reactnative.ivpusic.imagepicker.PickerPackage;
импортировать io.xogus.reactnative.versioncheck.RNVersionCheckPackage;
импортировать com.github.wuxudong.rncharts.MPAndroidChartPackage;
импортировать com.react.rnspinkit.RNSpinkitPackage;
импортировать com.horcrux.svg.SvgPackage;
импортировать com.facebook.react.ReactNativeHost;
импортировать com.facebook.react.ReactPackage;
импортировать com.facebook.react.shell.MainReactPackage;
импортировать com.devfd.RNGeocoder.RNGeocoderPackage;
импортировать com.facebook.soloader.SoLoader;
импортировать com.airbnb.android.react.maps.MapsPackage;

импортировать java.util.Arrays;
импортировать java.util.List;

открытый класс MainApplication расширяет приложение, реализует ReactApplication {

частный окончательный ReactNativeHost mReactNativeHost = новый ReactNativeHost (это) {
@Override
общественное логическое значение getUseDeveloperSupport() {
вернуть BuildConfig.DEBUG;
}

<strong i="13">@Override</strong>
protected List<ReactPackage> getPackages() {
  return Arrays.<ReactPackage>asList(
      new MainReactPackage(),
        new ReactNativeOneSignalPackage(),
        new RNSoundPackage(),
        new ReactNativeAudioPackage(),
        new RNFetchBlobPackage(),
        new RNFSPackage(),
        new PickerPackage(),
        new RNVersionCheckPackage(),
        new MPAndroidChartPackage(),
        new RNSpinkitPackage(),
        new RNGeocoderPackage(),
        new SvgPackage(),
        new MapsPackage()
  );
}

<strong i="14">@Override</strong>
protected String getJSMainModuleName() {
  return "index";
}

};

@Override
публичный ReactNativeHost getReactNativeHost() {
вернуть mReactNativeHost;
}

@Override
общественная недействительность onCreate () {
супер.при создании();
SoLoader.init(this, /* собственный экзопакет */ false);
}
}

`AndroidManifest.xml`

пакет = "com.binomysteryshopper">









андроид: minSdkVersion = "16"
Android: targetSdkVersion = "22" />

Android: имя = ". Основное приложение"
Android: разрешить резервное копирование = "истина"
android:label="@string/имя_приложения"
android:icon="@mipmap/ic_launcher"
андроид: большая куча = "истина"
android:theme="@style/AppTheme">

<activity
  android:name=".MainActivity"
  android:launchMode="singleTop"
  android:label="@string/app_name"
  android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
  android:screenOrientation="portrait"
  android:windowSoftInputMode="adjustResize"
  android:theme="@style/AppTheme">
    <intent-filter>
      <action android:name="android.intent.action.MAIN" />
      <action android:name="android.intent.action.DOWNLOAD_COMPLETE"/>
      <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <intent-filter>
      <action android:name="android.intent.action.VIEW" />
      <category android:name="android.intent.category.DEFAULT" />
      <category android:name="android.intent.category.BROWSABLE" />
      <data android:scheme="binoshopper" />
    </intent-filter>
</activity>
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />


`my OneSignal init`

компонентВиллМаунт () {
OneSignal.init(ONESIGNAL_APP_ID, {
kOSSettingsKeyAutoPrompt: правда,
kOSSettingsKeyInAppLaunchURL: ложь,
kOSSSettingsKeyPromptBeforeOpeningPushURL: правда,
})
OneSignal.inFocusDisplaying(2)

OneSignal.addEventListener('received', this.onPushNotificationReceived)
OneSignal.addEventListener('opened', this.onPushNotificationOpened)

}

компонентWillUnmount () {
OneSignal.removeEventListener («получено», this.onPushNotificationReceived)
OneSignal.removeEventListener('opened', this.onPushNotificationOpened)
}

onPushNotificationReceived (уведомление) {
Alert.alert('onReceived') // для тестов на реальном устройстве
}

onPushNotificationOpened(openResult) {
Alert.alert('onOpened') // для тестов на реальном устройстве
}
```

Самый полезный комментарий

@sofianegargouri Вот PR: https://github.com/geektimecoil/react-native-onesignal/pull/592

Мы выпустим обновление либо завтра, либо послезавтра.

Все 35 Комментарий

На IOS работает идеально. К сожалению, я не могу предоставить журналы из Android logcat, потому что у меня нет реального устройства. Я тестировал на устройстве моего далекого друга из-за TeamViewer.

Я также пытался OneSignal.setLogLevel(0, 6) на реальном устройстве. Но ошибок не обнаружено, все запросы выполнены успешно, только события не запускаются.

Привет @Ble3k , мы были очень заняты работой над новым Flutter SDK в последнее время, и у нас еще не было времени исследовать вашу проблему, однако я проведу расследование завтра и скоро свяжусь с вами, приносим извинения за задержку!

Привет,

Просто хотел сказать, что вижу такое же поведение на 3.2.5 на устройстве разработчика. Странно, потому что я ничего не менял в последнее время, и я почти уверен, что это сработало несколько дней назад, поскольку мои сфокусированные нажатия отображаются в виде тостов в приложении, я помню, что тестировал их, и это работало.

Я не буду продолжать расследование, потому что мы решили перейти на обычные push-уведомления, даже когда приложение находится в фокусе.

@ Nightsd01 Спасибо , буду ждать вашего расследования.

На Android возникает задержка в получении уведомлений, проверено на моем телефоне Android и получено уведомление через 30-40 минут, проверено несколько раз

Есть новости по этому поводу? У меня такая же проблема на устройстве Android (Samsung Galaxy S7).

Ни одно из событий onOpened или onReceived не запускается, однако уведомление получено. Нам нужно иметь возможность направлять пользователя на определенный экран, когда запускается событие onOpened.

Есть ли у кого-нибудь проблемы с событиями (полученными, открытыми), которые не запускаются после перезагрузки, реагируют на собственное приложение для Android, дважды нажимая R или используя пакет react-native-restart.

@ackosumane На самом деле я очень часто использую Expo и Updates.reload() в своем рабочем процессе разработки.

И вы правы:

  • Я могу получить обратные вызовы при первом запуске приложения
  • Я не вижу обратных вызовов, запускаемых после первой перезагрузки приложения.

@ Nightsd01 Похоже, интеграция OneSignal RN с Android в настоящее время не очень хорошо поддерживает перезагрузку приложений. Это не так эффективно, как я думал, поскольку большую часть времени пользователь не будет перезагружать приложение, но есть производственные случаи, в которых мы хотим, чтобы пользователь перезагрузил приложение (обновления OverTheAir, такие как Expo/CodePush, или выход пользователя из системы?). В таких случаях было бы здорово, чтобы после перезагрузки пуши не ломались ;)

@ Nightsd01 Привет, есть обновления?

Добрый день, у меня тоже такая проблема. Есть решения???

В качестве обновления по этой проблеме: мы планируем исправить это в следующем обновлении!

@ Nightsd01 Любая дата? Есть ли ветка, которую мы можем разветвить с исправлением?

@sofianegargouri Вот PR: https://github.com/geektimecoil/react-native-onesignal/pull/592

Мы выпустим обновление либо завтра, либо послезавтра.

спасибо @Nightsd01 , думаю, этот вопрос можно закрыть

Можете ли вы опубликовать новый выпуск npm с исправлением, пожалуйста?

Для тех, кто застрял с этой проблемой, код от мастера теперь работает хорошо.

Просто запустите следующее:

npm установить git+ https://github.com/geektimecoil/react-native-onesignal#master --save

@eabuslaiman30 Все еще сталкиваюсь с проблемой. Я использую git+ https://github.com/geektimecoil/react-native-onesignal#master , как вы упомянули выше. По-прежнему ни одно из событий не запускается в android. Кто-нибудь может подсказать, какая последняя версия стабильна? Раньше я использовал версию 3.0.5, которая работала нормально, за исключением того, что приложение было убито, а уведомление не было получено в Android 8.0 (Oreo). Чтобы решить эту проблему, я обновляюсь до последней версии и получаю эту ошибку.

@eabuslaiman30 @Nightsd01 Я тоже пробовал и, как и @shahchaitanya , все еще сталкиваюсь с проблемой.

Я сделал PR, который, кажется, фиксирует, что слушатели больше не подписываются: https://github.com/geektimecoil/react-native-onesignal/pull/593

@shahchaitanya , вы можете отредактировать код Java локального проекта с помощью этого крошечного изменения, и это должно временно решить вашу проблему.

Привет @slorber Ваше решение вызывает методы onOpened и onReceived. Но событие onIds еще не запущено? Вы проверяли, срабатывает ли событие onIds в вашем коде? Я думал придерживаться версии react-native-onesignal 3.0.5, пока последняя версия не станет стабильной.

Я только что проверил, и все 3 обратных вызова срабатывают для меня при перезапуске приложения, начиная с onIds.

Даже если onIds не сработает, для меня это не будет проблемой, так как идентификаторы вряд ли изменятся при перезапуске, и они уже отправлены на мой сервер.

@slorber Для меня очень важно, чтобы onId не срабатывал при перезапуске приложения. Я храню idToken в локальном хранилище и в бэкэнде. При выходе я удалил его из бэкэнда. И каким-то образом, если пользователь очищает локальное хранилище, то как я могу получить idToken пользователя, если onIds не срабатывает каждый раз. В предыдущей версии до 3.2.0 (основное обновление) onIds срабатывает каждый раз при перезапуске приложения.

Привет, ребята @slorber @shahchaitanya. Позвольте мне скопировать часть моего кода реализации, возможно, это поможет вам (мне нужно было добавить несколько строк кода, которые не требовались в предыдущей версии).

OneSignal.init('YOUR_APP_ID');
OneSignal.addEventListener('ids', this.onIds);
OneSignal.configure();

Например, я не использовал функцию "init" в предыдущих версиях, так как инициализация явно выполнялась из кода Java.

Кроме того, я использую npm install git+https://github.com/geektimecoil/react-native-onesignal\#master --save в качестве зависимости и правильно получаю три события (onIds, получено, открыто).

Я также использую init и configure и помню, что была проблема с идентификаторами, которые не срабатывали, когда не вызывался configure.

    OneSignal.init(OneSignalAppId, OneSignalSettings);
    OneSignal.addEventListener('received', onReceived);
    OneSignal.addEventListener('opened', onOpened);
    OneSignal.addEventListener('ids', onIds);
    // Quickfix for ids event not firing!
    // See https://github.com/geektimecoil/react-native-onesignal/issues/200#issuecomment-288579373
    OneSignal.configure();
    OneSignal.inFocusDisplaying(inFocusDisplaying);
    OneSignal.setSubscription(true);
    OneSignal.syncHashedEmail(email);
    OneSignal.sendTags(tags);

@slorber @eabuslaiman30 Теперь все работает. Я пропустил добавление OneSignal.configure(). Раньше мне не нужно было запускать прослушиватель onIds. Привет , @slorber, теперь мне не нужно добавлять тот патч, о котором ты упоминал выше. Решение @eabuslaiman30 работает абсолютно нормально.

Отлично @shahchaitanya , я рад, что это сработало!

Вскоре мы выпустим официальный релиз, включающий это исправление.

Недавно я исправил довольно серьезную проблему с Android SDK, поэтому я жду, когда этот PR будет рассмотрен, прежде чем я выпущу официальное обновление для реагирования.

Всем спасибо за терпение! В то же время вы можете просто использовать master

@shahchaitanya событие ids предназначено для простого запуска всякий раз, когда меняется идентификатор пользователя или токен push с OneSignal. Если они не изменились с момента последнего использования вашего приложения, события не будут запускаться по умолчанию.

Это сбивает с толку устаревший код, я намерен реорганизовать его в следующем крупном выпуске, чтобы сделать его более интуитивно понятным.

Вы можете заставить их стрелять, вызвав configure() , но я бы не рекомендовал этого делать. Более элегантным решением является вызов OneSignal.getPermissionSubscriptionState() , который будет содержать идентификатор OneSignal ID пользователя.

Проблема теперь должна быть исправлена ​​в 3.2.6 (наряду с некоторыми другими вещами). Всем спасибо за терпение!

Привет! Я все еще получаю эту проблему на Android (не полностью проверено на iOS).

  • Приложение в фокусе — открытое событие срабатывает правильно
  • Приложение отклонено — открытое событие срабатывает правильно
  • Приложение в фоновом режиме — открытое событие никогда не срабатывает

Я нахожусь в выпуске 3.2.6, и мой прослушиватель событий настроен...

componentDidMount() {

        OneSignal.init(APP_ID, { kOSSettingsKeyAutoPrompt: true });

        OneSignal.addEventListener('ids', this.onIds);

        OneSignal.addEventListener('opened', (result) => alert('text'));

        OneSignal.inFocusDisplaying(2);

        // OneSignal.setLogLevel(0, 6);

        OneSignal.configure();
}

componentWillUnmount() {
    OneSignal.removeEventListener('ids', this.onIds);
    OneSignal.removeEventListener('opened', (result) => alert('text'));
}

@joefazz Я не могу воспроизвести вашу проблему, можете ли вы попробовать запустить yarn remove react-native onesignal и yarn add react-native-onesignal , просто чтобы убедиться, что он обновлен до 3.2.6? Если да, то я снова открою тему.

Проблема возникает у вас в 100% случаев?

Можете ли вы воспроизвести эту проблему в нашем демонстрационном проекте?

Это происходит в 100% случаев и все еще происходит после удаления и чтения.

Я попытаюсь воспроизвести сегодня позже и отредактирую этот комментарий своими выводами.

Я не знаю, насколько это актуально, но в проекте, над которым я работаю, мы использовали версию 3.0.9 и полностью обновили ее до 3.2.6. Я запустил реактивную отвязку, а затем переподключил, обновил iOS вручную и удалил всю нативную инициализацию, чтобы использовать метод OneSignal.init().

РЕДАКТИРОВАТЬ: Не уверен, что произошло, но теперь он работает на Android в 100% случаев, спасибо за вашу помощь, извините, что комментирую закрытую проблему 😅

Если кто-то снова увидит эту проблему в версии 3.2.6 или выше, пожалуйста, не стесняйтесь открывать новую проблему.

@joefazz Рад это слышать! Я исправил проблему, которая вызвала первоначальную проблему, но вполне возможно, что происходит какое-то состояние гонки. Если вы снова столкнетесь с этой проблемой, пожалуйста, не стесняйтесь открывать новую проблему

В моем приложении новая версия исправляет мои проблемы, и я не вижу поведения, о котором сообщил @joefazz.

Привет всем, у меня такая же проблема, OneSignal.addEventListener('opened', (result) => console.log(result)); не срабатывает со второго запуска приложения. В фоновом режиме первое уведомление получает событие «открыто», убить приложение => получить уведомление => «открыто» больше никогда не будет срабатывать.

только андроид - 8 версия
только после второго уведомления, когда приложение было в фоновом режиме
реагировать-родной-onesignal - 3.9.1

У меня такая же проблема. открыто не будет звонить, когда приложение находится в фоновом режиме, есть ли какое-либо исправление

@kostiantyn-solianyk @shrolr ,
Подводя итог, можно сказать, что событие «открыто» не срабатывает при втором открытии приложения в Android 8.

Традиционные события устарели в грядущем основном выпуске (сейчас в бета-версии). Я рекомендую перейти на бета-версию и попытаться воспроизвести проблему.

Если проблема не устранена, сообщите нам об этом, открыв новую проблему.

Ваше здоровье

Была ли эта страница полезной?
0 / 5 - 0 рейтинги