AWS Amplify 发送到 React-Native 应用程序的 PushNotification 中缺少图像

问题描述 投票:0回答:1

我的应用程序遇到了一个烦人的问题好几天了。 它是一个适用于 Android 和 iOS 的 React Native 应用程序。该应用程序接收推送通知,这些通知是使用 lambda 函数通过 Pinpoint API 发送的。除了推送通知的设计之外,几乎一切都按预期工作。我按照 Amplify 说明设置应用程序:https://aws-amplify.github.io/docs/js/push-notifications。 如果我直接从 Pinpoint 向我的应用程序发送消息,我可以附加媒体 URL(图片),这些 URL 应该按照我在推送通知中的理解显示。但他们不会...有人可以帮我解决我的问题吗?

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.notificationapp">

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

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

        <service android:name="com.amazonaws.amplify.pushnotification.RNPushNotificationMessagingService">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT"/>
            </intent-filter>
        </service>
        <!-- [END firebase_service] -->
        <!-- [START firebase_iid_service] -->
        <service android:name="com.amazonaws.amplify.pushnotification.RNPushNotificationDeviceIDService">
            <intent-filter>
                <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
            </intent-filter>
        </service>
        <receiver android:name="com.amazonaws.amplify.pushnotification.modules.RNPushNotificationBroadcastReceiver"
                  android:exported="false">
            <intent-filter>
                <action android:name="com.amazonaws.amplify.pushnotification.NOTIFICATION_OPENED"/>
            </intent-filter>
        </receiver>

        <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.LAUNCHER"/>
            </intent-filter>
        </activity>
        <activity android:name="com.facebook.react.devsupport.DevSettingsActivity"/>
    </application>

</manifest>

如果您需要更多信息,请询问。 提前谢谢您!

编辑:

如果我通过 lambda (SendUsersMessages) 发送推送通知并附加以下 GCMMessage 对象,ImageUrlSmallImageIconUrl 将被忽略并且不会显示在通知中。

GCMMessage: {
    IconReference: 'ic_stat_warning',
    Action: 'OPEN_APP',
    Title: row.userAssetId+", ID: "+row.title,
    SilentPush: false,
    Body: row.body,
    ImageUrl: 'https://cdn4.iconfinder.com/data/icons/8-bit/160/bit-12-512.png',
    SmallImageIconUrl: 'https://cdn4.iconfinder.com/data/icons/8-bit/160/bit-12-512.png'
}
react-native push-notification aws-lambda aws-amplify aws-pinpoint
1个回答
0
投票

对于 Android,图标名称似乎在库中被硬编码为名称

ic_launcher_foreground

如果您添加到 AndroidManfiest.xml

<meta-data
      android:name="com.google.firebase.messaging.default_notification_icon"
      android:resource="@drawable/ic_launcher_foreground" />

还可以使用 Android Asset Studio(或类似工具)生成图标,这将在可绘制目录下生成它们。确保它们被命名(或重命名为)

ic_launcher_foreground.png

© www.soinside.com 2019 - 2024. All rights reserved.