Url Scheme
Url Scheme
Url Scheme(url 协议),顾名思义就是用于提供一个对外协议,用于第三方app或者网页唤起该应用。不同的app应该拥有不同的Scheme,避免与一些应用较为广泛的app使用相同的Scheme。通过Url Scheme不仅可以唤起应用,还能够在唤起时传递参数。
ios Url Scheme配置
1.选中项目,点击Info,打开URL Types。
2.添加一条Url Scheme
一个app可以同时拥有多个Scheme协议
Identifier:标示符可以和项目标示符相同,也可以随意填写
URL Scheme:这就是我们请求的协议
做好上面这一步后,xcode会自动在Info.plist中给你添加以下参数,你也可以直接在Info.plist中添加Url Scheme。
3.捕获第三方唤起请求
(1)在AppDelegate中添加以下方法
// 已废弃(适配),NS_DEPRECATED_IOS(4_2, 9_0)
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
return YES;
}
// 新方法,NS_AVAILABLE_IOS(9_0);
-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options{
}
(2)实现-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options方法并解析传递的参数
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options{
NSString *urlStr = url.absoluteString;
BOOL ret = [urlStr hasPrefix:@"TestApp://test"];
if(ret){
//打印参数
NSLog(@"url query:%@",[url query]);
//将参数转换为字典
NSArray *paramsArray = [[url query] componentsSeparatedByString