0

我正在尝试检测对通知的点击。

我使用 react-native 0.61 和 : react-native-notifications 3.1.4 (但得到相同的结果react-native-push-notification 3.1.9)。

一切正常,但有一件事:如果我点击通知,或者如果我从带有 Firebase 管理员通知的通知中打开我的应用程序(或 curl 到 FCM),我不会触发这些事件:

Notifications.events().registerNotificationOpened

Notifications.getInitialNotification()

但是,如果我使用 发布简单的本地通知Notifications.postLocalNotification,则一切正常。

这是我的标准 curl 请求:

curl -X POST \
  https://fcm.googleapis.com/fcm/send \
  -H 'Authorization: key=mykey' \
  -H 'Content-Type: application/json' \
  -H 'Host: fcm.googleapis.com' \
  -d '{
 "to" : "cgh6P5BESPesyBJwYlaSPi:APA91bEuLwxgZq4JUlo2Su-_l1DqNVoAPzC2eHQy07IQlTuUcZNRuFiLzlbiFuCsHhU74SgYbrIkY7e2v4uQbYCspzRLlDrwrfha40Ozv613xwyYPtR3lJMaTuNcNAhGh8bdrmMY4B3N",
 "payload" : {
     "body" : "Body of Your Notification in Data",
     "title": "Title of Your Notification in Title", 
     "pushNotification": true,   
 }

再次出现通知,但如果我点击它,我不会触发任何事件。但是,如果我使用postLocalNotification我会得到这些事件。

我已经为此苦苦挣扎了好几天,我必须intents在我的AndroidManifest? 有这个工作的示例项目吗?

4

2 回答 2

0

经过几天的努力,问题出AndroidManifest在我有两个活动的地方,一个用于启动屏幕,另一个用于通知。

我的 AndroidManifest 现在是这样的:

<activity
  android:name=".MainActivity"
  android:label="@string/app_name">
  <intent-filter>
      <action android:name="android.intent.action.MAIN" />
      <category android:name="android.intent.category.INFO" />
  </intent-filter>
</activity>
<activity
  android:name=".SplashActivity"
  android:theme="@style/SplashTheme">
  <intent-filter>
      <action android:name="android.intent.action.MAIN" />
      <category android:name="android.intent.category.LAUNCHER" />
  </intent-filter>
</activity>
于 2020-04-20T11:53:52.080 回答
0

1) Notifications.events().registerNotificationOpened、Notifications.events().registerNotificationReceivedBackground 和 Notifications.getInitialNotification() 如果您使用启动画面,则不会触发。2) 对于通知上的自定义图标和颜色,将图标添加到所有 res/mipmap- 中 ,然后使用元数据标签。像这样修改 AndroidManifest 以解决上述问题:*

<uses-permission android:name="android.permission.INTERNET" />

<application
  android:name=".MainApplication"
  android:label="@string/app_name"
  android:icon="@mipmap/ic_launcher"
  android:roundIcon="@mipmap/ic_launcher_round"
  android:allowBackup="false"
  android:theme="@style/AppTheme">

  <meta-data  
  android:name="com.google.firebase.messaging.default_notification_icon" 
  android:resource="@mipmap/ic_notifications" />
  <meta-data
  android:name="com.google.firebase.messaging.default_notification_color"
  android:resource="@color/app_bg" />

  <!-- Add this SplashActivity -->
  <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>
  <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
</application>

于 2020-06-18T08:10:27.080 回答