Universal Links 與 Moblink 的探究

一被饿、說在前面的話

Universal Links 針對的是在 Web 中打開 App,Universal LinksScheme 還要牛掰永丝!

二锹漱、MobLink 快速實現(xiàn)

借助 Mob 平臺 簡單實現(xiàn),詳情請見具體 開發(fā)文檔慕嚷。實現(xiàn)還是挺簡單的哥牍,也可以自己創(chuàng)建一個賬號,走一遍流程喝检。

三嗅辣、簡單的 Demo

3.1 簡要介紹

已經(jīng)將我的一個小實驗提交到我的 github UniversalLink8HTML,歡迎下載看看挠说。其中有兩個項目:
UniversalLinkDev:這就是目標項目澡谭。
HTMLDev:模擬的網(wǎng)頁端。
我將代碼打成 zip 包是因為不想做 .gitignore 文件损俭,因為 UniversalLinkDev的 pod 有點難 install蛙奖,我就干脆全部上傳。我 install 的時候重復了好幾次杆兵,不知何故雁仲。應(yīng)該不是 RP 的問題。如果要看具體的現(xiàn)實琐脏,必須要結(jié)合 開發(fā)文檔 來看攒砖。

項目運行

可以先運行 HTMLDev 項目,你能找到這個界面:

Simulator Screen Shot - iPhone 5s - 2018-08-01 at 19.17.46.png

底部的條就是我們想要的效果日裙,這個時候點擊 “打開”吹艇,你沒有安裝 UniversalLinkDev 的情況下,你會跳轉(zhuǎn)到 UniversalLinkDev的下載網(wǎng)頁昂拂。但是現(xiàn)在只是一個測試受神,我寫成了一個我的簡書
關(guān)于上面的這個界面是怎么實現(xiàn)的政钟,主要是根據(jù) Moblink 來實現(xiàn)的一個網(wǎng)頁路克,具體看代碼。

再運行 UniversalLinkDev 項目之后养交,直接關(guān)掉精算,代表在你的設(shè)備上已經(jīng)安裝了 UniversalLinkDev 項目。
再回到 HTMLDev 項目點擊打開碎连,會打開 UniversalLinkDev 項目灰羽,進入指定的界面。

3.2 代碼分析

UniversalLinkDev 項目中,有兩個地方值得注意分別如下:
1廉嚼、AppDelegate 文件中的這個方法:

// Universal Link 激活會執(zhí)行這個方法
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler {
    if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
        [ULPlatform continueUserActivity:userActivity];
    }
    return YES;
}

continueUserActivity:方法可以做類似簡單的操作:

+ (void)continueUserActivity:(NSUserActivity *)userActivity {
    NSURL* webpageURL = userActivity.webpageURL;
    NSURLComponents* components = [NSURLComponents componentsWithURL:webpageURL resolvingAgainstBaseURL:YES];
    
    // path
    NSLog(@"path = %@", components.path);
    NSLog(@"參數(shù) = %@", components.query);
    
    for (NSURLQueryItem* item in components.queryItems) {
        NSLog(@"key = %@\nvalue = %@", item.name, item.value);
        // 僅僅用于測試
        if ([item.name isEqualToString:@"info"]) {
            UINavigationController* navVC = (UINavigationController*)[UIApplication sharedApplication].keyWindow.rootViewController;
            UIViewController* vc = [[UIViewController alloc] init];
            vc.title = item.value;
            vc.view.backgroundColor = [UIColor blueColor];
            [navVC pushViewController:vc animated:YES];
        }
    }
}

2玫镐、UIViewController+MLSDKRestore 中的這兩個方法

// Universal Link 就是通過這個方法找到對應(yīng)的路勁
+ (NSString *)MLSDKPath {
    return @"/demo/a";
}

// Universal Link 通過這個方法將具體的參數(shù)場景傳入控制器
- (instancetype)initWithMobLinkScene:(MLSDKScene *)scene {
    self = [super init];
    self.scene = scene;
    self.title = scene.params[@"title"];
    return self;
}

以上的這兩個地方都是屬于通過 Universal Link 進入 APP 的執(zhí)行方法。這里需要注意的是:application: continueUserActivity: restorationHandler: 只要是通過 Universal Links 進來的都會執(zhí)行怠噪,所以需要對已經(jīng)做了MLSDKRestore 的做過濾恐似。

四、apple-app-site-association 的配置

這個文件傍念,理應(yīng)是我們自己生成的一個 JSON 格式的文件矫夷,應(yīng)該放在自己的另外一個(非當前 Web 域名)域名的服務(wù)器。但是在我上面的 Demo 中憋槐,Mob 平臺已經(jīng)自動在 Mob 平臺 生成了一個這樣的文件 apple-app-site-association 双藕。
具體內(nèi)容如下:

