从浏览器跳转到app
通过URL Scheme
的方式启动应用和参数的传递,要先创建URL Scheme
。
- 可以在
info.plist
里手动添加URL types
,URL identifier
,URL Schemes
像这样:
- 也可以在
info
标签下的URL Types
下,直接填写。
在Safari
中直接在浏览器的地址栏中输入dsny://
,就可以跳转到app里了。
注意:如果
Bundle Identifier
和 设置的URL identifier
不一致,系统会弹出提示框,询问是否跳转。
从一个app跳转到另一个app
还记得这样的跳转吧,它可以从当前app调到iMessage
,sms://
其实就是iMessage
的URLScheme
:
1
| [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms://1851826****"]];
|
同样的道理,在一个app里写入如下的代码,就可以跳转到刚才设置URLScheme的app里了:
1
| [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"dsny://"]];
|
如果app之间跳转还需要通信的话,参数可以这样传递:
1
| [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"dsny://?name=123&sex=2"]];
|
可以这样接收:
1 2 3 4 5 6 7 8 | - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { NSLog(@"调用的应用程序的Bundle ID是: %@", sourceApplication); NSLog(@"URL scheme:%@", [url scheme]); NSLog(@"URL query: %@", [url query]); return YES; } |
再扩展想一下,我们经常写的跳转到微信,微博授权分享,不就是把三方给我们提供的AppKey写到URLScheme。我们调用sdk方法使app跳到微信,微信就可以通过AppKey顺利跳回我们的app。
从一个app跳转到系统设置的子页面
stackoverflow上找到的:
- prefs:root=General&path=About
- prefs:root=General&path=ACCESSIBILITY
- prefs:root=AIRPLANE_MODE
- prefs:root=General&path=AUTOLOCK
- prefs:root=General&path=USAGE/CELLULAR_USAGE
- prefs:root=Brightness
- prefs:root=General&path=Bluetooth
- prefs:root=General&path=DATE_AND_TIME
- prefs:root=FACETIME
- prefs:root=General
- prefs:root=General&path=Keyboard
简单的列举几个,没有的子页面可以去这里找。更多
添加这段代码:
1
| [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=WIFI"]];
|
这样还不够,还需创建个app的URL Scheme
,只填写prefs就可以了。
至于为什么这么写,暂时还没有研究。