携帯ブラウザでアプリを起動


少し寂しいですが、自信を持って携帯電話の開発に入ったとき、携帯電話のwebアプリがpcのように火をつけると思います.私が受け取った最初の需要がブラウザでクライアントを普及させることができることを誰が知っていますか.私たち自身がどのようにh 5がどのように怒っているかにかかわらず、ボスたちの中心は実はappの上にあります.しかし、私たちも自分を恨んではいけません.ある日私たちはきっと主流になると信じています.言うまでもなく、ブラウザの制限のため、ローカルリソースに直接アクセスすることはできません.ユーザーがクライアントをインストールしているかどうかを判断するのは言うまでもありません.他の方法でしかできません.
の準備を
まずAppでSchema登録をする必要がありますが、具体的にはどうすればいいのか、ここでは言いません.やりやすい.
げんりコード
原理はschema方式でクライアントを開くと、携帯電話の現在フォーカスしているビューがブラウザではなく、ブラウザはsettimoutとsetIntervalメソッドを一時的に実行しないことです.
以下はテンセント微博を例に挙げる
function redirect(){
  location.href="TencentWeibo://xxx";
  var t = Date.now();
  setTimeout(function(){
    //      100    settimeout      
    if(Date.now()-t  
  

, android ios , app, 。 iframe 。 iframe app

var loadIframe = null;function createIframe(){
  var iframe = document.createElement("iframe");
    iframe.style.cssText = "display:none;width:0px;height:0px;";
    document.body.appendChild(iframe);
    loadIframe = iframe;}function redirect(){
  loadIframe.src="TencentWeibo://xxx";
  var t = Date.now();
  setTimeout(function(){
    if(Date.now()-t  
  

, :

  • 1、iosの バージョンのsafariにページが つからないプロンプトが され、settimeoutメソッドが されます.
  • 2、Androidのchromeでは がない
  • のバグはしばらく していません.もし が ったら、 えてください. は を いかけてこのバグを します.2つ はchromeの を に かなければなりません. :(Android Intents with Chrome)
    き は の りです.
    /**
     *       app  
     * 
     */;var mobileAppInstall = (function(){var ua = navigator.userAgent,
            loadIframe,
            win = window;function getIntentIframe(){
        if(!loadIframe){
            var iframe = document.createElement("iframe");
            iframe.style.cssText = "display:none;width:0px;height:0px;";
            document.body.appendChild(iframe);
            loadIframe = iframe;
        }
        return loadIframe;}function getChromeIntent(url){//           
        return  "intent://t.qq.com/#Intent;scheme="+url+";package=com.tencent.WBlog;end";}var appInstall = {
        isChrome:ua.match(/Chrome\/([\d.]+)/) || ua.match(/CriOS\/([\d.]+)/),
        isAndroid:ua.match(/(Android);?[\s\/]+([\d.]+)?/),
        timeout:500,
        /**
         *     appurl,      ,  h5url
         * @param {Object} appurl     
         * @param {Object} h5url  http  
         */
        open:function(appurl,h5url){
            var t = Date.now();
            appInstall.openApp(appurl);
            setTimeout(function(){
                if(Date.now() - t  
      

    safari

    ios 6.0 app


    でappをインストールするかどうかを する
    ではSchema でアプリを こうとするとテンセント は らしい.
    //       WeixinJSBridge.invoke("getInstallState", {packageName: "com.tencent.WBlog",packageUrl: "TencentWeibo://"}, function(e) {
        var n = e.err_msg;
        if(n.indexOf("get_install_state:yes") > -1){
          alert("    ");
        } })//   WeixinJSBridge.invoke("addDownloadTask", {task_name: "    ",task_url: "http://softfile.3g.qq.com/msoft/180/2104/2104/WBlog_4.2.1_100000024_131210163458a.apk",file_md5: "31C49560B20057ECBB4C7C52D35B00DB"}, function(t) {})