最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iOS schem與Universal Link 調(diào)試時(shí)踩坑解決記錄

 更新時(shí)間:2023年01月18日 11:22:20   作者:饞嘴的張先生  
這篇文章主要為大家介紹了iOS schem與Universal Link 調(diào)試時(shí)踩坑解決記錄,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

簡(jiǎn)介

scheme和Universal Link是在iOS中兩種可以在網(wǎng)頁(yè)中點(diǎn)擊回跳到自己預(yù)定的APP的兩種方式。至于這兩種方式需要怎么配置,這里就不做詳細(xì)的介紹了。網(wǎng)上的文章一搜一大堆。今天主要是說(shuō)一下這次的配置過程中遇到的問題。

AppDelegate和SceneDelegate

SceneDelegate是在iOS13的時(shí)候新增的,之前做老項(xiàng)目的迭代更新的時(shí)候很少接觸這個(gè)文件。這回就簡(jiǎn)單的和它交流一下。

對(duì)于這次的交流結(jié)論是:當(dāng)AppDelegate和SceneDelegate兩個(gè)文件共存的時(shí)候,我們不僅僅要關(guān)注AppDelegate中的回調(diào)函數(shù),還要關(guān)注SceneDelegate代理的回調(diào)函數(shù),因?yàn)樵诓煌膇OS系統(tǒng)下走的文件回調(diào)是不一樣的。

在iOS13之前通通走AppDelegate,iOS13之后就會(huì)走SceneDelegate。

問題:在iOS13以上冷啟動(dòng)的時(shí)候不會(huì)走代理函數(shù)!

上面已經(jīng)說(shuō)過在iOS13之前通通走AppDelegate,iOS13之后就會(huì)走SceneDelegate。

如果你用了Scheme方式:

iOS13之前會(huì)走這個(gè)代理函數(shù)

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options{
}

我們只需要在里面多自己相應(yīng)的邏輯處理就可以了,并且不用關(guān)注是冷啟動(dòng)還是APP已經(jīng)在后臺(tái)掛起。都能在這里獲取到你想要的參數(shù)。

iOS13之后會(huì)走

- (void)scene:(UIScene *)scene openURLContexts:(NSSet<UIOpenURLContext *> *)URLContexts{
    UIOpenURLContext *urlContext = URLContexts.anyObject
}

這時(shí)就會(huì)出現(xiàn)問題了,這個(gè)函數(shù)只有在APP在后臺(tái)掛起的時(shí)候才會(huì)走。如果是冷啟動(dòng)的時(shí)候,壓根不會(huì)走這個(gè)函數(shù),從而導(dǎo)致我們拿不到那個(gè)想要跳轉(zhuǎn)的鏈接地址。

如果你用了Universal Link方式:

iOS13之前會(huì)走這個(gè)代理函數(shù)

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray<id<UIUserActivityRestoring>> * __nullable restorableObjects))restorationHandler{
}

我們只需要在里面多自己相應(yīng)的邏輯處理就可以了,并且不用關(guān)注是冷啟動(dòng)還是APP已經(jīng)在后臺(tái)掛起。都能在這里獲取到你想要的參數(shù)。

iOS13之后會(huì)走

- (void)scene:(UIScene *)scene continueUserActivity:(NSUserActivity *)userActivity{
}

這時(shí)就會(huì)出現(xiàn)問題了,這個(gè)函數(shù)只有在APP在后臺(tái)掛起的時(shí)候才會(huì)走。如果是冷啟動(dòng)的時(shí)候,壓根不會(huì)走這個(gè)函數(shù),從而導(dǎo)致我們拿不到那個(gè)想要跳轉(zhuǎn)的鏈接地址。

總結(jié)

在你使用SceneDelegate的時(shí)候不管你是scheme還是Universal Link 都會(huì)在冷啟動(dòng)的時(shí)候不走代理函數(shù)。解決辦法有兩種:
1.你可以不用SceneDelegate這個(gè)文件。這樣就可以避免問題的出現(xiàn)。畢竟現(xiàn)在的APP好像并沒有強(qiáng)制開發(fā)者只用SceneDelegate;
2.在無(wú)數(shù)次的測(cè)試的時(shí)候我們會(huì)發(fā)現(xiàn)在APP冷啟動(dòng)的時(shí)候都會(huì)走SceneDelegate的

- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions

我們可以對(duì)這個(gè)函數(shù)做做文章。 在connectionOptions中有兩個(gè)屬性,一個(gè)是URLContexts另一個(gè)是userActivities,你再看看對(duì)應(yīng)在SceneDelegate的函數(shù)都有對(duì)應(yīng)的形參,所以我們可以在冷啟動(dòng)的時(shí)候獲取一下相應(yīng)的參數(shù)然后從而達(dá)到獲取鏈接參數(shù)的目的;

scheme:
UIOpenURLContext *urlContext = connectionOptions.URLContexts.anyObject;
Universal Link:
NSUserActivity *userActivity =connectionOptions.userActivities.anyObject;

以上就是iOS schem與Universal Link 調(diào)試時(shí)踩坑解決記錄的詳細(xì)內(nèi)容,更多關(guān)于iOS schem Universal Link調(diào)試的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論

庆阳市| 天镇县| 油尖旺区| 东源县| 分宜县| 平舆县| 西昌市| 黄大仙区| 郯城县| 元阳县| 岳普湖县| 花莲市| 军事| 金门县| 桐城市| 东山县| 阿鲁科尔沁旗| 汉阴县| 肇庆市| 子洲县| 塔城市| 大渡口区| 西峡县| 福州市| 佛冈县| 张家港市| 宿州市| 五家渠市| 长顺县| 界首市| 房产| 肇庆市| 深州市| 陇川县| 乐平市| 木里| 资溪县| 凤阳县| 蓝田县| 兴城市| 三亚市|