目次
使用Appcan客户端自动更新PHP版本号(全),appcan版本号
ホームページ php教程 php手册 使用Appcan客户端自动更新PHP版本号(全),appcan版本号

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

Jun 13, 2016 am 08:56 AM
バージョンナンバー 自動更新

使用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 までご連絡ください。

ホット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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

win11でWindows Updateを無効にしてドライバーの自動更新を無効にする方法は? win11でWindows Updateを無効にしてドライバーの自動更新を無効にする方法は? Jun 26, 2024 am 12:18 AM

新しいハードウェア デバイスをシステムに接続すると、システムの組み込みドライバー パッケージが認識できない場合、Windows は自動的に Windows Update に接続してドライバーを検索してインストールしようとします。 Windows では、ユーザーの介入なしで Windows Update を通じてデバイス ドライバーを自動的に更新することもできます。この機能は便利なように見えますが、状況によってはドライバーの自動更新機能がユーザーに迷惑を与える可能性があります。たとえば、DaVinciResolve、Adobe Premiere などのユーザーのビデオ ワークフローでは、特定の古いバージョンの Nvidia Studio ドライバーを使用する必要があります。その結果、Windows が使用されます。

Win11で自動アップデートを無効にする方法 Win11で自動アップデートを無効にする方法 Dec 27, 2023 pm 12:53 PM

多くのユーザーは、日常的にコンピューターを使用するときに常にシステムから自動アップデートを受信して​​いるため、コンピューターの速度が低下するだけでなく、システムが停止する原因にもなります。自動アップデートが必要な場合は、自動アップデートを終了する方法を見てみましょう。 Windows 11 システムの自動更新を防ぐ方法 1. まず、デスクトップ上の「この PC」を右クリックし、「管理」を選択します。 2. 開いた「コンピューターの管理」で、「サービス」→「アプリケーション」→「サービス」→「Windows Update」をクリックします。 3. 次に、「Windows update」をダブルクリックし、「スタートアップの種類」を「無効」に設定し、「停止」サービスをクリックして確認します。 4.「復元」タブをクリックして、最初に失われたものを復元します。

win10で自動更新をオフにするグループポリシー方法 win10で自動更新をオフにするグループポリシー方法 Dec 23, 2023 pm 05:07 PM

win10 システムを使用していると、更新の問題がよく発生します。この更新は時々非常に煩わしいので、どうすればこの問題を解決できますか? これには、ローカル グループ ポリシーを入力して設定する必要があります。 Win10 グループ ポリシーで自動更新をオフにする方法: 1. キーボードの「win+R」を押して「ファイル名を指定して実行」を開き、「gpedit.msc」と入力して「OK」をクリックします。 2. [管理用テンプレート] - [Windows コンポーネント] を選択し、ダブルクリックして入ります 3. 次に、[Windows Update] を見つけてダブルクリックして入ります。 4. 右側で「自動更新の構成」を見つけ、ダブルクリックして開きます。 5. 次に「無効」にチェックを入れ、「適用」をクリックします。

Debian のバージョン番号、コードネーム、およびソフトウェア ソース Debian のバージョン番号、コードネーム、およびソフトウェア ソース Feb 20, 2024 am 09:01 AM

Debian は Linux システムの最大のディストリビューションの 1 つですが、そのバージョンの名前にはいつも悩まされていました。そこで、Debian のさまざまなバージョンの名前と関係を整理しました。バージョン番号 (数字) Debian のバージョン番号は、Debian8、9、10、11 などのように数字で直接表されます。 Debian 6 以降、すべてのメジャー ディストリビューションでは、元の数値に 1 が加算されます。たとえば、Debian12 は 2023 年にリリースされます。現在のバージョンに基づいて、小規模な更新は小数点の増加で表されます。たとえば、Debian 12.0 がリリースされた後、その後の更新バージョンは 12.1、12.2 などになります。バージョン番号は比較的従来のものであり、一般的な知識と一致しています。バージョンコード(ニックネーム) バージョン番号に加えて、

