Demos
JumpToOtherAppDemo
JumpToYeluDemo
一、需求分析
有时候,会遇到这样的需求:需要我们从应用跳转到系统的设置选项或者另外一个应用。
二、情景
1.如果是跳转到设置选项,需要找出对应的URL schemes,具体有:
打开Wifi设置
URL:prefs:root=WIFI
打开蓝牙服务
URL:prefs:root=Bluetooth
示例代码:
NSURL *appURL = [NSURL URLWithString:@"prefs:root=WIFI"];
if ([[UIApplication sharedApplication] canOpenURL:appURL])
{
[[UIApplication sharedApplication] openURL:appURL];
}
2.如果是跳转到另外一个应用,同样需要知道目标应用的URL schemes(获取方法具体见三)。与情景1不同的是,该情景还需要设置目标应用的URL schems白名单。
具体步骤是:
a. 在项目的info.plist文件中添加LSApplicationQueriesSchemes;
b.在LSApplicationQueriesSchemes添加目标应用的URL schemes。
现在,需要跳转到名为宁波手机阅读的应用,已经知道其URL schemes为GoetheBook。
示例代码:
// 打开宁波手机阅读,需要先设置LSApplicationQueriesSchemes的白名单(具体看info.plist)
NSURL *appURL = [NSURL URLWithString:@"GoetheBook://"]; // GoetheBook通过该应用的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"]];
}
特殊情况:如果没有在项目的info.plist中设置宁波手机阅读的URL schems白名单,控制台会报错:
-canOpenURL: failed for URL: "GoetheBook://" - error: "This app is not allowed to query for scheme GoetheBook"
3.再建一个新的demo(JumpToYeluDemo),让其跳转到上一个demo(JumpToOtherAppDemo)。
首先,需要在JumpToOtherAppDemo设置其URL Types,具体步骤见截图:
接下来,就在JumpToYeluDemo中设置yelu的白名单,具体步骤见截图:
示例代码:
- (IBAction)jumpToYelu:(id)sender {
NSURL *appURL = [NSURL URLWithString:@"yelu://"];
if ([[UIApplication sharedApplication] canOpenURL:appURL])
{
[[UIApplication sharedApplication] openURL:appURL];
}
}
三、如何获取APP store上应用的URL schemes
参考连接:Get URL Scheme of any app
步骤简要说明
- 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
按照该方法,可以找到宁波手机阅读的URL schemes有:
chaoxingshare、GoetheBook、wxe135470d1e14350d、MLOpen。通过尝试,GoetheBook可以满足需求。