美文网首页初见
iOS URL Scheme

iOS URL Scheme

作者: 懒人09 | 来源:发表于2019-04-26 14:05 被阅读0次

    在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。

    相关文章

      网友评论

        本文标题:iOS URL Scheme

        本文链接:https://www.haomeiwen.com/subject/adbfnqtx.html