Demos
JumpToOtherAppDemo
JumpToYeluDemo
一、需求分析
有時(shí)候,會(huì)遇到這樣的需求:需要我們從應(yīng)用跳轉(zhuǎn)到系統(tǒng)的設(shè)置選項(xiàng)或者另外一個(gè)應(yīng)用。
二、情景
1.如果是跳轉(zhuǎn)到設(shè)置選項(xiàng),需要找出對(duì)應(yīng)的URL schemes,具體有:
打開(kāi)Wifi設(shè)置
URL:prefs:root=WIFI
打開(kāi)藍(lán)牙服務(wù)
URL:prefs:root=Bluetooth
示例代碼:
NSURL *appURL = [NSURL URLWithString:@"prefs:root=WIFI"];
if ([[UIApplication sharedApplication] canOpenURL:appURL])
{
[[UIApplication sharedApplication] openURL:appURL];
}
2.如果是跳轉(zhuǎn)到另外一個(gè)應(yīng)用,同樣需要知道目標(biāo)應(yīng)用的URL schemes(獲取方法具體見(jiàn)三)。與情景1不同的是,該情景還需要設(shè)置目標(biāo)應(yīng)用的URL schems白名單。
具體步驟是:
a. 在項(xiàng)目的info.plist文件中添加LSApplicationQueriesSchemes;
b.在LSApplicationQueriesSchemes添加目標(biāo)應(yīng)用的URL schemes。
現(xiàn)在,需要跳轉(zhuǎn)到名為寧波手機(jī)閱讀的應(yīng)用,已經(jīng)知道其URL schemes為GoetheBook。
示例代碼:
// 打開(kāi)寧波手機(jī)閱讀,需要先設(shè)置LSApplicationQueriesSchemes的白名單(具體看info.plist)
NSURL *appURL = [NSURL URLWithString:@"GoetheBook://"]; // GoetheBook通過(guò)該應(yīng)用的ipa獲取得知
if ([[UIApplication sharedApplication] canOpenURL:appURL])
{
[[UIApplication sharedApplication] openURL:appURL];
}else{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"https://itunes.apple.com/cn/app/ning-bo-shou-ji-yue-du/id590210090?mt=8"]];
}
特殊情況:如果沒(méi)有在項(xiàng)目的info.plist中設(shè)置寧波手機(jī)閱讀的URL schems白名單,控制臺(tái)會(huì)報(bào)錯(cuò):
-canOpenURL: failed for URL: "GoetheBook://" - error: "This app is not allowed to query for scheme GoetheBook"
3.再建一個(gè)新的demo(JumpToYeluDemo),讓其跳轉(zhuǎn)到上一個(gè)demo(JumpToOtherAppDemo)。
首先,需要在JumpToOtherAppDemo設(shè)置其URL Types,具體步驟見(jiàn)截圖:
接下來(lái),就在JumpToYeluDemo中設(shè)置yelu的白名單,具體步驟見(jiàn)截圖:
示例代碼:
- (IBAction)jumpToYelu:(id)sender {
NSURL *appURL = [NSURL URLWithString:@"yelu://"];
if ([[UIApplication sharedApplication] canOpenURL:appURL])
{
[[UIApplication sharedApplication] openURL:appURL];
}
}
三、如何獲取APP store上應(yīng)用的URL schemes
參考連接:Get URL Scheme of any app
步驟簡(jiǎn)要說(shuō)明
- Right click on a app in iTunes, 'Show in Finder'
- Duplicate the app to Desktop
- Change .ipa to .zip
- Unzip and open the Payload folder
- Right click on app, 'Show Package Contents'
- Open 'Info.plist' in a text editor app like TextWrangler
- Search '<key>CFBundleURLSchemes</key>'
- Between the <string> tag you can find the URL
按照該方法,可以找到寧波手機(jī)閱讀的URL schemes有:
chaoxingshare、GoetheBook、wxe135470d1e14350d、MLOpen。通過(guò)嘗試,GoetheBook可以滿(mǎn)足需求。
參考資料與鏈接
iOS9 URL Scheme 適配_引入白名單概念(見(jiàn)Demo3)