如何使用react-native-firebase在推送通知中向iOS设备添加按钮?

时间:2019-11-07 21:16:57

标签: ios firebase react-native react-native-firebase

我有一个疑问,我无法解决使用按钮在带有react-native-firebase的iOS的推送通知中执行操作(接受或拒绝)的问题。对于Android,我可以做到,但对于iOS,我找不到注册动作的方法。接下来,我展示我的代码如何。

const notificationListener = () => {
  firebase.notifications().onNotification((notification) => {
    const localNotification = new firebase.notifications.Notification({
        sound: 'default',
        show_in_foreground: true,
      })
      .setSound('default')
      .setBody(notification.body)
      .setData(notification.data)
      .setTitle(notification.title)
      .setSubtitle(notification.subtitle)
      .setNotificationId(notification.notificationId);
    if (Platform.OS === 'android') {      
      localNotification
        .android.setBigText(notification.body)
        .android.setSmallIcon('ic_noti_logo_hnc')
        .android.setLargeIcon('ic_launcher')
        .android.setVisibility(firebase.notifications.Android.Visibility.Public)
        .android.setChannelId(CHANNEL_NOTIFICATIONS.CHANNEL_ID)
        .android.setPriority(firebase.notifications.Android.Priority.High);

      if (isEqual(localNotification.data.set_delay_time, "true")){
        // Build an action
        const acceptAction = new firebase.notifications.Android.Action('accept_action', 'default', 'Accept');
        const rejectAction = new firebase.notifications.Android.Action('reject_action', 'default', 'Reject');
        localNotification
          .android.addAction(acceptAction)
          .android.addAction(rejectAction);
      }

    } else if (Platform.OS === 'ios') {
      localNotification
        .ios.setBadge(notification.ios.badge);
    }
    firebase.notifications().displayNotification(localNotification)
      .catch(err => console.error(err));
  });
};

我打算做的事情与您在Android上发现的类似,但我发现最多的是IOSNotification.alertAction。

有人可以指导我吗?从已经非常感谢您!

Nico。

1 个答案:

答案 0 :(得分:0)

使用“ react-native-firebase”版本6。您可以从here获取迁移信息。

您可以使用Notifee显示操作按钮并处理所有操作单击事件。

定义操作

import notifee from '@notifee/react-native';

async function setCategories() {
  await notifee.setNotificationCategories([
    {
      id: 'post',
      actions: [
        {
          id: 'like',
          title: 'Like Post',
        },
        {
          id: 'dislike',
          title: 'Dislike Post',
        },
      ],
    },
  ]);
}

分配类别以推送通知

import notifee from '@notifee/react-native';

notifee.displayNotification({
  title: 'New post from John',
  body: 'Hey everyone! Check out my new blog post on my website.',
  ios: {
    categoryId: 'post',
  },
});