APP 之間的跳轉(zhuǎn)

App之間跳轉(zhuǎn)實(shí)現(xiàn)

在談App內(nèi)部的路由之前,先來談?wù)勗趇OS系統(tǒng)間袄秩,不同App之間是怎么實(shí)現(xiàn)跳轉(zhuǎn)的腰奋。

1. URL Scheme方式

iOS系統(tǒng)是默認(rèn)支持URL Scheme的轻绞,具體見官方文檔

比如說窿春,在iPhone的Safari瀏覽器上面輸入如下的命令拉一,會(huì)自動(dòng)打開一些App:


// 打開郵箱
mailto://

// 給110撥打電話
tel://110

在iOS 9 之前只要在App的info.plist里面添加URL types - URL Schemes,如下圖:

image.png

這里就添加了一個(gè)com.ios.Qhomer的Scheme旧乞。這樣就可以在iPhone的Safari瀏覽器上面輸入:


com.ios.Qhomer://

就可以直接打開這個(gè)App了蔚润。

關(guān)于其他一些常見的App,可以從iTunes里面下載到它的ipa文件尺栖,解壓嫡纠,顯示包內(nèi)容里面可以找到info.plist文件,打開它,在里面就可以相應(yīng)的URL Scheme筒繁。


// 手機(jī)QQ
mqq://

// 微信
weixin://

// 新浪微博
sinaweibo://

// 餓了么
eleme://

image.png

當(dāng)然了味混,某些App對(duì)于調(diào)用URL Scheme比較敏感,它們不希望其他的App隨意的就調(diào)用自己者蠕。


- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation
{
    NSLog(@"sourceApplication: %@", sourceApplication);
    NSLog(@"URL scheme:%@", [url scheme]);
    NSLog(@"URL query: %@", [url query]);

    if ([sourceApplication isEqualToString:@"com.tencent.weixin"]){
        // 允許打開
        return YES;
    }else{
        return NO;
    }
}

如果待調(diào)用的App已經(jīng)運(yùn)行了,那么它的生命周期如下:

image.png

如果待調(diào)用的App在后臺(tái)屡贺,那么它的生命周期如下:

image.png

明白了上面的生命周期之后蠢棱,我們就可以通過調(diào)用application:openURL:sourceApplication:annotation:這個(gè)方法,來阻止一些App的隨意調(diào)用甩栈。

image.png
image.png

如上圖泻仙,餓了么App允許通過URL Scheme調(diào)用,那么我們可以在Safari里面調(diào)用到餓了么App量没。手機(jī)QQ不允許調(diào)用玉转,我們?cè)赟afari里面也就沒法跳轉(zhuǎn)過去。

關(guān)于App間的跳轉(zhuǎn)問題殴蹄,感興趣的可以查看官方文檔Inter-App Communication究抓。

App也是可以直接跳轉(zhuǎn)到系統(tǒng)設(shè)置的。比如有些需求要求檢測(cè)用戶有沒有開啟某些系統(tǒng)權(quán)限袭灯,如果沒有開啟就彈框提示刺下,點(diǎn)擊彈框的按鈕直接跳轉(zhuǎn)到系統(tǒng)設(shè)置里面對(duì)應(yīng)的設(shè)置界面。

iOS 10 支持通過 URL Scheme 跳轉(zhuǎn)到系統(tǒng)設(shè)置 iOS10跳轉(zhuǎn)系統(tǒng)設(shè)置的正確姿勢(shì) 關(guān)于 iOS 系統(tǒng)功能的 URL 匯總列表

2. Universal Links方式

雖然在微信內(nèi)部開網(wǎng)頁會(huì)禁止所有的Scheme稽荧,但是iOS 9.0新增加了一項(xiàng)功能是Universal Links橘茉,使用這個(gè)功能可以使我們的App通過HTTP鏈接來啟動(dòng)App。 1.如果安裝過App,不管在微信里面http鏈接還是在Safari瀏覽器畅卓,還是其他第三方瀏覽器擅腰,都可以打開App。 2.如果沒有安裝過App翁潘,就會(huì)打開網(wǎng)頁趁冈。

具體設(shè)置需要3步:

1.App需要開啟Associated Domains服務(wù),并設(shè)置Domains拜马,注意必須要applinks:開頭渗勘。

image.png

2.域名必須要支持HTTPS。

3.上傳內(nèi)容是Json格式的文件一膨,文件名為apple-app-site-association到自己域名的根目錄下呀邢,或者.well-known目錄下。iOS自動(dòng)會(huì)去讀取這個(gè)文件豹绪。具體的文件內(nèi)容請(qǐng)查看官方文檔价淌。

image.png

如果App支持了Universal Links方式,那么可以在其他App里面直接跳轉(zhuǎn)到我們自己的App里面瞒津。如下圖蝉衣,點(diǎn)擊鏈接,由于該鏈接會(huì)Matcher到我們?cè)O(shè)置的鏈接巷蚪,所以菜單里面會(huì)顯示用我們的App打開病毡。

image.png

