如何在xamarin窗体中显示进度条通知

sauutmhj  于 2023-08-01  发布在  其他
关注(0)|答案(2)|浏览(138)

我正在使用xamarin表单,我遇到了这个插件https://github.com/thudugala/Plugin.LocalNotification,以显示通知给用户。但是如何在通知区显示进度条呢?我找不到一个例子来说明这是如何做到的。
这是我用来发送通知的代码。

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

字符串
是否有与上述示例相同的跨平台解决方案?或者是使用依赖服务的正确实现?

n53p2ov0

n53p2ov01#

你试图实现的是不可能与本地通知插件。但是,扩展库以添加用于进度条上显示的进度数据的额外参数应该是相当简单的。
基本上,您只需要通过调用SetProgress(int max, int progress, bool intermediate)方法从Notification Builder传递两个附加值。这在Google的Android文档中得到了最好的解释。
您应该在Android特定类 /Platform/Droid/NotificationServiceImpl.cs 中添加对SetProgress()的调用的方法是ShowNow()。当然,您还需要在其他地方进行更改,以便可以从跨平台代码中提供 maxprogress 值。
如果上面的解决方案看起来太复杂,并且您没有广泛使用该插件,也许您可以在Android项目中自己构建通知,并使用依赖项服务执行该代码。

**编辑:**我删除了谷歌图书链接,这似乎并不适用于所有人。相反,here是Microsoft Docs的一篇文章,详细介绍了如何创建本地通知。guies中唯一缺少的是SetProgress方法,该方法是显示进度条所必需的。

另外,请注意,您需要一次又一次地提交通知,以便在进度条中显示进度。查看Xamarin Forums中关于this thread的第三个回复(来自Cheesebaron),以获得有关其工作原理的简短解释和代码。

klr1opcd

klr1opcd2#

我用这个插件https://github.com/thudugala/Plugin.LocalNotification,但我只在android设备上测试它.

private static int _progress;

private async void Button_Clicked(object sender, EventArgs e)
    {
        _progress = 0;

        var notificationRequest = new NotificationRequest
        {
            NotificationId = new Random().Next(),
            Title = "Test",
            Description = $"{_progress}%",
            Android = new Plugin.LocalNotification.AndroidOption.AndroidOptions()
            {
                ProgressBarMax = 100,
                ProgressBarProgress = 0,
                IsProgressBarIndeterminate = false,

            },
            Schedule =
                {
                    NotifyTime = DateTime.Now.AddSeconds(2)
                }
        };

        await LocalNotificationCenter.Current.Show(notificationRequest);

        Device.StartTimer(TimeSpan.FromSeconds(3), () =>
        {
            _progress += 10;

            notificationRequest.Android.ProgressBarProgress = _progress;
            notificationRequest.Description = $"{_progress}%";
            LocalNotificationCenter.Current.Show(notificationRequest);

            if (_progress == 100)
            {
                return false;
            }

            return true;
        });
    }

字符串

相关问题