iOS URL Scheme

一、简单使用

URL Scheme是能让其它APP通过连接来访问你的APP的一个比较特殊的URL。
在项目 > TARGETS > info > URL Types 设置你的APP URL Scheme如下图:
在这里插入图片描述

然后在浏览器中输入连接mytestapp:// 搜索就会进入AppDelegate的代理方法(iOS 9.0+)
在这里插入图片描述

也可以设置参数:mytestapp://aa?key=value
在这里插入图片描述

以上通过safari浏览器调用起我们的APP,但在实际开发其它APP如果想通过URL Scheme调用起这个APP需要额外设置该APP的URL Scheme白名单(具体看第二部分内容)。比如这时另外创建一个项目通过以下方法调用时会出现如下图中的错误:

NSURL *url = [NSURL URLWithString:@"mytestapp://aa?key=value"];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
    if (@available(iOS 10.0, *)) {
        [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:nil];
    } else {
        [[UIApplication sharedApplication] openURL:url];
    }
}

在这里插入图片描述

这新项目info.plist文件中添加之前APP的 scheme 白名单就可以正常跳转了:

<key>LSApplicationQueriesSchemes</key>
<array>
  <string>mytestapp</string>
</array>

二、URL Scheme白名单设置

当你的APP要调用其它APP时,你需要给这些APP设置对应的URL Scheme白名单。

问题描述:

在iOS9下涉及到平台客户端跳转,系统会自动到项目info.plist下检测是否设置平台Scheme。对于需要配置的平台,如果没有配置,就无法正常跳转平台客户端。

应用场景:

支持客户端的分享和授权,跳转三方地图导航等需要配置Scheme白名单。

具体方法:

1、在项目的info.plist中添加LSApplicationQueriesSchemes,类型为数组

2、然后给它添加需要支持的项目,类型为字符串类型。

注意:

1、在iOS9中,如果没有添加需要的Scheme白名单,系统会打印类似如下提示:

-canOpenURL: failed for URL: "baidumap://" - error: "This app is not allowed to query for scheme baidumap"
-canOpenURL: failed for URL: "iosamap://" - error: "This app is not allowed to query for scheme iosamap"
-canOpenURL: failed for URL: "qqmap://" - error: "This app is not allowed to query for scheme qqmap"

(也说明了客户端中使用了-canOpenURL:方法)

2、如果添加了需要的Scheme白名单,系统依然会打印类似如下信息,说明你的手机未安装对应的APP。

-canOpenURL: failed for URL: "baidumap://" - error: "未能完成操作。(“OSStatus”错误 -10814。)"
-canOpenURL: failed for URL: "qqmap://" - error: "未能完成操作。(“OSStatus”错误 -10814。)"

3、上面两点是客户端需要打开三方地图导航的例子,在分享、授权操作中也是,在一些接入文档中也是说明得很详细。

Defining a Custom URL Scheme for Your App
友盟分享集成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值