WordPress プラグインを自動的に更新する機能を開発する方法 WordPress プラグインを自動的に更新する機能を開発する方法 Sep 05, 2023 am 10:40 AM

自動更新 WordPress プラグインの開発方法 WordPress は非常に人気のあるオープンソースのコンテンツ管理システム (CMS) であり、その機能を拡張する豊富なプラグイン市場があります。プラグインが常に最新で安全であることを保証するために、開発者は自動更新を実装する必要があります。この記事では、自動更新 WordPress プラグインの開発方法を説明し、すぐに開始できるようにコード例を示します。準備 開発を開始する前に、次の主要な手順を準備する必要があります。

Redmi 13c で自動アップデートをオフにする方法は? Redmi 13c で自動アップデートをオフにする方法は? Mar 04, 2024 pm 09:49 PM

今日の携帯電話はますます強力になり、より包括的な機能を備え、ユーザーにさらに快適な体験を提供しています最新の新モデルとして、Redmi13C も多くの機能を備え、ユーザーに多くの新しいデザインを提供します、では、Redmi 13cで自動更新をオフにするにはどうすればよいですか?このウェブサイトの編集者が機能を簡単に紹介しますので、必要な場合はご覧ください。 Redmi 13c で自動アップデートをオフにする方法は? 1. 電話の設定を開き、「マイデバイス」をクリックします。 2. 「MIUI バージョン」をクリックします。 3. 右上隅にある 3 つの点をクリックします。 4. 「システムアップデート設定」をクリックします。 5. 自動ダウンロードとスマート アップデートの背後にあるスイッチをオフにします。自動アップデートをオフにすることについて知っておく必要があります。上記は Redmi 13 です。

Office 2016 のダウンロード時に自動更新をオフにする方法 - Office 2016 のダウンロード時に自動更新をオフにする方法 Office 2016 のダウンロード時に自動更新をオフにする方法 - Office 2016 のダウンロード時に自動更新をオフにする方法 Mar 04, 2024 pm 04:34 PM

オフィスで office 2016 ダウンロードを使用している人は多いと思いますが、office 2016 ダウンロードでの自動更新をオフにする方法をご存知ですか? 以下、編集者が Office 2016 ダウンロードでの自動更新をオフにする方法を説明します。下に。まずコンポーネントを開きます。たとえば、Office 2016 の Excel スプレッドシート ソフトウェアを開くことができます。他のコンポーネントも使用できます。インターフェイスの左上隅にあるファイル メニューをクリックし、図のように操作します。ここの左側にあるアカウント オプションを見つけて開き、操作を開始します。更新オプションの「更新を無効にする」ボタンをクリックします。 Office の更新プログラムでこの製品を更新できないことが示された場合は、設定が完了していることを意味します。将来的に更新する必要がある場合は、

Kirin OS はどのようにして自動アップデートおよびアップグレード機能を提供しますか? Kirin OS はどのようにして自動アップデートおよびアップグレード機能を提供しますか? Aug 06, 2023 pm 05:49 PM

Kirin OS はどのようにして自動アップデートおよびアップグレード機能を提供しますか?テクノロジーが継続的に進歩し、オペレーティング システムの重要性が高まるにつれて、ユーザーはオペレーティング システムの安定性、セキュリティ、機能に対する要求をますます高めています。ユーザーのニーズを満たすために、オペレーティング システムは自動アップデートとアップグレードを提供し、脆弱性を修正し、新機能をタイムリーに追加する必要があります。キリンオペレーティングシステムも国産OSとして例外ではなく、自動アップデート・アップグレード機能を備えています。 Kirin オペレーティング システムでは、自動アップデートおよびアップグレード機能は主にソ​​フトウェア パッケージ マネージャーとアップデート ソフトウェアを通じて行われます。

See all articles