gpt4 book ai didi

c# - 在一台设备上使用代码并使用推送通知向其他设备显示 'result'

转载 作者:太空狗 更新时间:2023-10-29 21:52:41 24 4
gpt4 key购买 nike

我正在 Xamarin 表单中使用 HTML Agility pack 从网站上抓取数据。当条件返回 true 时,我想向所有用户发送推送通知。然而,这些数据变化很大,我认为如果带有此应用程序的设备不断在后台收集数据以检查特定条件,将会消耗大量互联网数据,甚至可能会消耗电池。

这是一段可以给你一个想法的代码:

var url = "https://www.goal.com/en-us/live-scores";
var httpClient = new HttpClient();
var html = await httpClient.GetStringAsync(url);
var htmlDocument = new HtmlDocument();
htmlDocument.LoadHtml(html);

var voetbalWedstrijdenHTML = htmlDocument.DocumentNode.Descendants("div").Where(node => node.GetAttributeValue("class", "")
.Equals("main-content")).ToList();

因此,我认为只让一台设备使用此代码并检查条件是否为真,然后仅向所有用户发送推送通知可能是个好主意。我制作这张图片是为了让您更好地了解我的意思。

notifications

我认为使用 firebase 消息传递向所有用户发送推送通知可能是个好主意,但是如何或使用什么来只有一台设备检查 C#?我应该使用带有 24/7 运行的 C# 代码的网站(这可能吗?),还是其他?那么...如何 24/7 运行 C# 代码?

编辑:

我发现了“Firebase 函数”。这对我有用吗?我必须更改为 javascript,所以我宁愿坚持使用 C#。

最佳答案

这就是我的做法

  1. 创建一个检查条件的 Azure Web 作业。您可以根据您的要求安排它运行。

  2. 创建 Azure 通知中心 (ANH),并根据要求将其链接到 Firebase 以及 IOS 和其他平台中的等效项。

  3. 创建每个应用程序用户都会调用的 Web API。在此 api 调用中,向 Azure 通知中心注册每个设备。注册可以包含您可以向其发送通知的标签。

  4. 当Web作业需要触发通知时,它会直接或通过Web api调用ANH并发送广播通知。您还可以根据标签缩小发送通知的用户范围。

使用 ANH 的一个优点是您无需担心发送到多个平台。您只需发送到标签,它就会发送给所有平台的相应用户。

我相信这篇文档会对您有所帮助。 https://learn.microsoft.com/en-in/azure/notification-hubs/ 。希望我有所帮助。

编辑:

您会使用 2 个项目吗:是的,您会使用至少 2 个项目。 1 个用于 Web API,1 个用于您希望应用程序所在的每个平台。

使用 Azure 通知的要点:它具有大量功能,可以让您的生活更轻松,特别是当您的应用程序在多个平台上运行时。但是,您可以直接使用 FCM。实际上,ANH 也会在幕后使用 FCM。

将您想要每次运行的代码放在 Startup.cs 中:这是一个坏主意。理想情况下,您应该使用网络作业来实现此目的。启动代码在应用程序的生命周期中仅执行一次。您不希望通知触发代码位于 Startup 类中。但是,如果您不想要使用 webjob,则可以使用 cron 调度程序。

编辑2:

您可以在 Startup.cs 中使用计时器,但是我不建议这样做。理想情况下,一个类应该只有一个目的,并且业务逻辑不适用于启动。您应该考虑将该方法移至另一个类。

如果您决定使用 webjobs,您将为 web job 创建不同的项目。 ANH、网络工作等这些服务的存在只有一个原因 - 让您的生活更轻松。如果您准备好加倍努力,那么您始终可以自己完成所有事情。PS Web 作业正在变得过时,人们现在正在转向 Azure 函数。

关于c# - 在一台设备上使用代码并使用推送通知向其他设备显示 'result',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57172803/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com