一、什么是scheme?

我们知道在ios的程序中,由于沙盒的限制,导致程序之间相互隔离,没有一个有效的办法进行相互通信。但是也不是完全不可能实现,我们可以通过scheme url来实现程序间的通信。

典型的应用就是支付宝,新浪分享,微信分享。当你在一个网页中进行浏览的时候,如果你已经安装了支付宝的话,你点击支付功能的话,就通过设置的scheme url跳转到支付宝的支付界面。

二、配置scheme

如何实现像支付宝那样的功能呢,很简单,通过在ios程序中添加自定义协议(scheme)。在你的应用中的info.plist文件中添加URL Type节点。这个节点包括:这个程序所支持的自定义协议名称,像 http、ftp 这种,一般我们可以设置为程序英文名称,像淘宝客户端中就设置了 taobao,这样 taobao:// 这个形式的 URL 就会关联到淘宝客户端的 App。

注意:亲测对于那个Identifier,目前不知道用处是什么,希望网友给出指正。url scheme 就是要你在其他程序中要回调的url。

三、使用safari或者其他程序调用你自定义的的scheme

使用模拟器调用应用的步骤:
1. 在 Xcode 中运行应用
2. 一旦应用被安装,自定义 URL scheme 就会被注册
3. 通过模拟器的硬件菜单中选择 Home 来关闭应用
4. 启动 Safari
5. 在浏览器地址栏输入之前定义的 URL scheme(如下) 
这样你就可以在浏览器中通过你自定义的scheme调用你的app。
当然你也可以在另外一个app中通过你自定义的scheme调用的你的app。实现步骤:

代码中我们可以通过检测url是不是被定义,如果定义了直接打开url,否则提示未定义。

通过自定义 URL Scheme 向应用传递参数(回调函数)
有时你需要通过自定义 URL 向应用中传递参数。让我们看看该如何完成这个工作。
NSURL 作为从一个应用调用另一个的基础,遵循 RFC 1808 (Relative Uniform Resource Locators) 标准。 因此你所熟悉的基于网页内容的 URL 格式在这里也适用。
在自定义了 URL scheme 的应用中,app delegate 必须实现以下方法: 
从一个应用传递参数到另一个的诀窍是通过 URL。例如,假设我们使用以下的 URL scheme,想传递一个名为 “token”的参数和一个标识注册状态的标志,我们可以像这样创建一个 URL: 

第三方URL:wb2239427625://response?id=C3316AD8-74C0-4B26-9EEF-3A6ECEBF21FF&sdkversion=2.5

在 web 开发中,字符串 ?token=123abct&registered=1 被称作查询询串(query string)。
在被调用(设置了自定义 URL)的应用的 app delegate 中,获取参数的代码如下: 

iOS中scheme详解相关推荐

  1. IOS中Socket详解

    一.网络各个协议:TCP/IP.SOCKET.HTTP等 网络七层由下往上分别为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 其中物理层.数据链路层和网络层通常被称作媒体层,是网络工程 ...

  2. php pcntl fork使用,php中pcntl_fork详解

    pcntl_fork()函数是php-pcntl模块中用于创建进程的函数.(不支持windows) 至于php_pcntl扩展如何安装开启这里就不介绍了,只分析pcntl_fork()这个函数本身. ...

  3. iOS 2D绘图详解(Quartz 2D)之路径(点,直线,虚线,曲线,圆弧,椭圆,矩形)

    前言:一个路径可以包含由一个或者多个shape以及子路径subpath,quartz提供了很多方便的shape可以直接调用.例如:point,line,Arc(圆弧),Curves(曲线),Ellip ...

  4. IOS 多线程04-GCD详解 底层并发 API

    IOS 多线程04-GCD详解 底层并发 API 注:本人是翻译过来,并且加上本人的一点见解. 前言 想要揭示出表面之下深层次的一些可利用的方面.这些底层的 API 提供了大量的灵活性,随之而来的是大 ...

  5. ASP.NET Core 中 HttpContext 详解与使用 |

    ASP.NET Core 中 HttpContext 详解与使用 | Microsoft.AspNetCore.Http 详解 笔者没有学 ASP.NET,直接学 ASP.NET Core ,学完 A ...

  6. 函数中{}输出格式详解(C#)

    Console.WriteLine()函数中{}输出格式详解(C#) Console.WriteLine()函数的格式一直没怎么注意.今天同事问起Console.WriteLine({0:D3},a) ...

  7. Java中CAS详解

    转载自  Java中CAS详解 在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁 锁机制存在以下问题: (1)在多线程竞争下,加锁.释放锁会导致比较多的上下文切换 ...

  8. 【转】图形流水线中坐标变换详解:模型矩阵、视角矩阵、投影矩阵

    转自:图形流水线中坐标变换详解:模型矩阵.视角矩阵.投影矩阵_sherlockreal的博客-CSDN博客_视角矩阵 图形流水线中坐标变换详解:模型矩阵.视角矩阵.投影矩阵 图形流水线中坐标变换过程 ...

  9. oracle itl解析,oracle数据块dump文件中ITL详解

    oracle数据块dump文件中ITL详解 dump出Oracle block后,可以看到事物槽,包含有事物槽号(ITL),XID,UBA,FLAG,LCK,SCN. 本文主要讨论FLAG标记的规则, ...

最新文章

  1. 2013-3-10日记
  2. Connect(); // 2015 简要整理
  3. Linux的默认给home分配多少,Linux 分配/home的磁盘空间给根目录
  4. 万豪旅享家官方商城携手神策数据,数字化礼遇更高质量的用户体验
  5. Linux线程(三)
  6. Arquillian变色龙。 简化您的Arquillian测试
  7. Loadrunner常用15种的分析点
  8. Sql2005 PIVOT运算符的操作
  9. 五个案例“熄灭”Nginx漏洞隐患
  10. 鸽主姓名查询成绩_SQL学习之旅-Select简单查询
  11. 经典神经网络 -- VGG : 设计原理与pytorch实现
  12. Linux性能优化(九)——Kernel Bypass
  13. 分类变量——卡方检验
  14. java:窗体里的标签(图片标签)
  15. Linux下安装SVN与使用
  16. linux系统外接硬盘_linux系统外接存储管理命令
  17. 什么是NVMe硬盘?
  18. LiveData 源码解析(2.4.1 版本)
  19. ubuntu设置全攻略
  20. 【Linux网络服务】Centos7搭建yum服务器

热门文章

  1. CE8301与自激振荡
  2. Opencv中使用ocl模块遇到的问题
  3. 图像目标检测算法总结(从R-CNN到YOLO v3)
  4. oracle 查的数据去重复数据,Oracle查询和过滤重复数据
  5. std::future、std::promise、std::packaged_task、std::async
  6. 基于UCOSII的RS485通信(STM32F107)
  7. 流量不清零:用户开心,运营商无奈
  8. 2022 SMUCTF 永远都对-rui WriteUp
  9. 测试相机的软件叫什么,测年龄的app叫什么(测年龄的相机软件app)
  10. 方程组在原点附近解matlab,Matlab计算题:求解下列非线性方程组在原点附近的根: 9x^2 + 36y^2 + 4z^2 =36 X^2 -2y^2- 20z =0 16x –...