【问题标题】:Expo notifications not working when channel id is used使用频道 ID 时,世博会通知不起作用
【发布时间】:2020-08-10 10:37:05
【问题描述】:

我正在使用以下代码在 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 应用通知选项时找到它。

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

知道为什么吗?

我在 expo sdk 38 上。

【问题讨论】:

    标签: android react-native expo expo-notifications


    【解决方案1】:

    修好了!问题是我需要将android.useNextNotificationsApi: true 添加到app.json。 然后我必须 expo:build 并手动上传构建。

    【讨论】:

      【解决方案2】:

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

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

      在您的 app.json 文件中。

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

      expo start -c
      

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

      【讨论】:

        【解决方案3】:

        遵循文档:

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

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

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

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

        祝你好运。

        【讨论】:

        • 设备在 android 10 上,频道已成功创建(正如我所说,我什至可以在 expo 应用程序的通知设置中找到它处于活动状态)并且我正在使用最新版本的世博会应用程序来测试它。 :(
        • _createNotificationAsync = () => { Notifications.presentLocalNotificationAsync({ title: 'Reminder', body: '这是一个重要的提醒!!!!', android: { channelId: 'reminders', color : '#FF0000', }, }); }
        • 您是否使用gameupdates 频道创建了通知?
        • 是的,我的问题是,当我发送带有 gameupdates 频道 ID 的通知时,它永远不会到达手机。另外,我没有使用本地通知,而是从 expo 工具发送。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-25
        • 2021-11-14
        • 2021-03-02
        相关资源
        最近更新 更多