React-native-onesignal: Eventos onOpened/onReceived não são acionados no Android

Criado em 9 jul. 2018  ·  35Comentários  ·  Fonte: OneSignal/react-native-onesignal

Descrição:
Oi pessoal. Estou tendo problemas com eventos onOpened/onReceived no android. O comportamento é diferente no emulador e em um dispositivo real, mas a mensagem push exata é entregue em ambos os casos.

No emulador:

  1. Foreground - o evento onReceived é invocado, onOpened é invocado apenas quando o push é tocado (correto)
  2. Plano de fundo ativo - nenhum disparado (incorreto)
  3. Plano de fundo inativo (o aplicativo está fechado) - onOpened é invocado apenas quando o push é tocado (correto)

Em um dispositivo real:

  1. Primeiro plano - nenhum disparado (incorreto)
  2. Plano de fundo ativo - nenhum disparado (incorreto)
  3. Plano de fundo inativo (o aplicativo está fechado) - onOpened é invocado apenas quando o push é tocado (correto)

Ambiente

  1. react-native-onesignal: "3.2.4"
  2. react-native: "0.50.4"
  3. compileSdkVersion: "27"
  4. buildToolsVersion: "27.0.3"
  5. gradle: "4.1"

Etapas para reproduzir o problema:
Não posso fornecer etapas para reprodução devido à política de confiança da minha empresa.

Algo mais:
android/build.gradle

