應(yīng)用之間相互跳轉(zhuǎn)

應(yīng)用之間的跳轉(zhuǎn)在做第三方登陸,分享的時(shí)候一般會(huì)用到。當(dāng)設(shè)備安裝有指定的應(yīng)用的時(shí)候,就可以從當(dāng)前應(yīng)用跳轉(zhuǎn)到指定應(yīng)用,并且能夠傳遞消息。
iOS SDK 提供了一個(gè)叫做url scheme的機(jī)制來實(shí)現(xiàn)這個(gè)功能。
首先在被調(diào)用的應(yīng)用中我們需要在項(xiàng)目的info.plist文件里添加一些信息

1.png

如圖所示配置即可。我們現(xiàn)在假設(shè)被調(diào)用的應(yīng)用是B應(yīng)用,正常運(yùn)行的是A應(yīng)用。
URL Schemes 這是是用來讓A應(yīng)用來找到B應(yīng)用的標(biāo)志。
URL Identifier 這個(gè)不太確定是用來做什么的,我最后刪去了這條信息 還是可以正常跳轉(zhuǎn)。
自定義 URL Scheme 完全指南

這個(gè)時(shí)候已經(jīng)配置完畢了。然后就用可以在A應(yīng)用中來寫代碼 跳轉(zhuǎn)到B應(yīng)用了。
NSURL * url = [NSURL URLWithString:@"mqq://"]; if ([[UIApplication sharedApplication] canOpenURL: url]) { [[UIApplication sharedApplication] openURL: url]; }
這里mqq是用來調(diào)QQ的。 如果只是單純的調(diào)用B應(yīng)用。 urlString就應(yīng)該是@"URL Schemes :" 如果要傳遞一些消息就應(yīng)該是@"mqq://?name=jack&age=33"。 這樣就能順利調(diào)用B應(yīng)用同時(shí)在B應(yīng)用的AppDelegate里可以重寫這樣一個(gè)方法。
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { return YES; }
url 這個(gè)鏈接中存儲(chǔ)了跳轉(zhuǎn)的url scheme以及參數(shù)列表,我們通過[url scheme]方法獲取前者;用[url query]方法獲取?之后的參數(shù)列表。
這里我還發(fā)現(xiàn)一個(gè)問題。參數(shù)列表不能出現(xiàn)漢字,否則無法成功跳轉(zhuǎn)。
像騰訊或者新浪微博他們的文檔中應(yīng)該有url scheme的傳值標(biāo)準(zhǔn)。
sourceApplication就是A應(yīng)用的bundleID。

但是這個(gè)時(shí)候我并沒有成功調(diào)用起B(yǎng)應(yīng)用。因?yàn)槲衣┑袅艘患虑椤?錯(cuò)誤信息是這樣的。xxxx - error: "This app is not allowed to query for scheme xxxx"。然后查閱了資料發(fā)現(xiàn)了問題的所在。
直接附上解決方法的博文。canOpenURL: failed for URL

最后編輯于
?著作權(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),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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