-
Notifications
You must be signed in to change notification settings - Fork 68
Usage 9.2.0
Elvin (Tharindu) Thudugala edited this page Jul 26, 2022
·
1 revision
-
Plugin.LocalNotification
Available on NuGet: https://www.nuget.org/packages/Plugin.LocalNotification - Install into your platform-specific projects (iOS/Android), and any .NET Standard 2.0/2.1 projects required for your app.
- Must Use Xamarin.Forms 4.5.0.356 or above.
Feature | Xamarin.iOS | Xamarin.Android |
---|---|---|
Required SDK | >= 10 | >= API 19 |
Title | ✅ | ✅ |
Description | ✅ | ✅ |
Subtitle | ✅ | ✅ |
Scheduled | ✅ | ✅ |
Custom Sounds | ✅ | ✅ |
Images | ✅ | ✅ |
Notification Actions | ✅ | ✅ |
Clear Delivered Notifications | ✅ | ✅ |
Get Pending Notifications | ✅ | ✅ |
Get Delivered Notifications | ✅ | ✅ |
var notification = new NotificationRequest
{
NotificationId = 100,
Title = "Test",
Description = "Test Description",
ReturningData = "Dummy data", // Returning data when tapped on notification.
Schedule =
{
NotifyTime = DateTime.Now.AddSeconds(30) // Used for Scheduling local notification, if not specified notification will show immediately.
}
};
await NotificationCenter.Current.Show(notification);
await NotificationCenter.Current.Show((notification) => notification
.WithScheduleOptions((schedule) => schedule
.NotifyAt(DateTime.Now.AddSeconds(30)) // Used for Scheduling local notification, if not specified notification will show immediately.
.Build())
.WithTitle("Test Title")
.WithDescription("Test Description")
.WithReturningData("Dummy Data") // Returning data when tapped on notification.
.WithNotificationId(100)
.Create());
await NotificationCenter.Current.Show((notification) => notification
.WithScheduleOptions((schedule) => schedule
.NotifyAt(DateTime.Now.AddSeconds(30))
.Build())
.WithAndroidOptions((android) => android
.WithAutoCancel(true)
.WithChannelId("General")
.WithPriority(NotificationPriority.High)
.WithOngoingStatus(true)
.Build())
.WithiOSOptions((ios) => ios
.WithForegroundAlertStatus(true)
.WithForegroundSoundStatus(true)
.Build())
.WithReturningData("Dummy Data")
.WithTitle("Test Title")
.WithDescription("Test Description")
.WithNotificationId(100)
.Create());
public partial class App : Application
{
public App()
{
InitializeComponent();
// Local Notification tap event listener
NotificationCenter.Current.NotificationTapped += OnLocalNotificationTapped;
MainPage = new MainPage();
}
private void OnLocalNotificationTapped(NotificationEventArgs e)
{
// your code goes here
}
}
On iOS this event is fired only when the app is in foreground
public partial class App : Application
{
public App()
{
InitializeComponent();
// Local Notification received event listener
NotificationCenter.Current.NotificationReceived += OnLocalNotificationReceived;
MainPage = new MainPage();
}
private void OnLocalNotificationReceived(NotificationEventArgs e)
{
// your code goes here
}
}
Project should target Android framework 12.0+
To receive Local Notification tap event. Include the following code in the OnNewIntent() method of MainActivity:
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 created multiple Notification Channels with different names.
NotificationCenter.CreateNotificationChannel();
.....
LoadApplication(new App());
.....
NotificationCenter.NotifyNotificationTapped(Intent);
}
protected override void OnNewIntent(Intent intent)
{
NotificationCenter.NotifyNotificationTapped(intent);
base.OnNewIntent(intent);
}
}
You must get permission from the user to allow the app to show local notifications. Also, To receive Local Notification tap event. Include the following code in the FinishedLaunching() method of AppDelegate:
public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
{
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
global::Xamarin.Forms.Forms.Init();
// Ask the user for permission to show notifications on iOS 10.0+ at startup.
// If not asked at startup, user will be asked when showing the first notification.
Plugin.LocalNotification.NotificationCenter.AskPermission();
LoadApplication(new App());
return base.FinishedLaunching(app, options);
}
public override void WillEnterForeground(UIApplication uiApplication)
{
Plugin.LocalNotification.NotificationCenter.ResetApplicationIconBadgeNumber(uiApplication);
}
}