```// Arquivo de compilação de nível superior onde você pode adicionar opções de configuração comuns a todos os subprojetos/módulos.

script de construção {
repositórios {
jcenter()
o Google()
}
dependências {
classpath 'com.android.tools. build:gradle :3.0.1'

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

}

todos os projetos {
repositórios {
maven { url " https://jitpack.io " } // usado para MPAndroidChart
mavenLocal()
o Google()
jcenter()
especialista {
// Todo o React Native (JS, fontes Obj-C, binários Android) é instalado a partir do npm
url "$rootDir/../node_modules/react-native/android"
}
}
}

`android/app/build.gradle`

aplicar plugin: 'com.onesignal.androidsdk.onesignal-gradle-plugin'
aplicar plugin: "com.android.application"

import com.android.build.OutputFile

script de construção {
repositórios {
maven { url ' https://plugins.gradle.org/m2/ ' } // Portal de plugins Gradle
}
dependências {
classpath 'gradle.plugin.com. onesignal:onesignal-gradle-plugin :[0.10.0, 0.99.99]'
}
}

aplicar plugin: 'com.onesignal.androidsdk.onesignal-gradle-plugin'

/**

  • O arquivo react.gradle registra uma tarefa para cada variante de compilação (por exemplo, bundleDebugJsAndAssets
  • e bundleReleaseJsAndAssets).
  • Eles basicamente chamam react-native bundle com os argumentos corretos durante a compilação do Android
  • ciclo. Por padrão, bundleDebugJsAndAssets é ignorado, pois no modo debug/dev preferimos carregar o
  • pacote diretamente do servidor de desenvolvimento. Abaixo você pode ver todas as configurações possíveis
  • e seus padrões. Se você decidir adicionar um bloco de configuração, certifique-se de adicioná-lo antes do
  • apply from: "../../node_modules/react-native/react.gradle" linha.
    *
  • projeto.ext.reagir = [
  • // o nome do arquivo de ativo gerado contendo seu pacote JS
  • bundleAssetName: "index.android.bundle",
    *
  • // o arquivo de entrada para geração de bundle
  • entryFile: "index.android.js",
    *
  • // se deve empacotar JS e ativos no modo de depuração
  • bundleInDebug: false,
    *
  • // se deve empacotar JS e ativos no modo de lançamento
  • bundleInRelease: true,
    *
  • // se deve empacotar JS e ativos em outra variante de compilação (se configurado).
  • // Consulte http://tools.android.com/tech-docs/new-build-system/user-guide#TOC -Build-Variants
  • // A propriedade de configuração pode estar nos seguintes formatos
  • // 'bundleIn${productFlavor}${buildType}'
  • // 'bundleIn${buildType}'
  • // bundleInFreeDebug: true,
  • // bundleInPaidRelease: true,
  • // bundleInBeta: true,
    *
  • // se deve desabilitar o modo dev em variantes de compilação personalizadas (por padrão, apenas desabilitado na versão)
  • // por exemplo: para desabilitar o modo dev no tipo de compilação de teste (se configurado)
  • devDisabledInStaging: true,
  • // A propriedade de configuração pode estar nos seguintes formatos
  • // 'devDisabledIn${productFlavor}${buildType}'
  • // 'devDisabledIn${buildType}'
    *
  • // a raiz do seu projeto, ou seja, onde "package.json" mora
  • raiz: "../../",
    *
  • // onde colocar o ativo do pacote JS no modo de depuração
  • jsBundleDirDebug: "$buildDir/intermediates/assets/debug",
    *
  • // onde colocar o ativo do pacote JS no modo de lançamento
  • jsBundleDirRelease: "$buildDir/intermediates/assets/release",
    *
  • // onde colocar recursos desenháveis ​​/ ativos React Native, por exemplo, aqueles que você usa via
  • // require('./image.png')), no modo de depuração
  • resourcesDirDebug: "$buildDir/intermediates/res/merged/debug",
    *
  • // onde colocar recursos desenháveis ​​/ ativos React Native, por exemplo, aqueles que você usa via
  • // require('./image.png')), no modo de lançamento
  • resourcesDirRelease: "$buildDir/intermediates/res/merged/release",
    *
  • // por padrão, as tarefas gradle são ignoradas se nenhum dos arquivos ou ativos JS for alterado; isso significa
  • // que não olhamos os arquivos em android/ ou ios/ para determinar se as tarefas estão prontas
  • // encontro; se você tiver outras pastas que deseja ignorar por motivos de desempenho (gradle
  • // indexa a árvore inteira), adicione-os aqui. Alternativamente, se você tiver arquivos JS em android/
  • // por exemplo, você pode querer removê-lo daqui.
  • inputExcludes: ["android/ ", "ios/ "],
    *
  • // substituir qual nó é chamado e com quais argumentos adicionais
  • nodeExecutableAndArgs: ["nó"],
    *
  • // fornece argumentos adicionais para o empacotador
  • extraPackagerArgs: []
  • ]
    */

projeto.ext.reagir = [
cliPath: "node_modules/haul/bin/cli.js"
]

aplicar de: "../../node_modules/react-native/react.gradle"

/**

  • Defina como true para criar dois APKs separados em vez de um:

    • Um APK que funciona apenas em dispositivos ARM


    • Um APK que funciona apenas em dispositivos x86

  • A vantagem é que o tamanho do APK é reduzido em cerca de 4 MB.
  • Faça o upload de todos os APKs para a Play Store e as pessoas farão o download
  • o correto com base na arquitetura da CPU de seu dispositivo.
    */
    def enableSeparateBuildPerCPUArchitecture = false

/**

  • Execute o Proguard para reduzir o bytecode Java nas compilações de versão.
    */
    def enableProguardInReleaseBuilds = false

andróide {
compileSdkVersão 27
buildToolsVersão "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
        }
    }
}

}

dependências {
compile (project(':react-native-onesignal')){
excluir grupo: "com.google.android.gms"
}
compile ("com.google.android.gms:play-services-base:12.0.1") {
força = verdadeiro;
}
compile project(':react-native-sound')
compilar projeto(':react-native-audio')
compile project(':react-native-fetch-blob')
compilar projeto(':react-native-fs')
compile project(':react-native-geocoder')
compile project(':react-native-image-crop-picker')
compile project(':react-native-version-check')
compile project(':react-native-charts-wrapper')
compile project(':react-native-spinkit')
compilar projeto(':react-native-svg')
compile project(':react-native-maps')
compile fileTree(dir: "libs", include: ["*.jar"])
compilar "com.android. support:appcompat-v7 :23.0.1"
compile "com.facebook. react :react-native :+" // De node_modules
}

// Execute isso uma vez para poder executar o aplicativo com BUCK
// coloca todas as dependências de compilação na pasta libs para BUCK usar
task copyDownloadableDepsToLibs(type: Copy) {
de settings.compile
em 'libs'
}

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

pacote com.binomysteryshopper;

importar android.app.Application;

import com.facebook.react.ReactApplication;
import com.geektime.rnonesignalandroid.ReactNativeOneSignalPackage;
import com.zmxv.RNSound.RNSoundPackage;
import com.rnim.rn.audio.ReactNativeAudioPackage;
import com.RNFetchBlob.RNFetchBlobPackage;
import com.rnfs.RNFSPackage;
import com.reactnative.ivpusic.imagepicker.PickerPackage;
importar io.xogus.reactnative.versioncheck.RNVersionCheckPackage;
import com.github.wuxudong.rncharts.MPAndroidChartPackage;
import com.react.rnspinkit.RNSpinkitPackage;
import com.horcrux.svg.SvgPackage;
import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage;
import com.facebook.react.shell.MainReactPackage;
import com.devfd.RNGEocoder.RNGEocoderPackage;
import com.facebook.soloader.SoLoader;
import com.airbnb.android.react.maps.MapsPackage;

importar java.util.Arrays;
import java.util.List;

public class MainApplication estende Application implements ReactApplication {

private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
@Sobrepor
public boolean getUseDeveloperSupport() {
return 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";
}

};

@Sobrepor
public ReactNativeHost getReactNativeHost() {
return mReactNativeHost;
}

@Sobrepor
public void onCreate() {
super.onCreate();
SoLoader.init(this, /* exopackage nativo */ false);
}
}

`AndroidManifest.xml`

package="com.binomysteryshopper">









android:minSdkVersion="16"
android:targetSdkVersion="22" />

android:name=".MainApplication"
android:allowBackup="true"
android:label="@string/app_name"
android:icon="@mipmap/ic_launcher"
android:largeHeap="true"
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`

