찾다
php教程php手册使用Appcan客户端自动更新PHP版本号(全),appcan版本号

使用Appcan客户端自动更新PHP版本号(全),appcan版本号

在项目开发过程中遇到app端自动更新,查阅了相关资料然后把Appcan客户端自动更新PHP版本号的方法整理出来,具体代码讲解如下。

服务端文件:update.php、version.php、version.xml

update.php 内容:

PHP

<&#63;php
define('CIN', true);
$oldver = $_REQUEST['ver'];//客户端传过来的版本号
$platform = $_REQUEST['platform'];//客户端的平台
$info = simplexml_load_file('version.xml');
$iphone_filename=$info->news['iphone_filename']; //iphone下载文件
$android_filename=$info->news['android_filename']; //androiad下载文件
$version=$info->news['version']; //版本号
if ($version>$oldver)
{
  switch ($platform)
  {
    case "0"://iphone
      echo "<&#63;xml version=\"1.0\" encoding=\"utf-8\"&#63;>";
      echo "<results>";
      echo "<updateFileName>i2ty</updateFileName>";//客户端名字
      echo "<updateFileUrl>itunesURL</updateFileUrl>";//返回给客户端的下载地址
      echo "<fileSize>0</fileSize>";//文件大小
      echo "<version>".$version."</version>";//版本信息
      echo "</results>";
      break;
    case "1"://android
      echo "<&#63;xml version=\"1.0\" encoding=\"utf-8\"&#63;>";
      echo "<results>";
      echo "<updateFileName>i2ty</updateFileName>";//客户端名字
      echo "<updateFileUrl>http://i2ty.com/app/".$android_filename."</updateFileUrl>";//返回给客户端的下载地址
      echo "<fileSize>0</fileSize>";//文件大小
      echo "<version>".$version."</version>";//版本信息
      echo "</results>";
      break;
  }
}
&#63;>

version.php 内容:

PHP

<&#63;php
define('CIN', true);
$result['vtitle']="更新";
$result['vcontent']="新版本有更新喔!~新增功能修复各种错误";
print_r(json_encode($result));
&#63;>
version.xml 内容:
PHP
<&#63;xml version="1.0" encoding="utf-8" &#63;>
<root desc="Login">
 <news version="00.00.0001" iphone_filename="i2ty.ipa"  android_filename="i2ty.apk" />
