我正在为选择不使用Google Play商店的客户使用Phonegap Build开发应用。相反,他们选择让我私下托管应用的APK文件。
我正在尝试开发一种方法,每次启动应用程序时动态检查我的服务器,以检查是否有更新,如果有,下载并安装该更新。
我向我的服务器发出ajax请求以检查最新文件,然后我将AWS上文件的最新版本号和URL返回给我的前端。如果文件版本大于当前应用版本,我想更新。
以下是我现在使用Phonegap Build的FileTransfer
和Web Intent
插件的代码:
$.ajax
type: 'GET'
dataType: 'json'
url: "#{baseUrl}/v2/update"
data:
app_token: 'fubar'
success: (data) =>
window.downloadApkAndroid(data)
window.downloadApkAndroid = (data) ->
fileURL = "cdvfile://localhost/persistent/#{data.filename}"
fileTransfer = new FileTransfer
uri = encodeURI(data.download_url)
fileTransfer.download uri, fileURL, ((entry) ->
alert 'download complete: ' + entry.fullPath
promptForUpdateAndroid entry
return
), ((error) ->
console.log 'download error source ' + error.source
console.log 'download error target ' + error.target
console.log 'upload error code' + error.code
alert "#{error.code} + #{error.source} + #{error.target}"
return
), false, {}
return
window.promptForUpdateAndroid = (entry) ->
alert entry
window.plugins.webintent.startActivity {
action: window.plugins.webintent.ACTION_VIEW
url: entry.toURL()
type: 'application/vnd.android.package-archive'
}, (->
), ->
alert 'Failed to open URL via Android Intent.'
console.log 'Failed to open URL via Android Intent. URL: ' + entry.fullPath
return
return
但是,当我启动应用程序时,没有任何事情发生。我从第一个Ajax请求返回一个较新的版本,并且正在调用success方法。但在此之后似乎没有任何事情发生。谁能告诉我任何更好的方法,或者我在这里做错了什么?
答案 0 :(得分:1)
您是否考虑使用Cordova Hot Code Push plugin,这样您就可以更新应用程序的www文件夹(应用程序视图,JS,CSS,任何图像等),而无需进行Google Play更新。此方法允许您在apk中发布应用程序的版本,并定期从服务器获取更新,而无需自己构建样板文件获取代码。