componentWillMount() {
OneSignal.init(ONESIGNAL_APP_ID, {
kOSSettingsKeyAutoPrompt: true,
kOSSettingsKeyInAppLaunchURL: false,
kOSSSettingsKeyPromptBeforeOpeningPushURL: true,
})
Exibição do OneSignal.inFocus(2)

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

}

componentWillUnmount() {
OneSignal.removeEventListener('recebido', this.onPushNotificationReceived)
OneSignal.removeEventListener('opened', this.onPushNotificationOpened)
}

onPushNotificationReceived(notification) {
Alert.alert('onReceived') // para testes em dispositivo real
}

onPushNotificationOpened(openResult) {
Alert.alert('onOpened') // para testes em dispositivo real
}
```

Comentários muito úteis

@sofianegargouri Aqui está o PR: https://github.com/geektimecoil/react-native-onesignal/pull/592

Vamos lançar uma atualização amanhã ou no dia seguinte.

Todos 35 comentários

No IOS está funcionando perfeitamente. Infelizmente não posso fornecer logs do android logcat, porque não tenho um dispositivo real. Eu estava testando no dispositivo do meu amigo distante devido ao TeamViewer.

Eu também tentei OneSignal.setLogLevel(0, 6) em um dispositivo real. Mas nenhum erro foi encontrado, todas as solicitações foram bem-sucedidas, apenas os eventos não foram acionados.

Olá @Ble3k , estivemos muito ocupados trabalhando em um novo SDK do Flutter recentemente e ainda não tivemos tempo de investigar seu problema. No entanto, investigarei amanhã e entrarei em contato com você em breve, desculpas pelo atraso!

Oi,

Só queria dizer que vejo o mesmo comportamento no 3.2.5 em um dispositivo dev. Estranho porque não mudei nada recentemente e tenho certeza de que funcionou alguns dias atrás, pois meus pushs focados são exibidos como brindes no aplicativo, lembro de ter testado isso e estava funcionando.

Não vou investigar mais porque decidimos migrar para notificações push normais mesmo quando o aplicativo está focado

@Nightsd01 Thx, aguardará sua investigação.

No Android enfrentando atraso no recebimento de notificações, testado no meu telefone Android e recebido notificação após 30-40 minutos, testado várias vezes

alguma atualização disso? Estou tendo o mesmo problema no dispositivo Android (Samsung Galaxy S7).

Nenhum dos eventos onOpened ou onReceived está sendo acionado, no entanto, a notificação está sendo recebida. Precisamos ser capazes de navegar o usuário para uma tela específica quando o evento onOpened é acionado.

Alguém tem problema com eventos (recebidos, abertos) não sendo acionados após recarregar o aplicativo Android nativo do react pressionando duas vezes R ou usando o pacote react-native-restart.

@ackosumane Eu realmente uso Expo e Updates.reload() com muita frequência no meu fluxo de trabalho de desenvolvimento.

E você está certo:

  • Consigo disparar os retornos de chamada na primeira inicialização do aplicativo
  • Não vejo os retornos de chamada disparados após o primeiro recarregamento do aplicativo

@Nightsd01 Parece que a integração do OneSignal RN Android atualmente não suporta recarregamentos de aplicativos muito bem. Não é tão impactante quanto eu pensava, pois na maioria das vezes o usuário não recarregará o aplicativo, mas há casos de produção em que queremos que o usuário recarregue o aplicativo (atualizações OverTheAir como Expo/CodePush ou logout do usuário?). Nesses casos, seria ótimo que, após um recarregamento, os pushes não fossem quebrados;)

@Nightsd01 Oi, alguma atualização?

Olá, também enfrento o mesmo problema. Alguma solução para isso ???

Como uma atualização sobre este problema: planejamos corrigir isso na próxima atualização!

@Nightsd01 Alguma data? Existe um ramo que podemos bifurcar com a correção?

@sofianegargouri Aqui está o PR: https://github.com/geektimecoil/react-native-onesignal/pull/592

Vamos lançar uma atualização amanhã ou no dia seguinte.

obrigado @Nightsd01 , este problema pode ser encerrado, eu acho

você pode publicar uma nova versão do npm com a correção, por favor?

Para quem ficou com esse problema, o código do mestre está funcionando bem agora.

Basta executar o seguinte:

npm install git+ https://github.com/geektimecoil/react-native-onesignal#master --save

@eabuslaiman30 Ainda enfrentando um problema. Estou usando o git+ https://github.com/geektimecoil/react-native-onesignal#master como você mencionou acima. Ainda nenhum dos eventos é acionado no android. Alguém pode sugerir qual versão mais recente é estável? Anteriormente, eu estava usando a versão 3.0.5 que estava funcionando bem, exceto que o aplicativo é morto e a notificação não é recebida no Android 8.0 (Oreo). Para corrigir esse problema, atualizo para a versão mais recente e estou recebendo esse erro.

@eabuslaiman30 @Nightsd01 Eu também tentei e, como @shahchaitanya , ainda enfrento o problema.

Eu fiz um PR que parece corrigir os ouvintes não se inscreverem novamente: https://github.com/geektimecoil/react-native-onesignal/pull/593

@shahchaitanya você pode editar o código Java do projeto local com essa pequena alteração e isso deve resolver seu problema temporariamente.

Hey @slorber Sua solução aciona o método onOpened e onReceived. Mas o evento onIds ainda não foi acionado? Você verificou se o evento onIds está acionado ou não no seu código? Eu estava pensando em usar o react-native-onesignal versão 3.0.5 até que a versão mais recente se torne estável.

Acabei de testar e todos os 3 retornos de chamada são acionados na reinicialização do aplicativo para mim, começando com onIds.

Mesmo que o onIds não disparasse, não seria um grande problema para mim, pois é improvável que os ids mudem nas reinicializações e eles já foram enviados para o meu back-end.

@slorber Para mim, é importante se onIds não disparar ao reiniciar um aplicativo. Eu armazeno idToken no armazenamento local e no back-end também. Ao sair, eu o removi do back-end e, de alguma forma, se o usuário limpar o armazenamento local, como posso obter o idToken de um usuário se o onIds não disparar todas as vezes. Na versão anterior até 3.2.0 (Atualização Principal) , onIds é acionado toda vez ao reiniciar um aplicativo.

Olá pessoal @slorber @shahchaitanya. Deixe-me copiar um pouco do meu código de implementação, talvez ajude você (precisei adicionar algumas linhas de código que não eram necessárias em uma versão anterior).

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

Por exemplo, eu não estava usando a função "init" nas versões anteriores, pois a inicialização aparentemente estava sendo feita a partir do código Java.

Além disso, estou usando npm install git+https://github.com/geektimecoil/react-native-onesignal\#master --save como dependência e estou recebendo três eventos corretamente (onIds, recebidos, abertos).

Também estou usando init e configure e lembro que havia um problema com os ids não disparando ao não chamar 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 Agora está funcionando bem. Eu deixei de adicionar OneSignal.configure(). Anteriormente, eu não precisava dele para acionar o ouvinte onIds. Ei @slorber agora eu não preciso adicionar esse patch que você mencionou acima. A solução @eabuslaiman30 está funcionando perfeitamente bem.

Perfeito @shahchaitanya , que bom que funcionou!

Em breve, lançaremos um lançamento oficial, incluindo essa correção.

Recentemente, corrigi um problema um tanto significativo com o SDK do Android, então estou esperando que esse PR seja revisado antes de lançar uma atualização oficial react-native.

Obrigado pela paciência de todos! Nesse meio tempo, você pode simplesmente usar master

@shahchaitanya o evento ids destina-se a simplesmente disparar sempre que os IDs do usuário ou o token de push com o OneSignal forem alterados. Se eles não mudaram desde a última vez que usaram seu aplicativo, os eventos não serão acionados por padrão.

Este é um código legado confuso, pretendo refatorá-lo na próxima versão principal para ser muito mais intuitivo.

Você pode forçá-los a disparar chamando configure() , mas eu não recomendaria isso. Uma solução mais elegante é chamar OneSignal.getPermissionSubscriptionState() que conterá o ID OneSignal do usuário

O problema agora deve ser corrigido no 3.2.6 (junto com várias outras coisas). Obrigado pela paciência de todos!

Oi! Ainda estou recebendo esse problema no Android (iOS não totalmente verificado).

  • App em foco - O evento aberto é acionado corretamente
  • App dispensado - O evento aberto é acionado corretamente
  • App em segundo plano - O evento aberto nunca é acionado

Estou na versão 3.2.6 e minha configuração de ouvinte de eventos é...

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 Não consigo reproduzir seu problema, você pode tentar executar yarn remove react-native onesignal e yarn add react-native-onesignal apenas para ter certeza de que está atualizado para 3.2.6? Se sim, reabrirei o assunto.

O problema acontece 100% do tempo para você?

Você consegue reproduzir esse problema em nosso projeto de demonstração?

Acontece 100% do tempo e ainda ocorreu após a remoção e leitura.

Vou tentar reproduzir algum dia mais tarde hoje e editarei este comentário com minhas descobertas.

Não sei até que ponto isso é relevante, mas no projeto em que estou trabalhando estávamos na versão 3.0.9 e atualizamos até a 3.2.6. Executei o unlink react-native e, em seguida, revinculei, atualizei o iOS manualmente e removi toda a inicialização nativa para usar o método OneSignal.init().

EDIT: Não tenho certeza do que aconteceu, mas está funcionando 100% do tempo no Android agora, obrigado pela sua ajuda, desculpe comentar sobre um problema encerrado 😅

Se alguém vir este problema novamente na versão 3.2.6 ou superior, sinta-se à vontade para abrir um novo problema.

@joefazz Fico feliz em ouvir isso! Corrigi o problema que causou o problema inicial, mas é perfeitamente possível que haja algum tipo de condição de corrida acontecendo. Se você encontrar esse problema novamente, sinta-se à vontade para abrir um novo problema

No meu aplicativo a nova versão corrige meus problemas e não vejo o comportamento relatado por @joefazz

Olá a todos, eu tenho o mesmo problema OneSignal.addEventListener('opened', (result) => console.log(result)); não é acionado a partir do segundo lançamento do aplicativo. Em um modo de segundo plano, a primeira notificação está recebendo o evento 'aberto', mate o aplicativo => receba notificação => 'aberto' nunca será acionado novamente.

apenas android - versão 8
somente após a segunda notificação quando o aplicativo estava em segundo plano
react-native-onesignal - 3.9.1

Estou com o mesmo problema. aberto não chamará quando o aplicativo estiver em segundo plano, há alguma correção

@kostiantyn-solianyk @shrolr ,
Então, para resumir, o evento 'opened' não é acionado na segunda vez que o aplicativo é aberto no Android 8.

Os eventos tradicionais estão sendo preteridos na próxima versão principal (agora em Beta). Eu recomendo migrar para a versão beta e tentar reproduzir o problema.

Se o problema persistir, por favor nos avise abrindo um novo problema.

Felicidades

Esta página foi útil?
0 / 5 - 0 avaliações