簡體   English   中英

如果有新的應用版本可用,如何觸發更新 ( FROM GITHUB )

[英]How to trigger update if the new app version is available ( FROM GITHUB )

在我的應用程序中,我想創建一個功能,它會在啟動時檢查是否有新版本的應用程序可用。 如果是,則顯示帶有“是/否”選項的警報。

我已經嘗試使用這個家伙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 等分銷渠道或其他替代渠道。

  • 您可以免費獲得網絡穩定性、99.9% 的可用性和完整的 CDN 訪問權限,因為 GitHub 或其他存儲選項可能在使用該應用程序的區域被阻止。 如果您選擇合適的經銷商,您將永遠不會遇到這個問題
  • 您用於檢查是否有更新的自定義邏輯..它可能有一個錯誤:1.0.2-beta 與 1.0.2,哪個更新? 您默認獲得的排序算法很可能會給您提供測試版(這是錯誤的)。 在這種情況下,您還必須非常小心地正確命名您的版本,並且要確保您不會在這里犯錯需要做很多工作
  • 內部測試、自動后台更新、beta 測試……如果沒有分銷商,這一切幾乎是不可能的
  • 再一次,分階段推出,如果沒有分銷商,幾乎是不可能的
  • 分段下載,即只對特定人群提供更新,如果沒有托管應用程序的后端對此提供支持,這是不可能的。 如果您自己(在后端)開始實施此功能,您將收集用戶數據,並且您的后端需要遵守 GDPR 或類似的隱私法
  • 再一次,您將來可能需要的任何下載指標,如果沒有分銷商,幾乎是不可能的
  • 如果您決定將來切換到分銷商,一些用戶可能必須卸載該應用程序並重新安裝它才能開始獲取自動更新(這是糟糕的用戶體驗)
  • 在用戶體驗方面,您將阻止用戶繼續使用該應用程序,直到他們下載新版本(即使它沒有阻止,這也是一個步驟) - 如果有選擇,有多少用戶會真正點擊“更新”? 可能不多,所以無論如何你也不會從中得到太多
  • 從網絡位置下載大型項目需要用戶確認,尤其是在計量網絡上......然后您還需要檢查它們是否在移動數據或 WiFi 上(並且是否 WiFi 計量),所以再次 - 很多工作. 如果連接中斷,則需要重新開始下載,依此類推
  • 如果您只想在內部或僅向特定用戶組分發您的應用程序(不公開),大多數商店都很容易做到這一點(例如在 Google Play 中,只需點擊幾下)
  • 如果您只是因為某些協議或后端/API 更改而只想強制更新......再次,您不應該在客戶端修復。 當涉及移動客戶端時,您的后端需要永遠向后兼容,這是基本要求之一

所以,是的,有很多理由不自己做。 這只是我的想法(不知道你的問題背后的原因),但可能還有很多要補充的點。

當然,當您真的想手動強制更新時,可能有一個非常狹窄的用例,但無論如何我建議您考慮走這條路的后果。

更新:谷歌將發布(已經發布?)一個庫,可以讓你檢查更新,但即便如此,你也需要提前考慮強制更新——至少提前一個版本。 另請注意,Google 服務並非在每台設備上都是最新的,並且它們在許多地區都不可用,因此這也不是 100% 可靠的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM