4

我正在使用这个包来实现本地推送通知:

https://github.com/zo0r/react-native-push-notification

我正在使用这样的操作按钮在通知中显示按钮以及文本和标题:

PushNotification.localNotification({
...
actions: '["Yes", "No"]'
})

我想知道当用户单击这些操作并且应用程序变得可见时如何调用函数?

我已经PushNotification.configurecomponentDidMount我的主屏幕中尝试过这样的方法,但控制台中没有出现任何内容:

  PushNotification.configure({
    // (required) Called when a remote or local notification is opened or received
    onNotification: function(notification) {
      console.log("NOTIFICATION:", notification);
      if (notification.userInteraction) {
        console.log("NOTIFICATION:");
      }

      // process the notification
    }
  });
4

4 回答 4

3

我让它工作了。

在您的 App.js 中,您需要将 popInitialNotification 设置为 true。像这样的东西:

async componentDidMount() {
    PushNotification.configure({
      // (required) Called when a remote or local notification is opened or received
      onNotification: function(notification) {
        console.log("NOTIFICATION:", notification.action);
      },

      // IOS ONLY (optional): default: all - Permissions to register.
      permissions: {
        alert: true,
        badge: true,
        sound: true
      },

      // Should the initial notification be popped automatically
      // default: true
      popInitialNotification: true,

      /**
       * (optional) default: true
       * - Specified if permissions (ios) and token (android and ios) will requested or not,
       * - if not, you must call PushNotificationsHandler.requestPermissions() later
       */
      requestPermissions: true
    });
  }

notification.action 会给你点击按钮的标签。

于 2019-08-24T11:18:08.580 回答
1

在您的按钮/应用程序活动事件中,您忘记调用来安排通知并实际设置通知何时出现,因此您需要

PushNotification.localNotificationSchedule(details: Object)

现在用相同的方式安排它id,然后您的通知将立即出现。

在此处查看所有安排选项

于 2019-08-24T06:35:47.433 回答
1
import PushNotificationAndroid from 'react-native-push-notification'

(function() {
  // Register all the valid actions for notifications here and add the action handler for each action
  PushNotificationAndroid.registerNotificationActions(['Accept','Reject','Yes','No']);
  DeviceEventEmitter.addListener('notificationActionReceived', function(action){
    console.log ('Notification action received: ' + action);
    const info = JSON.parse(action.dataJSON);
    if (info.action == 'Accept') {
      // Do work pertaining to Accept action here
    } else if (info.action == 'Reject') {
      // Do work pertaining to Reject action here
    }
    // Add all the required actions handlers
  });
})();
于 2019-08-30T04:04:56.017 回答
0

不要在组件内使用 .configure(),甚至是应用程序

如果这样做,通知处理程序将不会触发,因为它们没有加载。相反,在应用程序的第一个文件中使用 .configure(),通常是 index.js。

它在文档中提到。

尝试按照他们的示例进行实施它将帮助您在项目中进行设置。

于 2021-05-07T05:41:56.160 回答