</root>
index.html 客户端:
PHP
window.uexOnload = function(type){   
    if (!type) {
      update();
    }
var flag_sdcard = 1;
var updateurl = '';//下载新apk文件地址
var filepath2 = "/sdcard/";//保存到sd卡
var fileName = '';//新版本文件名
var platform = '';//平台版本
function update()
{  
    //安卓版 ,显示下载进度 (step:7)
    uexDownloaderMgr.onStatus = function(opId, fileSize, percent, status) {
        if (status == 0) {
            // 下载中...
            Log('download percent ' + percent + '%');
            uexWindow.toast('1', '5', '正在下载'+localStorage.app_title+'新版,请稍后。进度:' + percent + '%', '');
        } else if (status == 1) {// 下载完成.
            uexWindow.closeToast();
            uexDownloaderMgr.closeDownloader('14');//关闭下载对象
            uexWidget.installApp(filepath2+fileName);// 安装下载apk文件
        } else {
            uexWindow.toast('1', '5', '下载出错,请关闭'+localStorage.app_title+'再次运行.', '');
        }
    };
    //安卓版 ,创建下载对象回调函数(step:6)
    uexDownloaderMgr.cbCreateDownloader = function(opId, dataType, data) {
        Log('uexDownloaderMgr.cbCreateDownloader data='+data);
        if (data == 0) {
            //updateurl是通过调用cbCheckUpdate回调后,放入全局变量的
            uexDownloaderMgr.download('14', updateurl, filepath2+fileName, '0');//开始下载apk文件
        } else if (data == 1) { 
            ;
        } else {
            ;
        }
    };
    //提示更新模态框按钮事件回调函数,判断用户选择更新还是取消 (step:5)
    uexWindow.cbConfirm = function(opId, dataType, data) {
        Log('uexWindow.cbConfirm ');
        //调用对话框提示函数
        if (data == 0) {
            //用户点击稍后按钮,不进行更新
        } else {
            //用户点击确定按钮,进行更新
            if (platform == 0) {
                //苹果版更新,通过浏览器加载appstore路径
                uexWidget.loadApp(updateurl,'','');
                //uexWidget.loadApp("", "", updateurl);//旧方法 已经不可以使用了。
            } else if (platform == 1) {
                //安卓版更新,通过创建下载对象进行下载                
                uexDownloaderMgr.createDownloader("14");
            } else {
                ;
            }
        }
    };
    //调用检查更新回调函数,请求成功后,弹出模态框让用户选择是否现在更新(step:4)
    uexWidget.cbCheckUpdate = function(opCode, dataType, jsonData) {        
        Log('jsonData='+jsonData);
        var obj = eval('(' + jsonData + ')');
        if (obj.result == 0) {
            // tips = "更新地址是:" + obj.url + "<br>文件名:" + obj.name + "<br>文件大小:" +
            // obj.size + "<br>版本号:" + obj.version;
            updateurl = obj.url;
            fileName = obj.name+".apk";
            getVersionContent();
            // var value = "稍后;更新";
            // var mycars = value.split(";");
            // uexWindow.confirm('', '当前有新版本,是否更新&#63;', mycars);//弹出提示框,是否确定更新
        } else if (obj.result == 1) {
            //苹果
            //alert("更新地址是:" + obj.url + "<br>文件名:" + obj.name + "<br>文件大小:" +
            //obj.size + "<br>版本号:" + obj.version)
            ;// tips = "当前版本是最新的";alert(tips);
        } else if (obj.result == 2) {            
            ;// tips = "未知错误";alert(tips);
        } else if (obj.result == 3) {            
            ;// tips = "参数错误";alert(tips);
        }
    };
    //检查是否已经存在sd卡的回调函数(step:3)
    uexFileMgr.cbIsFileExistByPath = function(opCode, dataType, data) {
        Log('uexFileMgr.cbIsFileExistByPath flag_sdcard='+flag_sdcard+' , data='+data);
        if (flag_sdcard == 0) {
            if (data == 0) {
                Log('sdcard不存在,根据具体情况处理');
            } else {
                //执行检查更新
                uexWidget.checkUpdate();//根据config.xml里面配置的检查更新地址发起http请求
            }
            flag_sdcard = 1;
        } 
    };
    //获取平台版本回调函数,确定是客户端是那个平台的客户端 (step:2)
    uexWidgetOne.cbGetPlatform = function(opId, dataType, data) {
        Log('uexWidgetOne.cbGetPlatform ');
        //获取系统版本信息回调函数
        platform = data;
        Log('platform= '+platform);
        if (data == 0) {
            // 是iphone
            uexWidget.checkUpdate();// 直接调用检查更新,检查更新地址在config.xml里面有配置
        } else if (data == 1) {
            // 是android
            flag_sdcard = 0;
            uexFileMgr.isFileExistByPath('/sdcard/');//先判断是否存在sd卡,再调用checkUpdate来进行更新
        } else {
            // 是平台
        }
    };
    uexWidgetOne.getPlatform();//获取平台版本 (step:1)
}
function Log(s) {
    uexLog.sendLog(s);
}
function getVersionContent(){
    var url = web_url+"version.php";
    uexXmlHttpMgr.onData = getvSuccess;
    uexXmlHttpMgr.open(777, "get", url,"");
    uexXmlHttpMgr.send(777); 
}
function getvSuccess(opid,status,result){
    if (status == -1) {
      uexWindow.toast("0","5","连接不上网络^_^哦","3000");
    }
    if(status==1){
    uexXmlHttpMgr.close(777);
    uexWindow.closeToast();
    if(result=="[]"){uexWindow.toast("0","5","无","2000");}
    else{
      var con=eval('(' + result + ')')
      var value = "稍后;更新";
      var mycars = value.split(";");
      uexWindow.confirm(con.vtitle, con.vcontent, mycars);//弹出提示框,是否确定更新
      }
    }
}

最后app 的 config.xml 文件配置更新地址填写为:

http://www.i2ty.com/update.php

APP端更新提示:

弹窗内容根据 version.php 文件内容可以自定义。

以上内容就是本文讲解使用Appcan客户端自动更新PHP版本号的方法,希望对大家有所帮助。

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
win11怎么禁止Windows Update 自动更新驱动程序?win11怎么禁止Windows Update 自动更新驱动程序?Jun 26, 2024 am 12:18 AM

大家在系统上连接任何新的硬件设备时Windows都会自动尝试为其安装驱动程序,在系统内置的驱动包无法识别时还会自动尝试连接到WindowsUpdate去搜索和安装驱动。Windows也可以在无需用户交互的情况下,通过WindowsUpdate自动更新设备的驱动程序。这个功能看起来虽然方便,但在特定情况下,自动更新驱动这一特性反而会给用户造成麻烦。例如,用户的视频工作流如DaVinciResolve、AdobePremiere等需要用某个特定老版本的NvidiaStudio驱动,结果Windows

如何禁止Win11自动更新如何禁止Win11自动更新Dec 27, 2023 pm 12:53 PM

很多用户在日常使用电脑的时候总是会接收到系统的自动更新,不仅让电脑变慢还变卡,为此我们今天给大家带来了win11不想自动更新操作方法,如果自动更新一直影响你就来看看怎么关闭吧。windows11系统不想自动更新怎么弄1、首先右击桌面“此电脑”然后选择“管理”。2、在打开的“计算机管理”中,按依次点开“服务”→“应用程序”→“服务”→“Windowsupdate”。3、接下来双击“Windowsupdate”,将“启动类型”设置为“禁用”,点击“停止”服务并确定。4、点击“恢复”选项卡,将第一次失

如何开发一个自动更新WordPress插件的功能如何开发一个自动更新WordPress插件的功能Sep 05, 2023 am 10:40 AM

如何开发一个自动更新WordPress插件的功能WordPress是一个非常流行的开源内容管理系统(CMS),拥有丰富的插件市场来扩展其功能。为了确保插件始终保持最新和安全,开发者需要实现自动更新功能。在本文中,我们将介绍如何开发一个自动更新WordPress插件的功能,并提供代码示例来帮助您迅速上手。准备工作在开始开发之前,您需要准备以下几个关键的步骤:创

关闭win10自动更新的组策略方法关闭win10自动更新的组策略方法Dec 23, 2023 pm 05:07 PM

在使用win10系统的时候,我们都经常会遇到更新的问题,这个更新有时候很烦人,那么怎么才能解决这个问题呢,这个需要我们进入到本地组策略里面去设置。win10组策略关闭自动更新方法:1、按下键盘上的“win+R”打开运行,输入“gpedit.msc”点击确定。2、选择“管理模板”-“Windows组件”,双击进入3、然后找到“Windows更新”,双击进入。4、在右边找到“配置自动更新”,鼠标双击打开。5、然后勾选“已禁用”,然后点击“应用”,就行了。

office2016下载怎样关闭自动更新-office2016下载关闭自动更新的方法office2016下载怎样关闭自动更新-office2016下载关闭自动更新的方法Mar 04, 2024 pm 04:34 PM

很多人在办公中都在使用office2016下载,但是你们知道office2016下载怎样关闭自动更新吗?下文小编就讲述了office2016下载关闭自动更新的方法,感兴趣的用户快来下文看看吧。先打开一个组件,比如可以打开Office2016的EXCEL电子表格软件,其它组件也是可以的。点击界面左上角的文件菜单,如图所示操作。在左侧这里找到账户选项打开进入,开始进行操作。点击更新选项中的禁用更新按钮。当Office更新这里显示为无法更新此产品的时候,说明我们设置完成。当我们以后需要更新的时候,我们

红米13c自动更新怎么关闭?红米13c自动更新怎么关闭?Mar 04, 2024 pm 09:49 PM

现在的手机是越来越强大的,功能越来越全面,也为用户们提供更为舒适的使用体验,Redmi13C作为最新发布的新机型,各种功能也是很多的,而且还为用户们带来了很多新的设计,那么红米13c怎么关闭自动更新呢?下面就让本站小编来为大家简单介绍功能吧,大家有需要的话可以来一起看看哦。红米13c怎么关闭自动更新?1.打开手机设置,点击我的设备。2.点击MIUI版本。3.点击右上角的三个点。4.点击系统更新设置。5.将自动下载和智能更新后面的开关关闭即可。关闭自动更新还是有必要了解一下的,以上这些就是红米13

麒麟操作系统如何提供自动更新和升级功能?麒麟操作系统如何提供自动更新和升级功能?Aug 06, 2023 pm 05:49 PM

麒麟操作系统如何提供自动更新和升级功能?随着科技的不断进步和操作系统的日益重要,用户对于操作系统的稳定性、安全性和功能的要求也越来越高。为了满足用户的需求,操作系统需要提供自动更新和升级功能,及时修复漏洞和添加新功能。麒麟操作系统作为国产自主研发的操作系统,也不例外,它提供了自动更新和升级的功能。在麒麟操作系统中,自动更新和升级的功能主要通过软件包管理器和更

win10安全模式取消自动更新方法win10安全模式取消自动更新方法Jan 06, 2024 pm 11:52 PM

很多用户们在使用电脑的时候,有时候出现了故障只能在安全模式下操作,但是安全模式一直自动更新,带来了不必要的麻烦,其实关闭的方法也不是很难只要禁用一下就好了。win10安全模式怎么取消自动更新:1、按下键盘“Win+R”在运行框内输入“services.msc”点击“确定”2、在弹出的服务中找到“WindowsUpdate”3、把“启动类型”改为禁用,然后点击“应用”即可

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.