URL Scheme的作用?能拿来做什么?
一、什么是url scheme?
URL scheme是系统提供的一种机制,它可以由应用程序注册,然后其他程序通过url scheme来调用该应用程序。
它分为两部分:一部分是系统默认的url scheme,另外一部分是应用程序自己注册的url scheme。
例如:mailto:这种就属于系统默认的一种机制。访问一个mailto的url链接,可以直接调用本机的邮件客户端,如:
目前它已经被windows、OS X、gnome、ios以及Android支持。
典型工作机制示意图:
二、URL schem能拿来做什么?
通过在程序中嵌入一个url,然后调用其他应用程序来完成外部程序的功能调用。
例如上述例子,我想发邮件,就可以在内部嵌入一个mailto的url,当用户需要发送邮件的时候,他只需要点击当前窗口下的mailto链接,然后直接跳转到邮件客户端,并可以自动填写好一些内容。
移动端可能应用就更加典型了。
例如,我想一键发送当前APP中的内容到微信朋友圈?没关系,只需要嵌入一条微信的相关url scheme就行了,用户点击这个按钮,就可以完成一键发朋友圈,方便快捷,提高用户体验。
亦或者,可以在APP调用微信的扫一扫,那么就可以白嫖一下微信快速的扫一扫功能了。
我们都知道苹果手机中的APP都有一个沙盒,APP就是一个信息孤岛,相互是不可以进行通信的。但是iOS的APP可以注册自己的URL Scheme,URL Scheme是为方便app之间互相调用而设计的。我们可以通过系统的OpenURL来打开该app,并可以传递一些参数。
例如:你在Safari里输入www.alipay.com,就可以直接打开你的支付宝app,前提是你的手机装了支付宝。如果你没有装支付宝,应该显示的是支付宝下载界面,点击会跳到AppStore的支付宝下载界面。
URL Scheme必须能唯一标识一个APP,如果你设置的URL Scheme与别的APP的URL Scheme冲突时,你的APP不一定会被启动起来。因为当你的APP在安装的时候,系统里面已经注册了你的URL Scheme。
一般情况下,是会调用先安装的app。但是ios的系统app的URL Scheme肯定是最高的。所以我们定义URL Scheme的时候,尽量避开系统app已经定义过的URL Scheme。
注册URL Scheme
1.在info.plist里添加URL types
每一个项目里面都会有一个info.plist配置文件。找到info.plist,右键选择Add Row,然后选择URL types。如图所示:
2.添加URL Schemes
添加完URL types,点击展开。右键选择Add Row,添加URL Schemes:
3.设置URL Schemes
设置URL Schemes为iOSDevTip
4.设置URL Identifier
URL Identifier是自定义的 URL scheme 的名字,一般采用反转域名的方法保证该名字的唯一性,比如 com.iOSStrongDemo.www
添加成功启动提示
为了方便测试,我们在AppDelegate里面添加一个UIAlertView,当app被成功打开时,会提出提示:
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL*)url
{
// 接受传过来的参数
NSString *text = [[url host] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"打开啦"
message:text
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alertView show];
return YES;
}
Safari启动自定义的URL Schemes APP
既然已经配置好URL Schemes,那么我们可以来款速测试一下,我们设置的URL Schemes是否有效。打开Safari,在地址栏里输入:iOSDevTip://
果然成功打开:
也可以在地址栏中输入:iOSDevTip://com.iOSStrongDemo.www。也是可以打开注册了URL Schemes的APP的。
通过另一个APP启动注册了URL Schemes的APP
NSString *url = @"iOSDevTip://";
// NSString *url = @"iOSDevTip://com.iOSStrongDemo.www";
if ([[UIApplication sharedApplication]
canOpenURL:[NSURL URLWithString:url]])
{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];
}
else
{
NSLog(@"can not open URL scheme iOSDevTip");
}
打开注册iOSDevTip的APP格式为: URL Scheme://URL identifier,直接调用URL Scheme也可打开程序, URL identifier是可选的。
URL Scheme的作用?能拿来做什么?相关推荐
- URL Scheme的作用是应用间调用
URL Scheme的作用 我们都知道苹果手机中的APP都有一个沙盒,APP就是一个信息孤岛,相互是不可以进行通信的.但是iOS的APP可以注册自己的URL Scheme,URL Scheme是为方便 ...
- ios中设置URL Scheme及如何跳转到其他APP中
URL Scheme的作用 我们都知道苹果手机中的APP都有一个沙盒,APP就是一个信息孤岛,相互是不可以进行通信的.但是iOS的APP可以注册自己的URL Scheme,URL Scheme是为方便 ...
- 设置IOS平台和Android平台APP的URL Scheme
URL Scheme的作用 APP可以向手机操作系统注册一个 URL scheme,该 scheme 用于从浏览器或其他应用中启动本应用. 设置IOS平台的URL Scheme IOS应用在info. ...
- URL scheme是什么?能拿来做什么?
一.什么是url scheme? URL scheme是系统提供的一种机制,它可以由应用程序注册,然后其他程序通过url scheme来调用该应用程序. 它分为两部分:一部分是系统默认的url sch ...
- MobLink网页跳转app指定界面技术简介之 URL Scheme
URL Scheme是什么 由于苹果的app都是在沙盒中,相互是不能访问数据的.但是苹果还是给出了一个可以在app之间跳转的方法:URL Scheme.简单的说,URL Scheme就是一个可以让ap ...
- android url scheme 跳转传值,如何自定义 URL Scheme 进行跳转
一.URL Scheme 简介和作用 在 :// 之前的部分就称为 URL Scheme. 也就是说 http://www.jianshu.com/ 的 URL Scheme 就是 http . 更多 ...
- url scheme Linux,自定义URL Scheme完全指南
iPhone / iOS SDK 最酷的特性之一就是应用将其自身"绑定"到一个自定义 URL scheme 上,该 scheme 用于从浏览器或其他应用中启动本应用. 注册自定义 ...
- (0089)iOS开发之iOS应用间相互跳转(URL Scheme)
需求:假设有应用A和应用B两个应用,现在需要从应用A跳转到应用B中.如果手机中没有安装跳到下载页,如果已经安装直接打开APP. 认识URL Scheme URL Schemes是苹果给出的用来跳转到系 ...
- 自定义 URL Scheme 完全指南
本文转自 Migrant的博客,原文:<The Complete Tutorial on iOS/iPhone Custom URL Schemes> iPhone / iOS SDK 最 ...
最新文章
- 将Spring Boot项目打包成jar包war包
- Confluence 6 配置 HTTP 超时设置
- 数据中心行业在能源转型中将发挥重要作用
- MDT2010 Client PE 镜象通过PXELinux 或PXEGrub来启动
- IP协议详解---Linux学习笔记
- 程序中调用命令行命令,不显示那个黑黑的DOS窗口
- 论文浅尝 | 利用 RNN 和 CNN 构建基于 FreeBase 的问答系统
- spring加载application.xml异常
- JAVA基础——toString()方法,java基础面试笔试题
- Netty工作笔记0081---编解码器和处理器链梳理
- ZInt支持中文例子
- Flink Event Time , Processing Time 和 Ingestion Time概念
- Nginx 单IP绑定多域名配置 顶级域名重定向到www域名
- 开机显示输入最佳预设值_电脑显示输入最佳预设值并重新开机是什么意思
- 机器学习的学习经验总结!
- Gitlab回滚到上次提交
- JAVA日记之SpringJdbcTemplate/声明式事务控制 ----喝最烈的酒.
- knn K近邻算法python实现
- STM32(三) ENC28J60以太网(一)
- “一个扫描枪一张表”,韵达选择 TDengine 应对每日亿级数据量
热门文章
- Python字符串格式化--format()方法
- 计算机游戏运行程序的完整过程,如何充分的利用我电脑的内存去运行一个程序(游戏)...
- python答题器_JavaScript教程之一个基于chrome扩展的自动答题器
- 我的游戏学习日志54———类型游戏策划(1)—动作游戏(1)
- 微信支付团队获 2 亿奖金,人均 20 万,再算上年终奖,网友:酸哭了!
- 论文图清单、表清单自动生成
- java.lang.UnsupportedClassVersionError: org/hibernate/transform/ResultTransformer
- MySQL 复制(四:复制原理)
- DataGirdView和bindingNavigator进行分页
- AutoCAD.net Jig实例1 动态标尺