Я пытаюсь уловить проблему с 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');
}
});
};