-
Notifications
You must be signed in to change notification settings - Fork 72
Notification with a Sound File
Elvin (Tharindu) Thudugala edited this page Sep 29, 2023
·
18 revisions
var notification = new NotificationRequest
{
NotificationId = 100,
Title = "Test",
Description = "Test Description",
// if not specified, default sound will be played. In Android, this must be set at the channel level.
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)
Add the sound file under Platforms\Android\Resources\raw (create the raw folder if does not exist)
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.
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>