美文网首页
iOS 通过链接打开APP

iOS 通过链接打开APP

作者: OwenWong | 来源:发表于2019-12-10 17:10 被阅读0次

    iOS中的App是一个信息孤岛,相互是不可以进行通信的。但是iOS的APP可以注册自己的URL Scheme,从而实现App之间互相调用,并且传递一些参数。

    实现步骤:

    1、添加一个URL协议:TARGETS --> info --> URL Types --> 添加URL协议
    2、填写URL Schemes(协议头,要求唯一,如微信的是:weixin://),此处测试写入:demo;
    3、填写Identifier(可选),通常写入Bundle ID,此处测试写入:com.admin.Demo。


    URL Schemes.png

    到此,已经配置好URL Schemes,现在可以测试看看设置的URL Schemes是否有效。打开Safari,在地址栏里输入:demo://(也可以在地址栏中输入:demo://com.admin.Demo)。如需传入参数,链接可写成这样:demo://com.admin.Demo?key1=value1&key2=value2,然后通过下边方法接收url并解析参数:

    - (BOOL)application:(UIApplication *)application
                openURL:(NSURL *)url
                options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
        // Add any custom logic here.
        NSString *urlStr  = url.absoluteString;
        if([urlStr hasPrefix:@"demo://com.admin.Demo"]) {
            NSRange range = [urlStr rangeOfString:@"?"];
            if (range.location != NSNotFound) {
                NSMutableDictionary *infoDict = [NSMutableDictionary dictionary];
                
                NSString *paramStr = [urlStr substringFromIndex:range.location +1];
                NSArray *paramsArr = [paramStr componentsSeparatedByString:@"&"];
                for (int i = 0; i <paramsArr.count; i++) {
                    NSString *tmpStr = paramsArr[i];
                    NSRange rangeTmp = [tmpStr rangeOfString:@"="];
                    
                    NSString *keyStr = [tmpStr substringToIndex:rangeTmp.location];
                    NSString *valueStr = [tmpStr substringFromIndex:rangeTmp.location +1];
                    [infoDict setValue:valueStr forKey:keyStr];
                }
               // 操作infoDict
            }
            return YES;
        }
        
        return NO;
    }
    

    另:

    协议头URL Schemes:也可以写作www.alipay.com(一个网址,对应或可跳转一个APP下载页面)。

    weixin_alipay.png

    相关文章

      网友评论

          本文标题:iOS 通过链接打开APP

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