iOS应用程序的跳转和URL Scheme的使用

摘要:
当然系统的APP的URLScheme是优先级高的,不用想着能覆盖系统APP的URLScheme的注册调用。通过各个APP设计的符合苹果的统一规范的URLScheme,系统就会自动去调用相关的APP来完成你的请求。
第一:什么是URL Scheme

与Android的URL Scheme类似,是为方便app之间互相调用而设计的。你可以通过一个类似URL的链接,通过系统的OpenURl来打开该app,并可以传递一些参数。每个URL必须能唯一标识一个APP,如果你设置的URL与别的APP的URL冲突,此时,你的APP不一定会被调用起来,原因是当APP在安装的时候就已经在系统里面注册了此APP的URL Scheme,如果你的一致但是是后安装的,那么系统不会调用你的APP,因为你的APP设置的URL scheme被覆盖了。

当然系统的APP的URL Scheme是优先级高的,不用想着能覆盖系统APP的URL Scheme的注册调用。

第二:URL Scheme有什么作用:

大家知道在IOS系统里面APP之间是相互隔离的,不像Android,每个组件都可以作为一个独立的功能被其他APP调用,但是,IOS系统里面也需要完成类似于三方功能如支付、搜索跳转、导航等等跨APP的功能,怎么实现呢,苹果就使用了URL Scheme来实现了这个功能。通过各个APP设计的符合苹果的统一规范的URL Scheme,系统就会自动去调用相关的APP来完成你的请求。

比如:我们的APP需要使用支付宝的三方支付功能、我的APP需要使用微信分享好的文章,那么此时就可以通过URL Scheme来传递这些数据到支付宝APP或者微信APP,系统会通过这些APP的URL Scheme来调起这些APP,完成你所需要做的跨APP的功能。

第三:怎么使用呢?

假如有2个应用程序A和B,在B程序的 Info.plist 添加一个 URL types 节点,如图:

之后在A程序调用

/**

* 打开B程序界面

*/

- (IBAction)openSina

{

// 每个程序都可以拥有一个自己唯一的URL

// URL组成: 协议头://主机/路径

// http://

// file://

// ftp://

// ...

// 1.获取application对象

UIApplication *app = [UIApplication sharedApplication];

// 2.创建需要打开的应用程序的URL

// 在应用程序跳转中, 只要有协议头即可, 路径可有可无

NSURL *url = [NSURL URLWithString:@"sina://login?myScheme=wangyi"];

// 3.利用application打开URL

if ([app canOpenURL:url]) {

// 3.1判断是否可以打开

[app openURL:url];

}else

{

// 3.2打开App STORE下载

NSLog(@"根据App id打开App STORE");

}

}

就能成功跳转到指定url的应用程序了.

之后还会调用A程序的appdeleage方法

/**

* 当被其他应用程序通过URL打开时就会调用

* @param application 当前的应用程序

* @param url 打开当前程序的URL

* @return 是否成功处理

*/

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url;

/**

* 当被其他应用程序通过URL打开时就会调用(新方法)

*

* @param application 当前的应用程序

* @param url 打开当前程序的URL

* @param sourceApplication 打开当前程序的Bundle identifier

* @param annotation

* @return 是否成功处理

*/

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation;

免责声明:文章转载自《iOS应用程序的跳转和URL Scheme的使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇DDWRT "中继桥接"模式 配置方法Linux驱动虚拟地址和物理地址的映射(转)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

树莓派系统烧录和备份,访问与摄像头接入

每个人各自写出 对树莓派的认识 树莓派其实之前只是听过 但确实不没有见过甚至操作过,只是觉得很高大尚 树莓派的用途 树莓派又称卡片式电脑,外形只有信用卡大小,却具有电脑的所有基本功能,这就是Raspberry Pi电脑板。以SD/MicroSD卡为内存硬盘,卡片主板周围有1/2/4个USB接口和一个10/100 以太网接口(A型没有网口),可连接键盘、鼠标...

Feign 动态URL 解决记录

Feign中使用动态URL请求 (应当是spring-cloud-starter-openfeign,不知道和一般的feign有何差别) 在spring项目下,假设有这样个Feign的消费接口,原来写死请求百度 @FeignClient(value = "test-service", url="http://www.baidu.com") public i...

win10系统VMware Workstation与Device/Credential Guard不兼容怎么办

  一位用户反馈说在win10 64位系统安装VMware Workstation与Device/Credential Guard软件后出现不兼容问题,提示“VMware Workstation 与 Device/Credential Guard 不兼容。在禁用 Device/Credential Guard 后,可以运行 VMware Workst...

怎么彻底关闭卸载删除Cortana小娜进程,最简单

原文地址:https://jingyan.baidu.com/article/90bc8fc8be67bcf653640cfa.html Win10中的Cortana是微软开发的一款个人AI助理,集聊天、通讯、提醒、娱乐和查询等等十八般武艺于一身。小娜虽然很厉害,但一些传统的Windows用户可能觉得这一功能比较鸡肋,想要卸载小娜。其实这也跟Win10中...

推荐两款远程管理Linux工具(基于Windows系统)

推荐两款远程管理Linux工具(基于Windows系统) 1、Xshell 百度百科:Xshell 是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。Xshell可以在Windows界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的。 比如我们使用CentOS...

升级macOS High Sierra遇到的坑

昨天升级了macOS Hgigh Sierra,新系统的优点也是有的,毕竟是传闻多年的APFS文件系统,占用硬盘小一点,速度快一点。缺点也有,有些软件不兼容了。总体来说还是值得升级的。 但是升级的过程,可以说用糟糕来形容。原因有几个,第一个是网速,第二个是国内的Mac Appstore确实不咋地。。过去这么多年了还是这样,偶尔IOS也会遇到下载的坑。 总结...