初见

iOS URL Scheme

2019-04-26  本文已影响0人  懒人09

在iOS系统中,时常会遇到APP之间的跳转,以及从Web到App的跳转;而iOS系统提供自定义URL Scheme与App进行绑定 ,通过URL Scheme在web浏览器或者其他app中启动本应用。下面介绍URL Scheme的使用方式和参数传递。

URL Scheme的创建

1)在Info.plist文件中添加一行,选择URL types

image.png

2)展开URL types会看到默认已经生成了Item0(如果不是首次创建,则需要手动添加Item),展开Item0,添加URL Identifier,用来唯一标识当前同一类型的URL Scheme,并设置URL Identifier的值,一般格式为域名翻转并拼接urlscheme,eg:com.demo.www.urlscheme

image2.png

3)在Item0下添加一行,选择URL schemes,URL schemes可以添加多个item,在item中输入自定义的scheme的值,用于web或者其他APP跳转调用。

URL Scheme的使用

1)在web中使用

在web中或者safari中将url设置为demoOpen://,即可打开应用。

2)在其他APP中调用

通过以下代码在其他应用中调用,打开本应用。

NSString *customURL = @"demoOpen://"; 
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:customURL]];
URL Scheme的参数传递

在打开应用时传递的参数需要与url get请求的方式一样,将参数拼接在demoOpen://

eg.

NSString *customURL = @"demoOpen://?token=123abct&registered=1";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:customURL]];
URL Scheme的回调

在AppDelegate中实现以下两个方法:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation

1)上面的两个函数作用是一致的只是参数不同而已,函数的返回值是BOOL,如果为YES表示可以打开,NO表示不可以打开应用程序。

2)通过sourceApplication判断identifier是否一致。

3)调用url.scheme进行判断来源并根据不同scheme进行不同的处理。

4)调用url.query获取到参数字符串,然后进行解析获取key-value。

参数解析:

    NSString *queryString = url.query;
    
    if ([queryString isKindOfClass:[NSString class]] && queryString.length > 0) {
        
        NSData *parData = [[NSData alloc] initWithBase64EncodedData:[queryString dataUsingEncoding:NSUTF8StringEncoding] options:NSDataBase64DecodingIgnoreUnknownCharacters];
        
        if (parData.length > 0) {
            
            NSDictionary *parDict = [NSJSONSerialization JSONObjectWithData:parData options:NSJSONReadingMutableContainers error:nil];
            
            if ([parDict isKindOfClass:[NSDictionary class]]) {
                
            }
            
        }
        
    }
URL Scheme-跳转第三方应用的回跳解析

几乎所有项目都会有分享功能,集成第三方SDK后通过SDK提供的跳转接口进行分享app的跳转,当分享完成后再跳回app(当然这个跳回app不是用户点击状态栏左上角的返回应用按钮),这个跳回app就是第三方app动态调用已注册的URLScheme进行跳回的。

以微信分享为例:

1)在微信开发者后台创建应用,获取APPID

2)在项目中集成SDK,调用微信Api注册APPID

3)添加URL Scheme,item为APPID

这样就成功绑定微信回跳应用的URL Scheme,也就是APPID。

上一篇下一篇

猜你喜欢

热点阅读