android - 将更新发布到生产时如何进行后端更新?
问题描述
知道向 Google Play 发布更新可能需要几个小时到一天的时间,那么同步后端的正确方法是什么?
-- 通过同步后端,我的意思是更新存储过程,从表中添加/删除列,等等。--
在 APK 提交之后但更新上线之前同步后端可能会中断当前用户的使用,因为他们的应用尚未更新以响应新的后端更改。
同样,太晚同步后端也会中断使用,因为新应用程序和旧应用程序都无法正确使用后端。
解决方案
这方面的最佳实践是不依赖于同时发布。请记住,即使 Google Play 立即更新,用户也不会总是这样。许多大公司的做法是:
假设您的后端和客户端从版本 10 迁移到版本 11:
- 确保客户端在每个网络调用中都内置了一个可能的响应,即“需要新版本”的代码。如果客户端收到此代码作为响应,那么它应该向用户显示一个选项“您需要更新到最新版本”并链接到 Google Play,而不是继续。这也可以通过Firebase Remote Config之类的服务来完成。
- 在后端,确保您同时支持新客户端(在本例中为 v11)和旧客户端(在本例中为 v10)。这需要一些软件工程,但通常并不太难。
- 在您的后端有一个实时配置变量,用于配置您需要的客户端版本。将此设置为 10(旧客户端)开始。
- 发布您的后端的 v11。此时所有客户都在 V10 客户端上与 V11 后端交谈。
- 完成后端部署后,将新客户端发布到 Play 商店。此时,一些用户将更新并使用 V10 客户端,而一些用户将使用 V11。
- 在给用户一点时间(可能是一周)进行更新后,更新您的远程配置以坚持所有用户都使用 V11 客户端。
然后你可以在你的新后端上工作,它只需要支持客户端 V11 和 V12。
另一种不太安全但需要较少软件工程的替代方法是使用 Google Play 的定时发布。说明在此页面上。在此过程中,您将您的应用发送给 Google 进行事先审核,并要求他们在审核完成后的特定时间发布。这意味着 Google 将使您的应用在准确的时间上线。然后,您可以在那时更新您的服务器。
您仍然可能有一个小窗口(分钟),其中世界不同地区的 Play 服务器不同步。此外,Play 客户端会对应用描述进行一些客户端缓存,因此即使 Play 商店已更新,用户也可能会在一段时间内(可能数小时)看不到新版本。这就是为什么我在回答的第一部分中推荐该程序的原因。
推荐阅读
- reactjs - 如何通过地图功能仅打开一个模式
- javascript - Firefox 性能和 React
- google-analytics - 在 Google Analytics 中按前 10 天细分用户
- laravel - laravel 中的 @csrf 是否包含在内?
- php - 带有 apache2 和 php-fpm over Unix 套接字的单个 docker 与带有 TCP/IP 套接字的 2 个不同容器(apache2 和 php-fpm)?
- python - Django 自定义命令在没有调试日志的情况下写入文件
- reactjs - 当依赖项之一发生更改时,您能否使 useEffect 仅运行一次,但如果再次更改则不运行?
- php - Smarty:如果 {Multi Word String} 的开头/结尾有空格,则修剪它/它们
- ajax - 无法从 Web 浏览器以外的 HTTP 客户端访问 URL 内容
- java - Redis 中的共享本机连接