Xamarin.forms 安排本地通知

Posted

技术标签:

【中文标题】Xamarin.forms 安排本地通知【英文标题】:Xamarin.forms Schedule Local notifications 【发布时间】:2020-07-14 11:55:08 【问题描述】:

我遵循来自https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/local-notifications 的有关本地通知的文档。我实现了它并且工作得很好。现在我的情况是:用户输入 Start DateRepetition timeNumber of Repetitions 。我可能需要一些后台服务来调用此推送通知?有什么建议可以在设备中安排这个吗?

更新 我从这个链接添加了共享服务:https://www.c-sharpcorner.com/article/how-to-send-local-notification-with-repeat-interval-in-xamarin-forms/ 现在我不知道如何停止 Alarm Manager UILocalNotification 当我发送示例用户输入发送 20 个通知时,必须停止 20 个通知。

【问题讨论】:

您好,您的意思是要在新设置到来之前停止通知? @JuniorJiang-MSFT 如果用户每 10 分钟输入 10 次。 10 点后通知必须取消。 好的,我们需要在每次执行任务后计算时间。次数可以本地存储,如果时间符合设置,会取消你想要的日程。 @JuniorJiang-MSFT 如何取消? 这意味着我们需要根据另一个计算停止时间的计划手动取消计划。如果不介意在 Page 中添加开关控制,那会让客户决定是否需要关闭重复的通知。 【参考方案1】:

我们可以使用AlarmManager.CancelUIApplication.SharedApplication.CancelLocalNotification 来停止安排本地通知。

iOS

void CancleScheduleNotification()

    UILocalNotification[] localNotifications= UIApplication.SharedApplication.ScheduledLocalNotifications;
    //Traverse this array to get the UILocalNotification we want according to the key
    foreach (var localNotification in localNotifications)
    
        if(localNotification.UserInfo.ObjectForKey(new NSString("key")).ToString() == "value")
        
            UIApplication.SharedApplication.CancelLocalNotification(localNotification);
        
    

安卓

void CancleScheduleNotification()

    AlarmManager am = (AlarmManager)GetSystemService(Context.AlarmService);
    Intent intent = new Intent("LILY_TEST_INTENT");
    intent.SetClass(this, LilyReceiver.class);  
    intent.SetData(android.Net.Uri.Parse("content://calendar/calendar_alerts/1"));  

    PendingIntent sender = PendingIntent.GetBroadcast(this, 0, intent, PendingIntentFlags.NoCreate);  
    if (sender != null)  
        Log.Info("lily","cancel alarm");  
        am.Cancel(sender);  
    else  
        Log.Info("lily","sender == null");  
      

【讨论】:

2021 自从奥利奥以来,我认为这不再有效。应用关闭后将无法使用

以上是关于Xamarin.forms 安排本地通知的主要内容,如果未能解决你的问题,请参考以下文章

LINKs: Xamarin.Forms + Prism

Xamarin.Forms UWP 项目不会安装在 Windows 10 移动版上

xamarin.forms 中的推送通知

Xamarin Forms Shell - 一次加载每个选项卡 - 急切加载而不是延迟加载

在 Xamarin.Forms 中打开通知

Xamarin.Forms Android 推送通知不出现