Reputation: 1785
I am using react-native-push-notification library. I am able to make notification appear along with vibration and sound.....however problem is that it keeps repeating and wont stop.
I get 20+ of the same notification in quick succession. Anyone know why this is happening?
See code below
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,
});
};
Upvotes: 3
Views: 4370
Reputation: 11445
for me it was removing the repeatType solved the problem
//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.
});
``
Upvotes: 0
Reputation: 1448
For future viewers, if you are getting a notification there are 2 ways to do so, either as a push notification from an external server, or a local notification created from your apps own code.
If you are getting push notifications, then you need to check your server side logic to see that you aren’t firing them too many times.
If these are local notifications do a search through your code for any place you are calling the notification.
Doing both of these should lead to where it is being called excessively.
Upvotes: 3