一、简单使用

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
友盟分享集成

iOS URL Scheme相关推荐

  1. (0089)iOS开发之iOS应用间相互跳转(URL Scheme)

    需求:假设有应用A和应用B两个应用,现在需要从应用A跳转到应用B中.如果手机中没有安装跳到下载页,如果已经安装直接打开APP. 认识URL Scheme URL Schemes是苹果给出的用来跳转到系 ...

  2. Xamarin.Forms 中iOS通过URL Scheme判断应用是否安装

    Xamarin.Forms 中iOS通过URL Scheme判断应用是否安装 在移动应用开发中,经常需要判断一个app是否安装,iOS中有什么方式可以判断app是否安装呢? 这里介绍通过Url Sch ...

  3. 【iOS开发】—— 通过URL Scheme调用外部地图软件

    写项目时,涉及到一个导航到球馆的功能,可以选择在app里加一个地图,但是这个方案接入要一定的时间,还会增加APP的内存占用:所以我选择了通过URL Scheme去调用手机已安装的导航软件来进行导航,这 ...

  4. ios中设置URL Scheme及如何跳转到其他APP中

    URL Scheme的作用 我们都知道苹果手机中的APP都有一个沙盒,APP就是一个信息孤岛,相互是不可以进行通信的.但是iOS的APP可以注册自己的URL Scheme,URL Scheme是为方便 ...

  5. android,ios配置scheme,react-native获取url

    scheme协议定义 scheme 是一种页面之间跳转的协议,不仅可以用于app之间进行跳转,还可以用于 H5 页面跳转到app页面. 通过scheme协议,服务器可以定制化告诉App跳转那个页面,可 ...

  6. 设置IOS平台和Android平台APP的URL Scheme

    URL Scheme的作用 APP可以向手机操作系统注册一个 URL scheme,该 scheme 用于从浏览器或其他应用中启动本应用. 设置IOS平台的URL Scheme IOS应用在info. ...

  7. iOS app url scheme跳转到淘宝商品详情页 唤醒app

    最近涉及的一个业务,在app内的一个广告,点击打开webView,加载的是一个淘宝商品详情页,效果是打开该webView自动跳转至淘宝对应的页面,同时在自己的app仍然加载页面,点击评论等也同样能跳转 ...

  8. iOS 通过URL Scheme跳转到常用的App

    微博开放的接口是最多的(在网上找了个遍) 打开微博: sinaweibo:// 打开微博个人主页: sinaweibo://userinfo?uid=xxxxxxxxx 打开具体某一条微博: sina ...

  9. 【iOS】—— URL Scheme

    URL Scheme URL Scheme是一个非常炫酷的东西,用法很简单,在我们平时使用app的时候,经常一不小心就点入广告,打开了其他的app或者打开了浏览器的某个网站,这个东西就用到了URL S ...

  10. 自定义 URL Scheme 完全指南

    本文转自 Migrant的博客,原文:<The Complete Tutorial on iOS/iPhone Custom URL Schemes> iPhone / iOS SDK 最 ...

最新文章

  1. Swift 与 Objective-C混编xxx-Swift.h File not found
  2. tcp的无延时发送_腾讯网红程序员,详解带宽、延时、吞吐率、PPS 这些都是啥?...
  3. jwt:token的解析
  4. 1024程序员节来啦!!.NET技术圈独家优惠劵,折后再折,赶紧来抢啊
  5. P4103 [HEOI2014]大工程
  6. flink sql udf jar包_编写Hive的UDF(查询平台数据同时向mysql添加数据)
  7. linux 简单命令
  8. 521忘记送大家礼物了,补上!
  9. stm32无源蜂鸣器定时器_使用STM32控制无源蜂鸣器发声播放音乐
  10. 厉害了,苹果爸爸承认让旧 iPhone 变慢!
  11. arcgis js(二)显示三维地图
  12. gcc/g++ 优化标识 -O1 -O2 -O3 -Os -Ofast -Og的作用
  13. JSP 实用程序之简易图片服务器
  14. 机器学习笔记之 K-NEAREST NEIGHBORS
  15. Win10以太网网络电缆被拔出怎么解决
  16. 系统之家U盘 win10返回桌面快捷键是什么
  17. 关于win10 小爱同学UWP版本的安装
  18. 2022云原生峰会开启报名 | 一年一度云原生技术风向标就看这里!
  19. 高通msm8937/msm8953签名方法总结
  20. 倍福--程序拷贝到另一个控制器的方式

热门文章

  1. 【2020】年学而思全套暑秋寒春(1376G)
  2. 在东钿第一次早会分享励志小故事。
  3. kali使用笔记本自带无线网卡_kali破解wifi握手包-GPU破解,速度快到无法想象
  4. 本世纪惊心动魄的粮食战争,中国反败为胜:陈思进--20190701
  5. 01-Springboot优点缺点
  6. Java毕设项目房地产管理系统登录计算机(附源码+系统+数据库+LW)
  7. linux如何关闭netbios服务,Samba 'nmbd' NetBIOS名称服务守护程序拒绝服务漏洞
  8. 在字符串s的第n个字符后面插入字符串t
  9. Mac系统go版本升级
  10. python获取北京时间_python获取标准北京时间的方法