1. 程式人生 > >IOS下的應用喚起實現原理

IOS下的應用喚起實現原理

一、什麼是IOS應用喚起

IOS中的應用喚起用來實現以下功能:在瀏覽器中可以通過某些方式開啟IOS手機本地的app,如果該app沒有安裝可以跳轉到該應用對應的App Store的下載頁。

二、App store下載頁連線

App store中某個應用的下載頁連線形如:https://itunes.apple.com/us/app/id399608199。在PC端瀏覽器開啟該連線會跳轉到應用詳情頁的PC端介面。在Safari中開啟該連線,瀏覽器會詢問是否在App Store中開啟該連線,選擇開啟即會自動開啟App Store並跳轉到對應應用的下載介面。

三、URL Schemes

URL SchemesURL很類似,一個

URL可以指向某個網站(如https://www.apple.com指向蘋果官網),也可以指向該網站內部具體的某個頁面(如https://www.apple.com/mac/指向蘋果官網的Mac頁面)。一個URL Schemes也可以指向某個APPweixin://指向微信這個APP)或者APP內部的某個功能(weixin://dl/moments/指向微信朋友圈功能)。

基本URL Schemes指的是如weixin://的這部分。通過這個基本URL Schemes,可以開啟某個IOS APP應用。比如在Safari的位址列中輸入weixin://,瀏覽器就會提示是否開啟微信,選擇開啟,手機就會自動開啟本地的微信應用。

四、IOS應用喚起方法

1.直接跳轉法(支援各個版本IOS系統)

最簡單的方法,在頁面中使用a標籤製作一個按鈕,讓其href指向開啟APP的基本URL Schemes即可。考慮到可能本地沒有安裝,這時需要通過js程式碼讓瀏覽器跳轉到對應的App Store下載頁。可以設定一個合理的反映時間時間,如果超時還沒有開啟應用的話,就跳轉到下載頁面,可以使用setTimeout方法,程式碼如下:

$('a').click(function() {
    location.href = 'weixin://';
    setTimeout(function() {
        location.href = 'https://itunes.apple.com/us/app/id399608199';
    }, 500);
}

2.使用iframe(僅支援IOS8及其以下版本)

通過為body中新增一個隱藏的iframe,其內部的src設定成對應的連線,即可實現該功能,程式碼如下:

var url = {
  open: 'weixin://',  //對應的Scheme
  down: 'https://itunes.apple.com/us/app/id399608199'   //對應的下載地址
};
var iframe = document.createElement('iframe');  //建立一個iframe
var body = document.body;
iframe.style.cssText='display:none;width=0;height=0';  //設定該iframe為不可見的
var timer = null;
var openapp = document.getElementById('openapp');
openapp.addEventListener('click', function() {
  body.appendChild(iframe);   //點選開啟app按鈕後,將這個iframe新增到body中
  iframe.src = url.open;  //設定iframe的src為weixin://,通過這個iframe進行跳轉
  timer = setTimeout(function() {
    wondow.location.href = url.down;  //500ms後跳轉到下載介面
  }, 500);
}, false)

3.使用Universal links(目前僅IOS9支援)

Universal linksIOS9新增的功能,它是一個普通的HTTP連線。通過Universal links,能夠方便的通過傳統的HTTP連結來啟動APP(如果iOS裝置上已經安裝了app), 或者開啟對應下載介面(iOS裝置上沒有安裝app)