4

我正在使用 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问题

4

4 回答 4

3

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

<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>
于 2020-09-05T13:23:52.393 回答
2

在我的代码中,我在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

于 2017-08-17T11:14:45.680 回答
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 祝你好运!

于 2017-11-03T20:09:05.643 回答
0

就我而言,我按照文档遵循了所有内容,包括针对 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" />
于 2019-11-20T06:01:09.870 回答