当我们给用户发送一条短信,里面有一条短链接,当用户点击短链接就能打开APP首页或指定页面。是不是很酷?那么这是如何实现的呢?用的第三方应用还是自己写的?小编今天就给大家揭秘。
其实,实现的方法很简单。可以使用mrw短网址http://mrw.so或缩我短网址 http://suo.im来实现(当然,新浪的t.cn短网址也可以,但是t.cn没有数据统计功能。)用户点击短链接发起请求,短链接跳转到真实的链接,然后系统识别到了真实链接里面的schema,如果有安装该schema对应的app就会唤起打开,如果没有则可能没有响应或者打开浏览器。具体代码如下:
function AppOpen(schema) {
var ua = navigator.userAgent.toLowerCase();
//由于ios8以上系统很有可能不能直接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");
}
}