在PCL项目xamarin上添加通知

时间:2017-10-24 16:07:58

标签: c# android xamarin notifications cross-platform

我正在尝试了解通知如何在pcl项目上运行。我跟着this教程,但它最多关注android应用程序,而不是pcl项目上的问题。我可以从便携式项目中实现通知吗?首先,我可以使用弹出本地通知的按钮。

现在我对android实现感兴趣而不是ios。

1 个答案:

答案 0 :(得分:1)

有一些插件可以在XamarinForms PCL中显示LocalNotification

例如LocalNotificationsPlugin

API使用

从任何项目或PCL调用CrossLocalNotifications.Current以获取对API的访问权。

立即显示本地通知

CrossLocalNotifications.Current.Show("title", "body");

在预定日期/时间显示本地通知

CrossLocalNotifications.Current.Show("title", "body", 101, DateTime.Now.AddSeconds(5));

取消本地通知

CrossLocalNotifications.Current.Cancel(101);

Toasts.Forms.Plugin

用法

使用依赖服务来解析IToastNotificator。

var notificator = DependencyService.Get<IToastNotificator>();

var options = new NotificationOptions()
            {
                Title = "Title",
                Description = "Description"
            };

var result = await notificator.Notify(options);

返回的结果是带有Action的NotificationResult,其中包含以下值之一。

[Flags]
public enum NotificationAction
{
    Timeout = 1, // Hides by itself
    Clicked = 2, // User clicked on notification
    Dismissed = 4, // User manually dismissed notification
    ApplicationHidden = 8, // Application went to background
    Failed = 16 // When failed to display the toast
}

如果您需要Clicked NotificationAction,则必须在NotificationOptions中设置IsClickable = true。

另一个aritchie/notifications

发送通知

await CrossNotifications.Current.Send("My Title", "My message for the notification");

发送预定通知:

await CrossNotifications.Current.Send("Happy Birthday", "I sent this a long time ago", when = TimeSpan.FromDays(50));

获取预定通知列表

var list = await CrossNotifications.Current.GetScheduledNotifications();

取消特定通知

var id = await CrossNotifications.Current.Send("Hi", "This is my scheduled notification", when = TimeSpan.FromDays(1));
await CrossNotifications.Current.Cancel(id);

取消所有预定通知并清除徽章:

CrossNotifications.Current.CancelAll();

设置徽章:

设置徽章适用于所有平台,但只选择Android版本。第三方库用于实现此目的。

await CrossNotifications.Current.SetBadge(4);
await CrossNotifications.Current.GetBadge();

// 0清除徽章