Closed jhgeluk closed 2 months ago
I have the Same issue.. tried everything. Also in beta 3 same thing.
I use this version ==> https://github.com/Steffaan/cordova-plugin-local-notifications for my application it works perfectly on Android 7+ and here is the code I use
var sound = device.platform != 'iOS' ? 'file://audio/adhan.mp3' : 'content://audio/adhan.mp3';
cordova.plugins.notification.local.schedule({
id:1,
channel: 'myChannel',
title: 'my title',
text:'place here any text',
at: new Date(),
sound: sound,
priority:1,
count:1
});
hope this help
Hi, Thank you for your answer.
I did not manage to fix it.I dont know what i doing wrong. Is it possible you to send me an working example? Or should i send you a test what i have done. Hope you can help.
Den söndag 3 mars 2019 16:14:43 EET, talal-alkaremie <notifications@github.com> skrev:
I use this version ==> https://github.com/Steffaan/cordova-plugin-local-notifications for my application it works perfectly on Android 7+ and here is the code I use var sound = device.platform != 'iOS' ? 'file://audio/adhan.mp3' : 'content://audio/adhan.mp3'; cordova.plugins.notification.local.schedule({ id:1, channel: 'myChannel', title: 'my title', text:'place here any text', at: new Date(), sound: sound, priority:1, count:1 });
hope this help
— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.
I use this version ==> https://github.com/Steffaan/cordova-plugin-local-notifications for my application it works perfectly on Android 7+ and here is the code I use
var sound = device.platform != 'iOS' ? 'file://audio/adhan.mp3' : 'content://audio/adhan.mp3'; cordova.plugins.notification.local.schedule({ id:1, channel: 'myChannel', title: 'my title', text:'place here any text', at: new Date(), sound: sound, priority:1, count:1 });
hope this help
Not working for me, even if it did. It's a work around.
This bug should be fixed.
I think I have the same issue, but it looks like it is ignoring the 'sound: null' parameter as well. There seems to be a problem communicating the sound and vibration correctly on Android, in my experience, it is just ignoring them. Has anyone found any solutions?
My format (I'm using latest katzer version from git): var sound = device.platform == 'Android' ? 'file://notification.mp3' : 'file://notification.caf'; cordova.plugins.notification.local.schedule({ id: 0, title: "Canning timer is complete", text: "Continue to next step", sound: sound, vibrate: true, icon: "file://notify-icon.png", smallIcon: "res://n_icon.png", trigger: {at: reminder0} }); cordova.plugins.notification.local.schedule({ id: 1, title: "Canning timer", text: "Next step at " + reminder0.toLocaleTimeString('en-US'), sound: null, icon: "file://notify-icon.png", smallIcon: "res://n_icon.png" });
I think I have the same issue, but it looks like it is ignoring the 'sound: null' parameter as well. There seems to be a problem communicating the sound and vibration correctly on Android, in my experience, it is just ignoring them. Has anyone found any solutions?
My format (I'm using latest katzer version from git): var sound = device.platform == 'Android' ? 'file://notification.mp3' : 'file://notification.caf'; cordova.plugins.notification.local.schedule({ id: 0, title: "Canning timer is complete", text: "Continue to next step", sound: sound, vibrate: true, icon: "file://notify-icon.png", smallIcon: "res://n_icon.png", trigger: {at: reminder0} }); cordova.plugins.notification.local.schedule({ id: 1, title: "Canning timer", text: "Next step at " + reminder0.toLocaleTimeString('en-US'), sound: null, icon: "file://notify-icon.png", smallIcon: "res://n_icon.png" });
I've not found a solution yet.
Hi again, so I played around with Steffaan's version from above, and I now have it working on Android 8. One thing I did not notice earlier, was that you need to define each channel, much like you did with the id in the Katzer version. So, for example, I changed my notifications from above to have a channel and priority parameter: cordova.plugins.notification.local.schedule({ id: 1, channel: 'channel1', title: "Canning timer", text: "Next step at " + reminder0.toLocaleTimeString('en-US'), sound: null, icon: "file://notify-icon.png", smallIcon: "res://n_icon.png", priority: -1 });
cordova.plugins.notification.local.schedule({
id: 0,
channel: 'channel0',
title: "Canning timer is complete",
text: "Continue to next step",
sound: sound,
vibrate: true,
icon: "file://notify-icon.png",
smallIcon: "res://n_icon.png",
priority: 2,
trigger: {at: reminder0}
});
So, I now have one notification that displays, but is silent, and another that is makes sound and vibrates. I'm still testing, but this seems to work for me. It would be nice to pull the Android channel changes into the master.
Same problem in Android 8/9. Also, Push notification plugin has the same problem in background. It seems to be a SO issue than a plugin one
could anyone play custom sound on Android. It works perfect for me on iOS using the following :
cordova.plugins.notification.local.schedule({ title: 'Custom sound', trigger: { every: 'minute', count: 2 }, sound: 'file://statics/daybreak.wav' })
katzer version worked for me only without the custom sound and vibrating.
As @talal-alkaremie suggested, the Steffaan version worked perfectly for me so far. I've tested with an Android 8.1.0 and i had to put the resource-file in config.xml with the right paths to have it working and i'm using Phonegap Build.
As @SaltyPotato questioned before, are there any chances of getting the improvements from Steffaan version to main (katzer) version?
According to android documentation: ->Notice that the NotificationCompat.Builder constructor requires that you provide a channel ID. This is required for compatibility with Android 8.0 (API level 26) and higher, but is ignored by older versions.
->Before you can deliver the notification on Android 8.0 and higher, you must register your app's notification channel with the system by passing an instance....
https://developer.android.com/training/notify-user/build-notification.html
in conclution is need add channel and priority in versions superior 8.0
same problem here. cannot play custom sound on android.
Is there any idea when this is gonna be fixed? I am also not able to set a custom notification sound.
I've checked Android Studio console and I can see this error:
E/Asset: File not found: assets/www/assets/audio/cuckoo-cuckoo-clock.mp3
W/System.err: java.io.FileNotFoundException: www/assets/audio/cuckoo-cuckoo-clock.mp3
@jalison-dasilva as other folks said earlier, this one worked better for me, on iOS and also Android:
https://github.com/Steffaan/cordova-plugin-local-notifications
Hi @caioschwartz
Can you please share code here and tell us where to place audio file because i am facing issue in playing custom sound.
Thanks
@talhaZahidch, don't forget to consider, as i said before, that the katzer/cordova-plugin-local-notifications din't work for me. I've used the Steffaan version.
With the Steffaan version i did:
A. Put a .mp3 and .caf file in the root of the project
B. At config.xml
<plugin name="https://github.com/Steffaan/cordova-plugin-local-notifications" />
2 Add <resource-file src="???.mp3" target="app/src/main/res/raw/???.mp3" />
inside <platform name="android">
<resource-file src="???.caf" target="www/res/???.caf" />
inside <platform name="ios">
C. Call the method
cordova.plugins.notification.local.schedule( { channel: 'ChannelName', color: '#16A7E0', icon: 'res://icon', id: 3, priority: 2, smallIcon: 'res://ic_dialog_alert', sound: device.platform.toLowerCase() === 'android' ? "res://???.mp3" : "res://???.caf", title: 'Warning', text: 'Time is running out', trigger: { at: dateToPopNotification }, vibrate: true } );
Hey guys after long time testing, I have figured it out using the capacitor local notifications on any version of Android. **To get the sound working you must create a channel*****
First you need to put the sound.mp3 file that you have inside the raw folder located in the res folder of Android files.
Second you need to create a channel using the plugin and put in the right values, for (sound: 'sound.mp3'). Then schedule a notification with the basic values but don't include the sound param when you schedule the notification. Examples below
//// Creating channel example ///// const channel1: NotificationChannel = { id: 'mychannel', name: 'channel', importance: 5, sound: 'sound.mp3', visibility: 1,
}
Important NotificationChannel from capacitor plugins
Plugins.LocalNotification.createchannel(channel1)
//// Scheduling notifications ///// Plugins.LocalNotification.schedule({ notifications { title: 'example', id: 1, channel: 'mychannel' (channel id from above) body: 'example', trigger: 'example'
} })
Third inside the capacitor.config.json file put Plugins { LocalNotification { "smallicon": "icon" "Iconcolor": "#22222# "sound": "sound.mp3" } }
That's all after that it will be working. Once your notification triggers it will play the custom sound you assigned. If you get confused let me know. Here is the video you can follow to help you understand better. https://youtu.be/bww4a4B43tM
Hi all, perhaps you can try this fork, it is more recent and still maintained: https://github.com/timkellypa/cordova-plugin-local-notifications
This fork also includes updates for Android 10.
Please note that some property names are different than that of Steffaan's: Steffaan: channel and channelDescription. timkellypa: channelId and channelName.
Hope it helps. Thanks.
Hi @moderntechllc,
I have local notifications working with this cordova plugin and custom sound also for android 10, but I would like to move to capacitor, So I am trying your suggestion for custom channel.
Plugins.LocalNotification.createchannel(channel1)
but it gives me an error:
Unhandled Promise rejection: not available ; Zone: <root> ; Task: null ; Value: Error: not available
zone-evergreen.js:659 Unhandled Promise rejection: not available ; Zone: <root> ; Task: null ; Value: Error: not available
at Object.fromNative (capacitor-runtime.js:226)
at <anonymous>:1:18 Error: not available
at Object.fromNative (capacitor-runtime.js:230:14)
at <anonymous>:1:18
Do you know what am I doing wrong?
I changed channel: 'mychannel'
to channelId: 'mychannel'
because here core-plugin-definitions.d LocalNotification is defined:
export interface LocalNotification {
title: string;
body: string;
id: number;
schedule?: LocalNotificationSchedule;
/**
* Name of the audio file with extension.
* On iOS the file should be in the app bundle.
* On Android the file should be on res/raw folder.
* Doesn't work on Android version 26+ (Android O and newer), for
* Recommended format is .wav because is supported by both platforms.
*/
sound?: string;
/**
* Android-only: set a custom statusbar icon.
* If set, it overrides default icon from capacitor.config.json
*/
smallIcon?: string;
/**
* Android only: set the color of the notification icon
*/
iconColor?: string;
attachments?: LocalNotificationAttachment[];
actionTypeId?: string;
extra?: any;
/**
* iOS only: set the thread identifier for notification grouping
*/
threadIdentifier?: string;
/**
* iOS 12+ only: set the summary argument for notification grouping
*/
summaryArgument?: string;
/**
* Android only: set the group identifier for notification grouping, like
* threadIdentifier on iOS.
*/
group?: string;
/**
* Android only: designate this notification as the summary for a group
* (should be used with the `group` property).
*/
groupSummary?: boolean;
/**
* Android only: set the notification channel on which local notification
* will generate. If channel with the given name does not exist then the
* notification will not fire. If not provided, it will use the default channel.
*/
channelId?: string;
/**
* Android only: set the notification ongoing.
* If set to true the notification can't be swiped away.
*/
ongoing?: boolean;
/**
* Android only: set the notification to be removed automatically when the user clicks on it
*/
autoCancel?: boolean;
}
LocalNotifications.schedule({
notifications: [{
title: 'Last Known Location',
body: 1 + 'testing sound', // 'Latitude: ' + location.coords.latitude + ' Long: ' + location.coords.longitude,
id: 1,
channelId: 'mychannel',
sound: `file://assets/audio/${sound}.mp3`,
ongoing: true
}]
});
@MInesGomes Do you have capacitor installed? Because that plugins uses the capacitor apis, you need you install the capacitorjs and then import it to your page after that it will work. Unless you don't want to use the capacitorjs then you can use the Cordova plugin in that katzer offers, but I haven't tested out to get the sound and everything working with this Plugin. That's why I used the capacitor plugin with the capacitor framework.
@moderntechllc Yes I have installed. I made a new project to test and installed just capacitor & no cordova The notification appears. geolocation(capacitor) is working and Backgournd tasks Plugin (capacitor) also. But custom sound no, and it gives me the error above.
If I comment
Plugins.LocalNotifications.createChannel(channel1);
Doesn't give the error
@MInesGomes Yes I see that when you schedule your notification the format and values you did it wrong. Please refer back to the examples of how I set up the notifications schedule. You shouldn't include sound value when scheduling a notification rather it should be done in the capacitor.config.json file
Thanks for your help @moderntechllc I remove the sound but it keeps giving the error in creating the channel here
Plugins.LocalNotifications.createChannel(channel1);
before schedule
Do you have a link to a working code?
Provide a general summary of the issue.
Your Environment
cordova -v
): 4.2.1cordova platform ls
): 7.1.4Expected Behavior
Using:
I want to display a notification with a custom sound Located in
src/assets/sounds/alerts/...
Actual Behavior
I've tried every possible filepath (I think) however it still plays the default Samsung Galaxy s8 notification sound.
Context
Explained above.
Debug logs
Logcat output:
I've noticed that 'sound = null' is being logged, which is kind of weird. Thanks in advance.
With kind regards,
Jonah