9

我正在使用以下代码在 Android 上为我的 expo react 应用程序创建两个通道:

Notifications.setNotificationChannelAsync("default", {
            name: "default",
            importance: Notifications.AndroidImportance.MAX,
            vibrationPattern: [0, 250, 250, 250],
            lightColor: "#FF231F7C",
        })  

Notifications.setNotificationChannelAsync("gameupdates", {
                name: "gameupdates",
                importance: Notifications.AndroidImportance.MAX,
                vibrationPattern: [0, 250, 250, 250],
                lightColor: "#FF231F7C",
            })

该频道已成功创建,我什至可以在进入 Expo 应用程序通知选项时找到它。

当我使用没有任何频道 ID的 expo 工具发送通知时,它工作正常。但是,当我使用频道 ID“gameupdates”时,通知永远不会到达我的手机。

知道为什么吗?

我在世博 SDK 38 上。

4

3 回答 3

3

解决它!问题是我需要添加android.useNextNotificationsApi: true到 app.json。expo:build然后我不得不手动上传构建。

于 2020-08-15T17:35:41.620 回答
1

您已成功创建频道,但未更新应用的展会通知设置。为此,您必须添加 -

android: {
...
"useNextNotificationsApi": true
}

在你的app.json文件中。

然后只需通过清除 expo 缓存来运行您的代码,例如 -

expo start -c

并测试它!您也将开始在 Android 10+ 手机上接收通知。

于 2020-08-19T12:57:53.963 回答
0

遵循文档:

如果您创建通知但未指定 channelId,Expo 将自动为您创建一个“默认”频道并通过该频道呈现通知。但是,如果您指定尚未在设备上创建的 channelId,则通知将不会在 Android 8+ 设备上显示。因此,提前计划并确保在发送通知之前创建所有可能需要的渠道非常重要。

在不支持通知通道的 Android 7 及更低版本的设备上,Expo 会记住您创建通道时使用的相关设置(在本例中为 sound: true),并将它们直接应用于单个通知,然后再将其呈现给用户.

所以我认为如果你想推送指定频道ID,必须确保一些事情:

  • 您的应用在 8.0+ 的设备上运行
  • 频道在设备上创建成功,而不影响用户的任何设置(以防检查您的gameupdates频道)
  • 注意你的 android 应用在 API 26+ 上运行

祝你好运。

于 2020-08-14T17:05:22.467 回答