[英]Use code on one device and show 'result' with others using push notifications
我正在使用Xamarin表单中的HTML Agility包来从网站上抓取数据。 当条件返回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();
所以我认为让一个设备只使用这个代码并检查条件是否为真然后只向所有用户发送推送通知可能是个好主意。 我已经制作了这张图片,让您更好地了解我的意思。
我认为使用firebase消息传递向所有用户发送推送通知可能是一个好主意,但我如何或仅使用一个设备来检查C#? 我应该使用一个网站,其中包含全天候运行的C#代码(这可能吗?),还是其他什么? 那么......我如何24/7运行C#代码?
编辑:
我发现了“Firebase功能”。 这对我有用吗? 我必须改为javascript,所以我宁愿坚持使用C#。
这就是我将如何做到这一点
创建一个用于检查条件的Azure Web作业。 您可以安排它根据您的要求运行。
创建Azure通知中心(ANH)并根据要求将其链接到Firebase以及IOS和其他平台中的等效项。
创建每个应用用户都会调用的web api。 在此api调用中,使用Azure通知中心注册每个设备。 注册可以包括您可以向其发送通知的标签。
当Web作业需要触发通知时,它将直接或通过Web api调用ANH并发送广播通知。 您还可以缩小用户范围,以便根据标记发送通知。
使用ANH的一个优点是您无需担心发送到多个平台。 您只需发送到标签,它将转到所有平台的相应用户。
我相信这份文件可能对您有所帮助。 https://docs.microsoft.com/en-in/azure/notification-hubs/ 。 希望我有所帮助。
编辑:
你会使用2个项目:是的,你将使用至少2个项目。 一个用于web api,一个用于您希望应用程序所在的每个平台。
使用Azure通知的重点:它具有许多功能,可以让您的生活更轻松,特别是如果您的应用程序在多个平台上运行。 但是,您可以直接使用FCM。 实际上ANH也会在门后使用FCM。
在Startup.cs
放置你想要运行的代码:这是一个坏主意。 理想情况下,您应该使用Web作业。 启动代码仅在应用程序的生命周期中执行一次。 您不希望通知触发器代码位于Startup类中。 但是,如果您不想使用webjob,则可以使用cron调度程序。
编辑2:
您可以在Startup.cs
使用计时器,但我不建议这样做。 理想情况下,一个类应该只有一个目的,而业务逻辑不适用于Startup。 您应该考虑将该方法移出到另一个类。
如果您决定使用webjobs,则可以为Web作业创建不同的项目。 像ANH,网络工作等这些产品存在的原因之一 - 让您的生活更轻松。 如果您准备好加倍努力,您可以随时自行完成所有事情。 PS Web作业正在变得过时,人们现在正在转向Azure功能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.