>  Q&A  >  본문

javascript - 短信里的短地址调起app应用,如何实现?

给用户发送一条短信,
里面有一条短地址,
用户点击就能打开APP首页或指定页面。

这如何实现的?
用的第三方应用还是自己写的?
大神有没有做过类似的例子?
求思路 求指导

大家讲道理大家讲道理2721일 전701

모든 응답(1)나는 대답할 것이다

  • 巴扎黑

    巴扎黑2017-04-11 11:33:27

    可以用掰百度短网址http://dwz.cn/ 或新浪短网址 http://t.cn/,用户点击短网址发起请求,手机系统识别到地址的schema,如果有安装该schema对应的app就会唤起打开,如果没有则可能没有响应或者打开浏览器。

    function AppOpen(schema) {  
        var ua = navigator.userAgent.toLowerCase();  
        //由于ios9以上系统不能直接iframe方式唤起app,需要通过创建a链接才能唤起  
        if ((ua.indexOf('safari') > -1 && (ua.indexOf('os 5') == -1|| ua.indexOf('os 6') == -1|| ua.indexOf('os 7') == -1|| ua.indexOf('os 8') == -1)) {   
        var schemaLinkOpen = document.getElementById('schemaLinkOpen');   
        if (!schemaLinkOpen) {   
            schemaLinkOpen = document.createElement('a');   
            schemaLinkOpen.id = 'schemaLinkOpen';   
            schemaLinkOpen.style.display = 'none';  
            document.body.appendChild(schemaLinkOpen);   
        } schemaLinkOpen.href =schema;  
        // 执行click schemaLinkOpen.dispatchEvent(CustomClickEvent());   
        }   
        var iframeObj = document.createElement("iframe");   
        var startTime = (new Date()).getTime();   
        if (iframeObj != null) {  
             iframeObj.setAttribute("style", "height:0px;width:0px;display:none;");  
            iframeObj.setAttribute("src", scheme);   
            document.body.appendChild(iframeObj);   
            document.body.removeChild(iframeObj);   
            }   
            setTimeout(function () {   
                var endTime = (new Date()).getTime();   
                if (isiPhone) {   
                    if (endTime - startTime < 700) {   
                                    window.open(sHrefUrl, "_parent");   
                                    }   
                                }  
                     }, 550);  
                }  
    function CustomClickEvent() {  
        var clickEvent;   
        if (window.CustomEvent) {   
            clickEvent = new window.CustomEvent("click", {   
            canBubble: true,   
            cancelable: true   
            });   
        } else {   
            clickEvent = document.createEvent('Event');   
            clickEvent.initEvent('click', true, true);   
            }   
        return clickEvent;  
    }  

    회신하다
    0
  • 취소회신하다