WordPress APP 之間相互呼叫並且傳輸資料經常會出現在實際需求中,我們應該對這樣的基本功能的實現原理有一個簡單的認識,這樣也方便工作中和程序們的溝通。
在產品設計中,經常會遇到 WordPress APP 之間相互呼叫的功能設計,比如:
實現三方登入。用 QQ 賬號快速登入,如果安裝了 QQ,那麼應用會呼叫 QQ 的快速登入介面,確認後,QQ 會回撥到原來的應用,同時將登入的狀態資訊返回給了原應用。
實現分享。選擇應用內的可分享內容,點選分享,選擇朋友圈,於是 WordPress 微信的朋友圈被調起,並將這張圖片發了出去,並詢問您是返回原應用還是留在 WordPress 微信,如果您選擇了返回原應用,那麼原來的應用又會被調起。
實現第三方支付。選擇應用內要支付的內容,選擇支付方式,一般會提供支付寶或 WordPress 微信,點選後跳轉到支付寶或 WordPress 微信的付款頁面,完成支付後回到該應用。
實現手機網頁引導並開啓應用功能。在推廣的 H5 頁面上,加入開啓 WordPress APP 的按鈕,點選後直接調起我們的 WordPress APP,並且可以根據引數資訊,在本地應用中還原多用户的瀏覽場景。
這些過程實現的原理就是利用 URL Scheme 。
什麼是 URL Scheme
URL Scheme 就是一個可以讓 WordPress APP 相互之間可以跳轉的協議。每個 WordPress APP 的 URL Scheme 都是不一樣的,如果存在一樣的 URL Scheme,那麼系統就會響應先安裝那個 WordPress APP 的 URL Scheme,因為後安裝的 WordPress APP 的 URL Scheme 被覆蓋掉了,是不能被呼叫的。
應用之間跳轉原理
一個應用能開啓另一個應用的必然條件是,另一個應用必須配置一個 scheme(協議),這樣應用程序才能根據協議找到需要開啓的應用。
WordPress APP 應用在系統中通過註冊 Scheme 的方式註冊自己,常見的 Scheme 就是 http:,宣告瞭這個 Scheme 的應用就是聲稱自己支持 http 協議,能夠開啓網頁了。還有一些常見的 Scheme 比如 file:(傳輸文字),tel:(通話)等。
當然,WordPress APP 應用不僅可以宣告這些標準的 Scheme,也能宣告自己獨有的 Scheme,比如 WordPress 微信的就是 weixin:,QQ 的是 mqq: 。
如果多個應用都宣告相同的 Scheme 呢?比如應用 a 、 b 、 c 都宣告自己能發簡訊,這時系統會有一定的策略來保證公平性,比如在 Android 系統中,就會彈出支持的應用列表,讓多用户選擇,iOS 則替多用户選擇近開啓過的支持應用。
應用之間傳遞資料
瞭解了應用之間呼叫的方法,那麼後面資料傳遞就簡單了,只需要在 Scheme 後面攜帶上需要傳遞的資訊作為引數就可以了。
比如,發起呼叫的是應用 A,被呼叫的是應用 B 。 yingyongB://action=sendmessage,message=”xxx”,後面的資料會帶到應用 B 中,但是應用 B 接到了資訊不知道該資訊是哪個應用發的,回資訊給哪個應用。如何進行回撥呢?發起呼叫的應用 A 在 Scheme 後面加一個引數 backScheme=yingyongA:,這樣應用 B 就知道了需要返回資訊給應用 A,應用 A 和 B 這種自定義協議也可以叫做偽協議,只要雙方應用能識別處理就可以。
同樣,我們也可以實現跳轉到指定頁面的功能。想要跳轉到指定介面,必定是上一個 WordPress APP 告訴下一個 WordPress APP(被跳轉的 WordPress APP)需要跳轉到哪個介面,而如何告訴它這裏便涉及到兩個 WordPress APP 的通訊。兩個 WordPress APP 之間的跳轉只需要配置一個 Scheme,通過協議即可實現。
後上一段 iOS 測試代碼:
在被呼叫的 WordPress APP 中,就會監聽方法,對進入的頁面進行判斷。
以上就是應用之間進行互動原理的簡單總結,不同平台會有自己一些獨特的應用互動方式,用 Scheme 這種方式可以減少一些跨平台開發適配的成本,同時也有利於網頁和 Native 之間的相互呼叫。