在瀏覽器里面也是一樣的效果,如果是支持了Universal Links方式屁柏,訪問相應(yīng)的URL啦膜,會(huì)有不同的效果。如下圖:

image.png

以上就是iOS系統(tǒng)中App間跳轉(zhuǎn)的二種方式淌喻。

從iOS 系統(tǒng)里面支持的URL Scheme方式僧家,我們可以看出,對(duì)于一個(gè)資源的訪問裸删,蘋果也是用URI的方式來訪問的八拱。

統(tǒng)一資源標(biāo)識(shí)符(英語:Uniform Resource Identifier,或URI)是一個(gè)用于標(biāo)識(shí)某一互聯(lián)網(wǎng)資源名稱的字符串涯塔。 該種標(biāo)識(shí)允許用戶對(duì)網(wǎng)絡(luò)中(一般指萬維網(wǎng))的資源通過特定的協(xié)議進(jìn)行交互操作肌稻。URI的最常見的形式是統(tǒng)一資源定位符(URL)。

舉個(gè)例子:

image.png

這是一段URI匕荸,每一段都代表了對(duì)應(yīng)的含義爹谭。對(duì)方接收到了這樣一串字符串,按照規(guī)則解析出來榛搔,就能獲取到所有的有用信息旦棉。

這個(gè)能給我們?cè)O(shè)計(jì)App組件間的路由帶來一些思路么齿风?如果我們想要定義一個(gè)三端(iOS药薯,Android绑洛,H5)的統(tǒng)一訪問資源的方式,能用URI的這種方式實(shí)現(xiàn)么童本?

作者:餓了么物流移動(dòng)團(tuán)隊(duì)
鏈接:https://juejin.im/post/5ab85a346fb9a028e52dd16e
來源:掘金
著作權(quán)歸作者所有真屯。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處穷娱。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末绑蔫,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子泵额,更是在濱河造成了極大的恐慌配深,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嫁盲,死亡現(xiàn)場(chǎng)離奇詭異篓叶,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)羞秤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門缸托,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人瘾蛋,你說我怎么就攤上這事俐镐。” “怎么了哺哼?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵佩抹,是天一觀的道長。 經(jīng)常有香客問我取董,道長棍苹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任甲葬,我火速辦了婚禮廊勃,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘经窖。我一直安慰自己坡垫,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布画侣。 她就那樣靜靜地躺著冰悠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪配乱。 梳的紋絲不亂的頭發(fā)上溉卓,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天皮迟,我揣著相機(jī)與錄音,去河邊找鬼桑寨。 笑死伏尼,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的尉尾。 我是一名探鬼主播爆阶,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼沙咏!你這毒婦竟也來了辨图?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤肢藐,失蹤者是張志新(化名)和其女友劉穎故河,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吆豹,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鱼的,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了瞻讽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鸳吸。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖速勇,靈堂內(nèi)的尸體忽然破棺而出晌砾,到底是詐尸還是另有隱情,我是刑警寧澤烦磁,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布养匈,位于F島的核電站,受9級(jí)特大地震影響都伪,放射性物質(zhì)發(fā)生泄漏呕乎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一陨晶、第九天 我趴在偏房一處隱蔽的房頂上張望猬仁。 院中可真熱鬧,春花似錦先誉、人聲如沸湿刽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽诈闺。三九已至,卻和暖如春铃芦,著一層夾襖步出監(jiān)牢的瞬間雅镊,已是汗流浹背襟雷。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留仁烹,地道東北人耸弄。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像晃危,于是被迫代替她去往敵國和親叙赚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 一僚饭、應(yīng)用場(chǎng)景 我們的APP有時(shí)候想直接去到設(shè)置頁面,程序退到后臺(tái)進(jìn)入設(shè)置頁面然后又重新打開胧砰,這樣子總是感覺多做了很...
    phzean閱讀 16,365評(píng)論 10 20
  • 簡述 通過對(duì)比網(wǎng)頁鏈接來理解iOS上的URL Schemes鳍鸵,應(yīng)該就容易多了URL Schemes 有兩個(gè)單詞: ...
    Gary_fei閱讀 3,194評(píng)論 1 5
  • APP之間的跳轉(zhuǎn)需求很普遍,比如我們使用支付寶尉间、微信支付時(shí)偿乖,會(huì)調(diào)起支付寶、微信客戶端哲嘲,支付完成后又返回到我們APP...
    Sky109閱讀 3,719評(píng)論 0 0
  • 一贪薪、微信、qq等自帶瀏覽器無法進(jìn)行app之間的跳轉(zhuǎn) iOS9以后出來了通用鏈接跳轉(zhuǎn)眠副,效果可以看網(wǎng)易新聞画切、今日頭條等...
    方小花c閱讀 1,443評(píng)論 0 1
  • 摘要:簡單實(shí)現(xiàn)iOS應(yīng)用之間的跳轉(zhuǎn),其中一些參數(shù)設(shè)置和邏輯處理不是太正規(guī)(相對(duì)標(biāo)準(zhǔn)化的參考文檔:自定義 URL S...
    Gxdy閱讀 401評(píng)論 0 0