外部鏈接打開APP跳轉(zhuǎn)到目標(biāo)頁面

背景:

應(yīng)產(chǎn)品需求,外部鏈接打開微脈,并跳轉(zhuǎn)到相應(yīng)目標(biāo)頁面。前期我們使用了第三方-魔窗來完成這個(gè)功能。但是通過一年的使用發(fā)現(xiàn)-魔窗很不穩(wěn)定,經(jīng)常出現(xiàn)打不開連接的現(xiàn)象?;谶@種原因,我開始研究新的方案,不能讓微脈存在那么大的隱患。

構(gòu)思:

為了不把這種風(fēng)險(xiǎn)交到第三方手中,所以開始思考完全由我們自己實(shí)現(xiàn)。

實(shí)現(xiàn)方案:

由服務(wù)端通過短信方式把連接發(fā)送到患者手機(jī)上--患者點(diǎn)擊鏈接,打開H5(我們?cè)约簩懀?點(diǎn)擊去APP(去下載)--打開App(打開appStore)- 進(jìn)入app --進(jìn)行數(shù)據(jù)連接解析--進(jìn)行邏輯跳轉(zhuǎn)。

步驟:

一:配置接收端


1、選中工程文件,TARGETS -> Info,找到最下面的URL Types項(xiàng)添加一個(gè)Item;

2、將URL Schemes設(shè)置為WMAppLink(大小寫都可以,推薦小寫)。


上圖最顯而易見

二:在主端(H5)添加打開接收端方法

1、添加一個(gè)按鈕,并實(shí)現(xiàn)點(diǎn)擊事件;

2、拼接參數(shù)到字符串wmapplink://后面;

3、配置鏈接,實(shí)現(xiàn)蘋果打開第三方協(xié)議。(備注這里和H5端約定連接模式:第一部分是:wmapplink://

第二部分是:keyName=CommentRouter

第三部分是:?flag=toDoctor&id=123456&name=茭白

參數(shù)分別用 p1 p2 p3? p4? p5等拓展名

總共的拼接是:wmapplink://keyName=CommentRouter?flag=toDoctor&p1=123456&p2=茭白)

三:在接收端實(shí)現(xiàn)接收參數(shù)方法

1、打開AppDelegate.m文件;

2、添加系統(tǒng)自帶代理方法,接收Url參數(shù)。

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options

3:為了各業(yè)務(wù)分離以及減少AppDelegate的業(yè)務(wù)量,故創(chuàng)建一個(gè)AppDelegate+Link類別。具體實(shí)現(xiàn)方案寫在方法

-(void)applicationBusinessProcessWithURL:(NSURL *)url{

/**

* 利用 url.host 可以得到 keyName=CommentRouter

* 利用url 和公共方法可以 獲取參數(shù)

*/

NSMutableDictionary *dic =[self turnDictionaryparametersWithURL:url];

[self jumpTagetWithFlag:url.host withParamer:dic];

}

利用以下方法把URL中的參數(shù)解析為字典

-(NSMutableDictionary *)turnDictionaryparametersWithURL:(NSURL *)url{

NSString *urlstring = [NSString stringWithFormat:@"%@",url];

NSArray *array = [urlstring componentsSeparatedByString:@"?"];

NSString? *paramerStr = [array lastObject];

NSArray *paramerArr = [paramerStr componentsSeparatedByString:@"&"];

NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];

for (NSString * string in paramerArr) {

NSArray *paramersArr = [string componentsSeparatedByString:@"="];

[dic setObject:[paramersArr lastObject] forKey:[paramersArr firstObject]];

}

return dic;

}

最后在以下方法處理業(yè)務(wù)邏輯

-(void)jumpTagetWithFlag:(NSString *)keyName withParamer:(NSMutableDictionary *)paramer{

if ([keyName isEqualToString:@"keyName=CommentRouter"]) {

//判斷來的方向的

NSString * flag = [paramer objectForKey:@"flag"];

if ([flag isEqualToString:@"toDoctor"]) {

//去醫(yī)生詳情頁面

?}

}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容