deepLink iOS 應(yīng)用到自己APP 記錄
2.自己APP實(shí)現(xiàn)deeplink需要的準(zhǔn)備工作
通過(guò)Xcode添加URL Scheme跳轉(zhuǎn)桨螺,操作步驟如下:
第一步找到URL Types的添加處:TARGETS-info-Urltypes.第二步點(diǎn)擊加號(hào) 添加Url Schemes添加為當(dāng)前APP的標(biāo)識(shí)(bundleID),為了第三方APP跳轉(zhuǎn)
-(BOOL)application:(UIApplication*)application openURL:(NSURL*)url sourceApplication:(NSString*)sourceApplication annotation:(id)annotation
以下為淘寶給出的URL規(guī)范,用來(lái)調(diào)用淘寶客戶端的
寶貝詳情taobao://item.taobao.com/item.htm?id=12688928896
寶貝搜索taobao://s.taobao.com/?q=iphone
店鋪搜索taobao://shopsearch.taobao.com/browse/shop_search.htm?q=iphone
首先,需要定制好跳轉(zhuǎn)協(xié)議的格式 當(dāng)前我們就是使用最簡(jiǎn)單的跳轉(zhuǎn)協(xié)議.
com.deeplink://deeplink.htm?id=123456
com.deeplink代表就是我們第2步時(shí)設(shè)置的Url Schemes
deeplink.htm可以設(shè)置為區(qū)別當(dāng)前要跳轉(zhuǎn)的頁(yè)面
id=123456一般代表頁(yè)面的ID 用來(lái)請(qǐng)求數(shù)據(jù)
其次,便是在打開(kāi)APP時(shí)獲取到這個(gè)跳轉(zhuǎn)協(xié)議,取出其中的值
NSString *scheme =[url scheme];
NSString *host =[url host];
NSString *query =[url query];
之后便是判斷,拿出需要的id進(jìn)行跳轉(zhuǎn)
if(scheme && [schemeisEqualToString:@"com.deeplink"]) { ?
? ?NSString *typeStr = [hostcomponentsSeparatedByString:@"."].firstObject;
? ? ? ?if(typeStr && [typeStrisEqualToString:@"deeplink"]) { ? ? ? ? ? ? ?
? ? ? ?NSString *idStr = [querycomponentsSeparatedByString:@"="].lastObject; ? ? ? ? ? ? ? ? ? ?NSDictionary *dict = @{@"type":@"1",@"id":idStr};
可以參考我使用發(fā)送通知給主頁(yè)控制器,然后通過(guò)主頁(yè)控制器進(jìn)行跳轉(zhuǎn).
解決方法也是參考淘寶的跳轉(zhuǎn),在打開(kāi)淘寶客戶端后會(huì)有一定延遲才跳轉(zhuǎn)到對(duì)應(yīng)的商品頁(yè)面.
關(guān)于接收到通知之后的跳轉(zhuǎn)邏輯這里就不貼出代碼了.
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0* NSEC_PER_SEC)),dispatch_get_main_queue(), ^{
? ? ? [[NSNotificationCenter ? ? ? ?defaultCenter]postNotificationName:@"DEEPLINK"object:nil userInfo:dict];}); ?
}}
NSString*urlString =@"com.deeplink://deeplink.htm?id=123456";
if([[UIApplicationsharedApplication] canOpenURL:[NSURLURLWithString:urlString]]) {
? ? ? ? //若安裝了需要跳轉(zhuǎn)的app->跳轉(zhuǎn)到APP
? ? ? ? NSURL* url = [NSURLURLWithString:[urlString ? ? ? ?stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; ? ? ? ? [[UIApplicationsharedApplication] openURL:url];
}else{
? ? ? ? //若未安裝需要跳轉(zhuǎn)的app->跳轉(zhuǎn)到APP的下載界面 ? ?
? ? ? ? [[UIApplicationsharedApplication] openURL:[NSURLURLWithString:@"itms-apps://itunes.apple.com/cn/app/appname/id1070087534?mt=8"]];
? ? ? ? ?//或者直接顯示web端的頁(yè)面}