React Native推送通知(安卓)- 通知一直重复,无法停止

3
我正在使用react-native-push-notification库。 我能够让通知出现并伴有振动和声音......但问题是它不停地重复,无法停止。
我会在短时间内收到20多个相同的通知。 有人知道这是为什么吗?
请参见下面的代码:
import PushNotification from 'react-native-push-notification';

  constructor(props) {
    super(props);

    PushNotification.configure({
      onNotification: function(notification) {
        console.log('NOTIFICATION:', notification);
        notification.finish(PushNotificationIOS.FetchResult.NoData);
      },

      popInitialNotification: true,
      requestPermissions: true,
    });

runPushNotification = () => {
    PushNotification.localNotification({
     title: 'title'
     message: 'message',
     playSound: true,
     soundName: 'sound.mp3',
     autoCancel: true, 
     vibrate: true, 
     vibration: 300, 
     actions: '["Yes", "No"]',
     onlyAlertOnce: true,
    });
  };

1
你需要先从后端服务进行检查! - Atul Raj
1
两件事。第一,你在哪里调用 runPushNotification() 函数?第二,你的服务是如何被调用的?如果你收到了 20 条“推送”通知,那么这是由你的后端服务完成的。如果你收到了 20 条“本地”通知——这是由你的 runPushNotification() 函数完成的,那么这是因为它被调用的频率。 - Doug Watkins
这是本地通知,没有后端。来自@DougWatkins的好建议。我多次调用了该函数。 - james murphy
既然我的评论是你的答案,我就把它作为你的答案创建了。 - Doug Watkins
当我点击这个线程时,我非常希望它只是一些配置问题,但结果证明又是另一个“因为我调用了它所以它发生了”的问题。与此同时,我的安卓通知仍然每隔几秒钟就会弹出一次,让我感到困扰。 - Ash
2个回答

3

对于未来的观众,如果您收到通知,有两种方法可以实现:一种是从外部服务器推送通知,另一种是从应用程序自己的代码创建本地通知。

如果您收到推送通知,则需要检查您的服务器端逻辑,以确保您不会过多地触发通知。

如果这些是本地通知,请搜索您的代码,查找任何调用通知的地方。

执行这两个操作都应该能找到它被过度调用的位置。


0

对我来说,删除 repeatType 就解决了问题

  //repeatType: 'day', // (optional) Repeating interval. Check 'Repeating 

 PushNotification.localNotification({
      /* Android Only Properties */
      channelId: '767888', // (required) channelId, if the channel doesn't exist, notification will not trigger.
      ticker: 'My Notification Ticker', // (optional)
      showWhen: true, // (optional) default: true
      autoCancel: true, // (optional) default: true
      largeIcon: 'ic_launcher', // (optional) default: "ic_launcher". Use "" for no large icon.
      largeIconUrl: 'https://www.example.tld/picture.jpg', // (optional) default: undefined
      smallIcon: 'ic_notification', // (optional) default: "ic_notification" with fallback for "ic_launcher". Use "" for default small icon.
      bigText: 'My big text that will be shown when notification is expanded', // (optional) default: "message" prop
      subText: 'This is a subText', // (optional) default: none
      bigPictureUrl: 'https://www.example.tld/picture.jpg', // (optional) default: undefined
      bigLargeIcon: 'ic_launcher', // (optional) default: undefined
      bigLargeIconUrl: 'https://www.example.tld/bigicon.jpg', // (optional) default: undefined
      color: 'red', // (optional) default: system default
      vibrate: true, // (optional) default: true
      vibration: 300, // vibration length in milliseconds, ignored if vibrate=false, default: 1000
      tag: 'some_tag', // (optional) add tag to message
      group: 'group', // (optional) add group to message
      groupSummary: false, // (optional) set this notification to be the group summary for a group of notifications, default: false
      ongoing: false, // (optional) set whether this is an "ongoing" notification
      priority: 'high', // (optional) set notification priority, default: high
      visibility: 'private', // (optional) set notification visibility, default: private
      ignoreInForeground: false, // (optional) if true, the notification will not be visible when the app is in the foreground (useful for parity with how iOS notifications appear). should be used in combine with `com.dieam.reactnativepushnotification.notification_foreground` setting
      shortcutId: 'shortcut-id', // (optional) If this notification is duplicative of a Launcher shortcut, sets the id of the shortcut, in case the Launcher wants to hide the shortcut, default undefined
      onlyAlertOnce: false, // (optional) alert will open only once with sound and notify, default: false

      when: null, // (optional) Add a timestamp (Unix timestamp value in milliseconds) pertaining to the notification (usually the time the event occurred). For apps targeting Build.VERSION_CODES.N and above, this time is not shown anymore by default and must be opted into by using `showWhen`, default: null.
      usesChronometer: false, // (optional) Show the `when` field as a stopwatch. Instead of presenting `when` as a timestamp, the notification will show an automatically updating display of the minutes and seconds since when. Useful when showing an elapsed time (like an ongoing phone call), default: false.
      timeoutAfter: null, // (optional) Specifies a duration in milliseconds after which this notification should be canceled, if it is not already canceled, default: null

      messageId: 'google:message_id', // (optional) added as `message_id` to intent extras so opening push notification can find data stored by @react-native-firebase/messaging module.

      actions: ['Yes', 'No'], // (Android only) See the doc for notification actions to know more
      invokeApp: true, // (optional) This enable click on actions to bring back the application to foreground or stay in background, default: true

      /* iOS only properties */
      category: '', // (optional) default: empty string

      /* iOS and Android properties */
      id: 0, // (optional) Valid unique 32 bit integer specified as string. default: Autogenerated Unique ID
      title: 'My Notification Title', // (optional)
      message: 'My Notification Message', // (required)
      userInfo: {}, // (optional) default: {} (using null throws a JSON value '<null>' error)
      playSound: false, // (optional) default: true
      soundName: 'default', // (optional) Sound to play when the notification is shown. Value of 'default' plays the default sound. It can be set to a custom sound such as 'android.resource://com.xyz/raw/my_sound'. It will look for the 'my_sound' audio file in 'res/raw' directory and play it. default: 'default' (default sound is played)
      number: 10, // (optional) Valid 32 bit integer specified as string. default: none (Cannot be zero)
      //repeatType: 'day', // (optional) Repeating interval. Check 'Repeating Notifications' section for more info.
    });
``

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接