我正在尝试了解通知如何在pcl项目上运行。我跟着this教程,但它最多关注android应用程序,而不是pcl项目上的问题。我可以从便携式项目中实现通知吗?首先,我可以使用弹出本地通知的按钮。
现在我对android实现感兴趣而不是ios。
答案 0 :(得分:1)
有一些插件可以在XamarinForms PCL中显示LocalNotification
API使用
从任何项目或PCL调用CrossLocalNotifications.Current以获取对API的访问权。
立即显示本地通知
CrossLocalNotifications.Current.Show("title", "body");
在预定日期/时间显示本地通知
CrossLocalNotifications.Current.Show("title", "body", 101, DateTime.Now.AddSeconds(5));
取消本地通知
CrossLocalNotifications.Current.Cancel(101);
或
用法
使用依赖服务来解析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。
发送通知
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清除徽章