php - 基于 Web 数据更改的 Android 应用程序即时通知
问题描述
我目前正在为我的网站构建一个 Android 应用程序,我想为我的应用程序实现某个功能。以下是简要说明:
目前我的网站有所谓的“公告”(这些是可以由管理员通过管理面板发送的简单消息)。通过网站登录的用户能够查看这些公告并因此阅读这些公告的内容。
在我的应用程序中,我也可以查看这些公告并阅读内容,但我也希望在出现任何新通知时立即通知我的用户。但是,这是我面临问题的地方。
由于该网站没有任何应用程序API,我的应用程序基本上是获取公告的XML数据,然后将其解析为应用程序内部的数据,然后我能够将数据显示给应用程序内部的用户,通知也可以实现。使用工作管理器,我可以安排 15 分钟(最小)延迟的定期工作,然后通过比较我的应用程序内的公告 ID 来显示任何新公告发布的时间。
如您所见,这是一种非常麻烦且不太方便的处理方式,此外,在我的情况下,15 分钟是一个很长的延迟,我需要用户在管理员发布通知后立即在应用程序中收到该通知网站。
在这种情况下,我认为这是一个很好的实现:
- 不是每 15 分钟向服务器发送一次 HTTP 请求,android 应用程序需要有一个监听器,即观察我网站的“公告”的内容
- 考虑到这一点,网站需要有一些可听的容器来存储这些公告
- 一旦“公告”的内容发生变化,我的应用程序就会获取“公告”,并在进行一些额外操作后,将它们显示为通知
这就是我面临的问题,因为我不确定我应该如何以及究竟应该为网站和 android 应用程序使用什么来实现这种行为。请在这里指出正确的方向。
解决方案
您想要实现的目标,可以使用webSockets来完成。webSocket 的目的正是为了避免仅仅为了查找更新而发出大量请求,相反,它会创建类似于“无限连接”的东西,每当从您的 webServer 分派某些事件时,它就会更新您的前端。你可以在这里阅读一篇好文章。
这描述了使用 Laravel 和一个流行的服务来管理 websockets 而不会让人头疼,Pusher。
我希望这有助于为您指明正确的方向!
推荐阅读
- javascript - JavaScript:为 jquery ajax 重试添加延迟
- ruby-on-rails - Ruby 默认参数:静态还是动态?
- c# - 使用托管服务帐户将文件从 IIS 写入网络驱动器
- c# - 使用具有不同层的 LINQ 意味着我无法访问特定类型
- python - aws lambda 逐行读取并写入文件
- c++ - 使用 C++ 在 Active Directory GPO 中管理“安全设置”
- flutter - GridView中的颤振图像滚动滞后
- python - 如何指定来自 rest_framework.test.Client 的 Accept 标头?
- c++ - 对于 C++,是否可以打印派生类对象的超类成员
- class - Kotlin 中的这些类有什么区别?