-
Notifications
You must be signed in to change notification settings - Fork 68
Notification with a Sound File
Elvin (Tharindu) Thudugala edited this page Apr 13, 2024
·
16 revisions
var notification = new NotificationRequest
{
NotificationId = 100,
Title = "Test",
Description = "Test Description",
//If not specified, the default sound will be played. In Android, this must be set at the channel level for new versions of Android.
Sound = DeviceInfo.Platform == DevicePlatform.Android ? "<file name without extension>" : "file name with extension",
};
LocalNotificationCenter.Current.Show(notification);
public static class MauiProgram
{
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
....
.UseLocalNotification(config =>
{
config.AddAndroid(android =>
{
android.AddChannel(new NotificationChannelRequest
{
Sound = "good_things_happen"
});
});
});
return builder.Build();
}
}
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
protected override void OnCreate(Bundle savedInstanceState)
{
.....
// Must create a Notification Channel when API >= 26
// you can create multiple Notification Channels with different names.
LocalNotificationCenter.CreateNotificationChannel(
new Plugin.LocalNotification.Platform.Droid.NotificationChannelRequest
{
Sound = Resource.Raw.<file name without extension>.ToString()
});
.....
LoadApplication(new App());
.....
LocalNotificationCenter.NotifyNotificationTapped(Intent);
}
protected override void OnNewIntent(Intent intent)
{
LocalNotificationCenter.NotifyNotificationTapped(intent);
base.OnNewIntent(intent);
}
}
- Have to respect Android naming convention (everything in lowercase letters)
- Must be 128kps (320kps does not work)
- BuildAction must be set to AndroidResource
- Supported formats are mainly: mp3, m4a, wav, ogg based on doc
- Sound has to be smaller than 30s
- The Best sound format is WAV; it is supported by both platforms
- Add the sound file under Platforms\Android\Resources\raw (create the raw folder if it does not exist)
- The sound has to be in platform specific raw folder. If it is put into global Resources/Raw, it would be stored not as a resource but as an asset. And it is not possible to get the path to asses, only to the resource.
Add the sound file under Resources\raw (create the raw folder if does not exist)
When Android >= 26, Sound must be set in Channel level. (After Version 4.0.0).
Create different Notification Channels with different names if you want to play different sound files.
Add the sound file under Resources.
- Supported formats are: aiff, wav, caf based on doc
- The Best sound format is WAV, it is supported by both platforms
Also, make sure to add BundleResource link in csproj
<ItemGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">
<BundleResource Include="Platforms\iOS\Resources\good_things_happen.aiff" Link="Resources\good_things_happen.aiff" />
</ItemGroup>