RN notifee 和 firebase 不响起并在 iOS 中显示徽章编号

RN notifee and firebase doesn't sound and show badge number in iOS

我正在使用 react native 需要在 iOS 中显示徽章编号和声音,当应用程序处于后台时但它不起作用,我正在使用 notifee 和 firebase,当应用程序处于前台时工作正常问题是什么时候是背景。

messaging().onMessage(async remoteMessage => {
      const channelId = await notifee.createChannel({
        id: 'default',
        name: 'Default Channel',
      });
      await notifee.displayNotification({
        title: remoteMessage.data?.title || '',
        body: remoteMessage.data?.message || '',
        data: {
          title: remoteMessage.data?.title || '',
          message: remoteMessage.data?.message || '',
          type: remoteMessage.data?.type || '',
        },
        android: {
          channelId,
          importance: AndroidImportance.HIGH,
          color: LightTheme.colors.primary,
          smallIcon: 'notification_icon',
          largeIcon: 'notification_icon',
          pressAction: {
            id: 'stop',
          },
        },
        ios: {
          badgeCount: 1,
          sound: 'default',
          foregroundPresentationOptions: {
            alert: true,
            badge: true,
            sound: true,
          },
        },
      });
    }); 

 messaging().setBackgroundMessageHandler(async () => {
      await notifee.incrementBadgeCount();
    });

由于推送通知是由 iOS 而不是您的应用程序处理的,您无法在收到推送通知时更改应用程序徽章。 但是您可以在推送通知的有效负载中发送徽章编号,这将应用于应用程序图标,但为此您必须在服务器端进行计算。 You should read Local and Push Notification Programming Guide and especially the The Notification Payload。 有效负载可能如下所示:

// Payload for remote Notification to APN
{
    "aps": {
        "content-available": 1,
        "alert": "Hallo, this is a Test.",
        "badge": 2, // This is your Int which will appear as badge number,
        "sound": default
    }
}

声音:默认 将播放自定义声音的默认声音以进行通知 您应该将声音文件放在 android/app/res/raw 中,对于 iOS,您应该将声音文件放在 appname.xcodeproj 文件中的资源中 现在应用程序徽章图标将在应用程序图标上显示 2 个徽章计数。并播放您的自定义声音