gpt4 book ai didi

java - 如果新的应用程序版本可用,如何触发更新(来自 GITHUB)

转载 作者:行者123 更新时间:2023-12-01 23:46:44 25 4
gpt4 key购买 nike

在我的应用程序中,我想创建一个功能,该功能将在启动时检查是否有可用的新版本的应用程序。如果是,则显示带有“是/否”选项的警报。

我已经尝试使用这个人的库 GitHub 。我尝试通过纯 GitHUB 和 UpdateFrom.XML 来完成此操作,但似乎没有任何效果。

我有这样的东西

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)
setContentView(R.layout.activity_login)
val toolbar: Toolbar = findViewById(R.id.toolbar)
setSupportActionBar(toolbar)

val policy: StrictMode.ThreadPolicy = StrictMode.ThreadPolicy.Builder().permitAll().build()
StrictMode.setThreadPolicy(policy)


val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout)
val navView: NavigationView = findViewById(R.id.nav_view)
val toggle = ActionBarDrawerToggle(
this,
drawerLayout,
toolbar,
R.string.navigation_drawer_open,
R.string.navigation_drawer_close
)
drawerLayout.addDrawerListener(toggle)
toggle.syncState()

drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED)

navView.setNavigationItemSelectedListener(this)
var updater = AppUpdater(this)
.setUpdateFrom(UpdateFrom.XML)
.setDisplay(Display.DIALOG)
.setTitleOnUpdateAvailable("Nová verzia dostupná")
.setContentOnUpdateAvailable("Stiahnite si prosím novú verziu aplikácie")
.setTitleOnUpdateNotAvailable("Nová verzia nie je dostupná")
.setContentOnUpdateNotAvailable("Nová verzia aplikácie nie je dostupná. Skúste neskôr")
.setButtonUpdate("Stiahnúť")
.setButtonDismiss("Neskôr")
.setIcon(R.drawable.ic_system_update_white_24dp)
.setCancelable(false)
.setUpdateXML("https://github.com/MyAccount/MyApp/tree/master/app/src/main/res/xml/provider_paths.xml")

updater.start()
}

正如我上面所说。我想检查应用程序的版本,以及是否有比下载更新的版本并更新应用程序的当前版本。

最佳答案

要快速回答您的问题 - ,您可以将您的版本存储在 GitHub 版本页面中,然后在应用程序中硬编码指向该页面的链接,并使用巧妙的解析器(或 GitHub API) )您将能够获得要下载的应用程序的链接。因此,手动执行肯定是可能的。

但相反,我会尽力说服您不要这样做,我能想到的原因有多种。您应该始终使用 Google Play 或 other alternatives 等分销 channel .

  • 您可以免费获得网络稳定性、99.9% 的可用性和完整的 CDN 访问权限,因为 GitHub 或其他存储选项可能在使用该应用的区域被阻止。如果您选择了正确的经销商,您将永远不会遇到此问题
  • 您用于检查是否有更新的自定义逻辑..它可能有一个错误:1.0.2-beta 与 1.0.2,哪个更新?默认情况下获得的排序算法很可能会给你贝塔值(这是错误的)。在这种情况下,您还必须非常小心地正确命名您的版本,并且需要做很多工作来确保您不会在这里犯错误
  • 内部测试、自动后台更新、Beta 测试......如果没有分销商,这一切几乎是不可能的
  • 如果没有分销商,分阶段推出几乎是不可能的
  • 分段下载,即仅向特定人群提供更新,如果托管应用的后端不支持此操作,则不可能实现这一点。如果您开始自己(在后端)实现此功能,您将收集用户数据,并且您的后端需要遵守 GDPR 或类似的隐私法
  • 如果没有分销商,您将来可能需要的任何下载指标几乎都是不可能实现的
  • 如果您决定将来改用分销商,某些用户可能需要卸载该应用并重新安装才能开始获取自动更新(这是糟糕的用户体验)
  • 就用户体验而言,您将阻止用户继续使用该应用,直到他们下载新版本(即使没有阻止,也多了一步)- 如果给定的话,有多少用户会真正点击“更新”一个选择?可能不多,所以无论如何你也不会从中得到太多
  • 从网络位置下载大项目需要用户确认,尤其是在按流量计费的网络上...那么您还需要检查它们是否使用移动数据或 WiFi(以及 WiFi 是否按流量计费),所以再次强调 -很多工作。如果连接中断,需要重新启动下载等
  • 如果您只想在内部或仅向特定用户组分发您的应用(而不是公开),大多数商店都可以轻松实现(例如在 Google Play 中,只需点击几下)
  • 如果您只是想因为某些协议(protocol)或后端/API 更改而强制更新...同样,您不应该在客户端修复这些问题。当涉及移动客户端时,您的后端需要永远向后兼容,这是基本要求之一

所以,是的,有很多理由不自己做。这只是我的想法(并且不知道你问题背后的原因),但可能还有更多要点需要补充。

当然,当您确实想要手动强制更新时,可能存在极其狭窄的用例,但无论如何,我建议您考虑沿着这条道路前进的后果。

更新:Google 将发布 (has released?)一个允许您检查更新的库,但即便如此,您也需要考虑提前强制更新 - 至少提前一个版本。另请注意,Google 服务并非在所有设备上都是最新的,并且并非在许多地区可用,因此这也不是 100% 可靠。

关于java - 如果新的应用程序版本可用,如何触发更新(来自 GITHUB),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58236907/

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