2016-02-11 38 views
1

我正在为已选择不使用Google Play商店的客户开发使用Phonegap Build的应用程序。相反,他们选择让我私下承载应用程序的APK文件。如何动态更新Phonegap在没有Google Play商店的情况下构建Android应用程序

我想开发一种方法来动态检查我的服务器每次启动应用程序来检查是否有更新,如果有,下载并安装该更新。

我对我的服务器做了一个ajax请求来检查最新的文件,然后我把AWS上文件的最新版本号和URL返回到我的前端。如果文件版本大于当前应用程序版本,我想更新。

这里的,现在我已经使用FileTransferWeb Intent插件的PhoneGap构建代码:当我启动应用程序

$.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请求中返回更新的版本,并调用成功方法。但在此之后似乎没有发生。任何人都可以告诉我更好的方法吗?或者我在这里做错了什么?

回答

1

您是否考虑过使用Cordova Hot Code Push plugin,这将允许您更新应用程序的www文件夹(应用程序视图,JS,CSS,任何图像等),而无需进行Google Play更新。这种方法允许你在apk中发布你的应用程序的版本,并定期从服务器获取更新,而不必自己构建样板文件获取代码。

相关问题