#這個帖子 在iOS 9以后可以不用看了屏镊,最近看到有專門的一鍵喚醒的SDK,小伙伴們可以參考一下 魔窗 Mlink?魔窗喚醒 鏈接
常常有這樣的場景痰腮,咱們開發(fā)出來的APP需要進行推廣而芥,比如在頁面頂部來一張大Banner圖片,亦或一張二維碼膀值。但往往我們都是直接給推廣圖片加了一個下載鏈接(App Store中的)棍丐。所以咱們來模擬一下用戶的操作步驟:
1、用戶第一次訪問宣傳頁面? a沧踏、點擊Banner歌逢,進入到APP Store中對應的APP下載頁? b、APP下載頁中提示:安裝翘狱;用戶點擊安裝? c秘案、安裝完成后,APP下載頁中提示:打開潦匈;用戶繼續(xù)點擊打開? d阱高、用戶正常使用APP2、用戶第二次訪問宣傳頁面? a茬缩、點擊Banner赤惊,進入到APP Store中對應的APP下載頁? b、APP下載頁中提示:打開凰锡;用戶直接點擊打開? c未舟、用戶正常使用APP3圈暗、用戶第三次、第四次裕膀、...员串、第N次訪問,操作步驟同2能看出來昼扛,不管是點擊Banner還是掃描二維碼的方式寸齐,對于已經(jīng)安裝過APP的用戶來說,這個體驗都是非常糟糕的野揪。更優(yōu)的體驗是:點擊Banner(或掃描二維碼)后访忿,程序判斷當前系統(tǒng)是否已安裝App瞧栗,如果未安裝斯稳,則自動跳轉(zhuǎn)到App Store下載頁;否則直接打開App迹恐。
在iOS上挣惰,要增加一個APP的大Banner,其實只需要在標簽內(nèi)增加一個標簽即可殴边,格式如:比如加一個百度貼吧的Native APP大Banner憎茂,用下面這串兒代碼:[html] view plaincopy在CODE上查看代碼片派生到我的代碼片? ? 而對于點擊鏈接后,能否直接打開锤岸,可以通過下面的代碼來實現(xiàn)竖幔。
前提條件:你得知道你的APP對應的打開協(xié)議,如貼吧APP是偷,協(xié)議為:com.baidu.tieba:// 拳氢,微信的:weixin:// ,and so on蛋铆。馋评。。貼吧客戶端document.getElementById('openApp').onclick = function(e){
// 通過iframe的方式試圖打開APP刺啦,如果能正常打開留特,會直接切換到APP,并自動阻止a標簽的默認行為
// 否則打開a標簽的href鏈接
var ifr = document.createElement('iframe');
ifr.src = 'laoshi://';
ifr.style.display = 'none';
document.body.appendChild(ifr);
window.setTimeout(function(){
document.body.removeChild(ifr);
},3000)
};當然玛瘸,如果你是設計成一張二維碼蜕青,可以用下面這段代碼:貼吧客戶端document.getElementById('openApp').onclick = function(e){
// 通過iframe的方式試圖打開APP,如果能正常打開糊渊,會直接切換到APP市咆,并自動阻止a標簽的默認行為
// 否則打開a標簽的href鏈接
var ifr = document.createElement('iframe');
ifr.src = 'com.baidu.tieba://';
ifr.style.display = 'none';
document.body.appendChild(ifr);
window.setTimeout(function(){
document.body.removeChild(ifr);
},3000)
};
document.getElementById('openApp').click();
問題來了,怎么知道軟件的打開協(xié)議:
這里介紹再来,如何從URL 打開軟件
首先從Safari跳到APP
既然要想跳到你指定的APP蒙兰,那么就需要在你的APP中定義一個特殊的標示磷瘤,也就是一個URL協(xié)議。
定義URL協(xié)議的如下圖 TARGETS ——> info ——>URL Types——>添加一個URL協(xié)議
\
如圖 其中URL Schemes字段就是你這個APP的特殊標示搜变,而indentifier字段是這個URL協(xié)議的標示采缚。(一個APP可以擁有多個URL協(xié)議)
下面的兩個字段可為空。最后再運行一下你的APP挠他。
接下來就是見證奇跡的時刻了
打開你模擬器中的Safari瀏覽器扳抽,在輸入在地址欄輸入:appABC://
然后回車,結果就是你想要的殖侵。(是不是很簡單贸呢?)
有時候你可能需要在從Safari跳回到APP時傳一些參數(shù),那么又有什么方法可以接收這些參數(shù)呢拢军?
在appdelegate.m文件中寫下如下方法
\
這個方法是系統(tǒng)自動調(diào)用的方法楞陷,意思是:如果APP是通過openURL打開的自動調(diào)用此方法。而參數(shù) url 就是打開APP的特定的URL茉唉。也就是上面的 appABC:// 固蛾,但是怎么通過這個方法傳參呢?
答案就在URL中度陆,你可以在 appABC:// 后面加上任何你想要的字符參數(shù)艾凯,例如appABC://name:wanglei//name:lilei
至于如何把這些參數(shù)給解析出來,就看你怎么處理了懂傀。
下面是 APP(A)跳轉(zhuǎn)APP(B)
前面說了他們之間的原理是一樣的趾诗,從Safari跳到APP是通過打開特定的URL,那么從 APP(A)跳轉(zhuǎn)APP(B)是不是也要打開特定的URL呢蹬蚁?
答案是肯定的恃泪,那么怎么打開這個特定的URL呢,其實在UIApplication里面有這么一個方法openURL缚忧,如下
[[UIApplication shareApplication] openURL:url]
參數(shù)URL為APP(B)特定的URL協(xié)議所表示的URL(后面會附上demo)
至于對參數(shù)的處理同上