Push-уведомление не получает фон Android 9 - PullRequest
0 голосов
/ 28 октября 2019

Я пытаюсь уловить проблему с Expo React Native SDK 34 в службе push-уведомлений. В большинстве устройств на Android 9 у меня есть пара проблем, но самая странная в том, что push-уведомления получают на переднем плане, а не в фоновом режиме, и, очевидно, это огромная проблема, потому что именно так мы должны позволить пользователям знать что-то, чтобы вызвать открытоеприложение.

Я уже пытался установить Sentry (ловец ошибок), чтобы увидеть, есть ли проблема, но ничего не произошло.

Я также попытался поместить кнопку с меткой, чтобы увидеть разрешение толчка, в этом случае разрешение говорит «предоставлено», и это кажется очевидным, потому что мы получаем толчок на переднем плане, но также проверяем отображение разрешенияв конфигурации Android и все кажется хорошим .... супер странно.

Еще один факт заключается в том, что в некоторых случаях эти телефоны не получают push-уведомления instagram ... так что, может быть, это собственная проблема реагирования?

Затем, когда я увидел в журнале ошибок консоли Google Play, вывод для некоторых устройств с android 9 был =>

Проблема с выходом Android:


java.lang.RuntimeException: 
  at android.app.ActivityThread.performResumeActivity (ActivityThread.java:4000)
  at android.app.ActivityThread.handleResumeActivity (ActivityThread.java:4032)
  at android.app.servertransaction.ResumeActivityItem.execute (ResumeActivityItem.java:51)
  at android.app.servertransaction.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:145)
  at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:70)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1976)
  at android.os.Handler.dispatchMessage (Handler.java:106)
  at android.os.Looper.loop (Looper.java:193)
  at android.app.ActivityThread.main (ActivityThread.java:6912)
  at java.lang.reflect.Method.invoke (Method.java)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:493)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:860)
Caused by: java.lang.IllegalStateException: 
  at android.app.ContextImpl.startServiceCommon (ContextImpl.java:1592)
  at android.app.ContextImpl.startService (ContextImpl.java:1547)
  at android.content.ContextWrapper.startService (ContextWrapper.java:664)
  at host.exp.exponent.experience.BaseExperienceActivity.registerForNotifications (BaseExperienceActivity.java:258)
  at host.exp.exponent.experience.ExperienceActivity.onResume (ExperienceActivity.java:256)
  at android.app.Instrumentation.callActivityOnResume (Instrumentation.java:1434)
  at android.app.Activity.performResume (Activity.java:7300)
  at android.app.ActivityThread.performResumeActivity (ActivityThread.java:3992)
  at android.app.ActivityThread.handleResumeActivity (ActivityThread.java:4032)
  at android.app.servertransaction.ResumeActivityItem.execute (ResumeActivityItem.java:51)
  at android.app.servertransaction.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:145)
  at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:70)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1976)
  at android.os.Handler.dispatchMessage (Handler.java:106)
  at android.os.Looper.loop (Looper.java:193)
  at android.app.ActivityThread.main (ActivityThread.java:6912)
  at java.lang.reflect.Method.invoke (Method.java)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:493)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:860)

Мой обработчикуведомление с экспо-уведомлениями. Я также попытался с идентификатором канала в Android, потому что я знаю, что были сделаны несколько изменений, и идентификатор канала является ключом, но также не работал.

_handleNotification = (notification) => {
    //TODO exec un post para guardar el js notification. SI android 9 + android version + background status or foreground.
    if (Platform.OS === 'android') {
      Notifications.createChannelAndroidAsync('chat-messages', {
        name: 'Chat messages',
        sound: true,
        vibrate: true,
        priority: 'max',
        vibrate: [0, 250, 250, 250]
      });
    }
    this.setState({ pushNotification: notification }, () => {
      if (!this.state.pushNotification.data.show_message || this.state.pushNotification.data.refresh) {
        this.getNews();
      } else if (this.state.pushNotification.data.show_message) {
        Alert.alert(notification.data.titulo.toString(), notification.data.cuerpo.toString());
      } else {
        console.log('no hizo nadachr');
      }
    });

  };
...