iOS 通过链接打开APP

2019-12-10  本文已影响0人  OwenWong

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
上一篇下一篇

猜你喜欢

热点阅读