【问题标题】:react-native push notification onNotification doesn't triggerreact-native 推送通知 onNotification 不会触发
【发布时间】:2017-08-10 14:15:45
【问题描述】:

我正在使用 zo0r react-native-push-notification 库。

"react": "16.0.0-alpha.12",
"react-native": "^0.45.1",
"react-native-push-notification": "^3.0.0"

每次我打开应用程序时都会运行此代码:

PushNotification.configure({
    onNotification: function(notification) {
        console.log('onNotification');
        ToastAndroid.show('onNotification', 3000);
    }
});

我从后台服务发送本地推送通知:

PushNotification.localNotification({
    message: 'Hello World',
    smallIcon: 'ic_launcher'
});

通知已送达。当我单击它时,onNotification 方法不会被调用,然后当我收到另一个通知时,它实际上会被调用。似乎只有当应用程序在内存 atm 中时它才有效。

我是不是做错了什么?

我也打开了一个 GitHub issue

【问题讨论】:

  • 你搞定了吗?我遇到了同样的问题

标签: android react-native react-native-push


【解决方案1】:

它的常见问题是使用闪屏时出现的问题。 像这样编辑清单:

<activity
            android:name=".SplashActivity"
            android:theme="@style/SplashTheme"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
      <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
        android:windowSoftInputMode="adjustResize" >
          <intent-filter>
          <action android:name="android.intent.action.MAIN" />
          <category android:name="android.intent.category.INFO" />
          </intent-filter>
        </activity>

【讨论】:

    【解决方案2】:

    它是专门为不将配置放入 React 生命周期而编写的。否则,Android 将不会有正确的行为(我对这一点感到非常痛苦!)。 在这里你有一个很好的教程: https://product.farewell.io/visible-react-native-push-notifications-that-work-on-both-ios-and-android-5e90badb4a0f 这是不好的解释,但方法是完美的。使用类来初始化和调用方法。按照他的建议初始化顶部组件中的类。它运作良好。 使用本教程完成缺少的信息: https://shift.infinite.red/react-native-node-js-and-push-notifications-e851b279a0cd 祝你好运!

    【讨论】:

      【解决方案3】:

      在我的代码中,我在 App 类之外配置了通知 - 这是一个问题。我刚刚将配置移至 App 构造函数,现在它工作正常,调用 onNotification 没有问题:

      class App extends React.Component {
          constructor(props) {
              super(props);
              PushNotification.configure({ ... });
          }
      }
      

      最新的react-native-push-notification lib 版本推荐如下:https://github.com/zo0r/react-native-push-notification#usage

      【讨论】:

      • 嗨,@andrei 你得到设备令牌了吗?
      • @Andrei 我想在登录 App 后调用 onNotification,所以我创建了主要组件,我在构造函数中调用了这个,但是从 fcm 发送测试消息时这个函数没有响应?有什么想法吗?
      • @ArchanaSharma 我认为对于最新版本,它必须在所有组件之外,以便在其他任何东西之前调用它 100%。请参阅用法部分:github.com/zo0r/react-native-push-notification#usage
      • 我已经在组件生命周期之外(在 App.js 主文件的构造函数内部)使用了这个,我的问题是每次收到通知时都会自动收到这个吗?因为这里我的 App.js 在应用程序启动时调用一次,并且在从 fcm 发送测试消息时,onNotification 内的控制台之后不起作用。
      • 你解决了这个问题吗?我尝试了同样的方法,但即使我尝试按下按钮来触发功能,PushNotification.localNotification 也不会触发?
      【解决方案4】:

      就我而言,我按照文档遵循了所有内容,包括针对 android 的 React 生命周期事物,除了以下更改我没有配置正确的意图过滤器操作,即

      <action android:name="com.google.firebase.MESSAGING_EVENT" />
      

      进行以下更改,这应该可以工作

      <service android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationListenerService" android:exported="false">
          <intent-filter>
              <action android:name="com.google.firebase.MESSAGING_EVENT" />
          </intent-filter>
      </service>
      

      之前我使用这个动作是因为那个监听器没有触发

      <action android:name="com.google.android.c2dm.intent.RECEIVE" />
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多