{
"applinks": {
"apps": [],
"details": [{
"appID": "D8Y5E9ZUX3.com.CoderHG.UniversalLinkDev",
"paths": ["*"]
}]
}
}

其中 D8Y5E9ZUX3 是我的 itemID, com.CoderHG.UniversalLinkDev 是 Bundle ID。

五阳仔、所謂的 Moblink 中的高級應(yīng)用

其實就是一個 delegate忧陪,可以將其分成兩類:

第一類

這兩個方法的執(zhí)行時機是項目一啟動的時候,說明了什么近范?說明 Moblink 在項目剛啟動的時候嘶摊,就會去找整個項目中已經(jīng)實現(xiàn) UIViewController+MLSDKRestore 的控制器,然后保存在內(nèi)存中评矩。這里就暴露了一個問題更卒,如果很多的話,對內(nèi)存就會有影響了稚照。

第二類

這個是針對某個場景的操作,也很容易理解俯萌。

六果录、主意事項

6.1 一個大坑

到這里,對 Universal Links 與 Moblink 應(yīng)該有那么一點點的理解了咐熙,接下來介紹一下我遇到的一個大坑:如何測試弱恒?
剛開始的時候,根本不知道如何做測試棋恼,尤其是網(wǎng)頁端返弹。最后從各方得到一個結(jié)論:必須要將自己的網(wǎng)頁提交到網(wǎng)站。厲害了爪飘,于是申請空間义起。最最浪費時間的是 FileZilla, 最后也沒有連接成功师崎。
后來想到使用現(xiàn)在的方式默终,沒想到還 成功 了。
當然還有一個主意點:

<script type="text/javascript" src="https://f.moblink.mob.com/3.0.1/moblink.js?appkey=271db5f52372a"></script>

src 一定要加 https://, 在 Moblink 中是沒有給的齐蔽,后來是我自己加的两疚。

6.2 Moblink 的機密

在調(diào)試的過程中,也發(fā)現(xiàn)使用 Moblink 的 Universal Links含滴,在 application: continueUserActivity: restorationHandler: 中收到的 webpageURL 中的 params 是加密的诱渤。本來不用知道具體是怎么加密的,但是強迫癥就想知道谈况。查看 Moblink 文件發(fā)現(xiàn)一個 Base64勺美, 還以為是 Base64, 但是不對鸦做。后來咨詢了一下官方励烦,他的回復是:不用管,具體如何實現(xiàn)的泼诱,機密不可外露坛掠,不能告訴我

七治筒、總結(jié)

簡書寫得簡單了屉栓,具體的還得看代碼UniversalLink8HTML

參考文章

Universal Links 前端部署采坑記
蘋果官網(wǎng) Support Universal Links

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末耸袜,一起剝皮案震驚了整個濱河市友多,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌堤框,老刑警劉巖域滥,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蜈抓,居然都是意外死亡启绰,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門沟使,熙熙樓的掌柜王于貴愁眉苦臉地迎上來委可,“玉大人,你說我怎么就攤上這事腊嗡∽徘悖” “怎么了?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵燕少,是天一觀的道長卡者。 經(jīng)常有香客問我,道長客们,這世上最難降的妖魔是什么虎眨? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任蟋软,我火速辦了婚禮,結(jié)果婚禮上嗽桩,老公的妹妹穿的比我還像新娘岳守。我一直安慰自己,他們只是感情好碌冶,可當我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布湿痢。 她就那樣靜靜地躺著,像睡著了一般扑庞。 火紅的嫁衣襯著肌膚如雪譬重。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天罐氨,我揣著相機與錄音臀规,去河邊找鬼。 笑死栅隐,一個胖子當著我的面吹牛塔嬉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播租悄,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼谨究,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了泣棋?” 一聲冷哼從身側(cè)響起胶哲,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎潭辈,沒想到半個月后鸯屿,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡把敢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年碾盟,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片技竟。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖屈藐,靈堂內(nèi)的尸體忽然破棺而出榔组,到底是詐尸還是另有隱情,我是刑警寧澤联逻,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布搓扯,位于F島的核電站,受9級特大地震影響包归,放射性物質(zhì)發(fā)生泄漏锨推。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望换可。 院中可真熱鬧椎椰,春花似錦、人聲如沸沾鳄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽译荞。三九已至瓤的,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間吞歼,已是汗流浹背圈膏。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留篙骡,地道東北人稽坤。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像医增,于是被迫代替她去往敵國和親慎皱。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,700評論 2 354

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