最近做項目遇到這麼一個需求:從APP 跳轉到 Safari 然後再跳回APP 。以前做過從APP 跳到Safari ,很簡單,這裡就不多說了。重點說一下從Safari跳回到APP,以及從APP跳到APP。(其實這兩個幾乎是一回事。)
首先從Safari跳到APP
既然要想跳到你指定的APP,那麼就需要在你的APP中定義一個特殊的標示,也就是一個URL協議。
定義URL協議的如下圖 TARGETS ——> info ——>URL Types——>添加一個URL協議
如圖 其中URL Schemes字段就是你這個APP的特殊標示,而indentifier字段是這個URL協議的標示。(一個APP可以擁有多個URL協議)
下面的兩個字段可為空。最後再運行一下你的APP。
接下來就是見證奇跡的時刻了
打開你模擬器中的Safari浏覽器,在輸入在地址欄輸入:appABC://
然後回車,結果就是你想要的。(是不是很簡單?)
有時候你可能需要在從Safari跳回到APP時傳一些參數,那麼又有什麼方法可以接收這些參數呢?
在appdelegate.m文件中寫下如下方法
這個方法是系統自動調用的方法,意思是:如果APP是通過openURL打開的自動調用此方法。而參數 url 就是打開APP的特定的URL。也就是上面的 appABC:// ,但是怎麼通過這個方法傳參呢?
答案就在URL中,你可以在 appABC:// 後面加上任何你想要的字符參數,例如appABC://name:wanglei//name:lilei
至於如何把這些參數給解析出來,就看你怎麼處理了。
下面是 APP(A)跳轉APP(B)
前面說了他們之間的原理是一樣的,從Safari跳到APP是通過打開特定的URL,那麼從 APP(A)跳轉APP(B)是不是也要打開特定的URL呢?
答案是肯定的,那麼怎麼打開這個特定的URL呢,其實在UIApplication裡面有這麼一個方法openURL,如下
[[UIApplication shareApplication] openURL:url]
參數URL為APP(B)特定的URL協議所表示的URL(後面會附上demo)
至於對參數的處理同上
下面是APP(A)與APP(B)相互跳到轉的demo