iOS - URL Scheme 操作
在寻找更加灵活的页面跳转和通知,我遇见了JLRoutes
,从而学习使用URL Scheme来定义界面入口。以前从来没有使用过,不过很多大厂和流行的框架都普遍使用URL Scheme,一直单枪匹马的我必须要与时俱进了否则会Out~
1.预热###
在info.plist中增加一个URL Schemes,如:lvSch。
在Safari中输入:lvSch:// 即可跳进App内。
注:Schemes需要设计完整,其实我更喜欢叫它某个App的别名。
应用场景:
1.在A的App内的H5中链接,点击链接,跳入B的App内指定界面。
如:在微信App浏览知乎H5,点击特定图标进入知乎App查看。
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"*跳转到B内部的Scheme,次Scheme需要B内部已经填写好*"]];
2.如何跳到B的App内指定的界面呢?
可以拼接Scheme的格式,例如:Scheme: com.bApp.www://NewsDetail.id122(NewsDetail.id122代表新闻详情页,请求id是122)。
2.为何我使用JLRoutes?###
可以注册很多Pattern,方便~
3.JLRoutes学习使用的一些总结###
3.1 给App起一个专属名字####
例如:Pin软件
的Schemes为Pin
其中有一个动作 - 抓图到微信,Schemes为:Pin://gifsender?src=auto&dst=wechat
info.plist中起的Schemes我形容为入口(别名)。至于进入入口干啥就看后面参数和格式如何规范定义了。
3.2 使用JLRoutes在App内注册各种各样的Scheme####
首先,我们需要明白一个问题,在Info.plist里面我们可以定义很多Scheme,例如:bAppScheme1,bAppScheme2,...
其次,我们需要获取类似URL的protocol那样的一个Route头:
/// Returns the global routing scheme (this is used by the +addRoute methods by default)
+ (instancetype)globalRoutes;(对routesForScheme:的封装,Scheme为自定义静态字符串对象:JLRoutesGlobalRoutesScheme)
/// Returns a routing namespace for the given scheme
+ (instancetype)routesForScheme:(NSString *)scheme;(这个我们使用,scheme参数可以是bAppScheme1,bAppScheme2,...)
然后,我们可以在Route中注册我们设计好的格式:
/// 注册一个优先级默认为0的routePattern给一个Scheme
- (void)addRoute:(NSString *)routePattern handler:(BOOL (^__nullable)(NSDictionary<NSString *, id> *parameters))handlerBlock;
/// 注册多个优先级默认为0的routePattern给一个Scheme
- (void)addRoutes:(NSArray<NSString *> *)routePatterns handler:(BOOL (^__nullable)(NSDictionary<NSString *, id> *parameters))handlerBlock;
/// 注册一个优先级为priority的routePattern给一个Scheme(上两个API的priority参数默认为0)
- (void)addRoute:(NSString *)routePattern priority:(NSUInteger)priority handler:(BOOL (^__nullable)(NSDictionary<NSString *, id> *parameters))handlerBlock;
3.3 代码####
iOS - URL Scheme 操作的更多相关文章
- IOS URL scheme
常用URL scheme查询 http://handleopenurl.com/scheme QQ: mqq://新浪微博: weibo:// (sinaweibo://)腾讯微博: tencentw ...
- iOS App 自定义 URL Scheme 设计(转自COCOACHINA)
在 iOS 里,程序之间都是相互隔离,目前并没有一个有效的方式来做程序间通信,幸好 iOS 程序可以很方便的注册自己的 URL Scheme,这样就可以通过打开特定 URL 的方式来传递参数给另外一个 ...
- ios 自定义URL Scheme 设计
在 iOS 里,程序之间都是相互隔离,目前并没有一个有效的方式来做程序间通信,幸好 iOS 程序可以很方便的注册自己的 URL Scheme,这样就可以通过打开特定 URL 的方式来传递参数给另外一个 ...
- iOS 唤起APP之URL Scheme
什么是URL Scheme 简单的说,由于苹果选择使用沙盒机制来保障用户的隐私和安全,APP只能访问自己沙盒数据,但同时也阻碍了应用间合理的信息共享.因此苹果提供了一个可以在APP之间跳转的方法:UR ...
- iOS 自定义 URL Scheme 完全指南
http://www.cocoachina.com/industry/20140522/8514.html “” 阅读器 自定义URL Scheme 本文转自Migrant的博客,原文:<T ...
- [Tool] 取得APP的Store URL Scheme (Android、iOS)
[Tool] 取得APP的Store URL Scheme (Android.iOS) 前言 在企业网站中,如果希望使用URL连结的方式,开启Store APP来下载APP(非网页下载).开发人员可以 ...
- React Native之配置URL Scheme(iOS Android)
React Native之配置URL Scheme(iOS Android) 一,需求分析 1.1,需要在网站中打开/唤起app,或其他app中打开app,则需要设置URL Scheme.比如微信的是 ...
- iOS 禁用`URL Scheme`和`Universal Link`(通用链接)
为什么要禁用URL Scheme和Universal Link(通用链接) 通常我们APP中都会嵌套一些web页面,有时我们的web页面会被DNS劫持从而跳转到其他APP中:或者是某些APP的Univ ...
- iOS通过URL Scheme启动app(收集了常用的app的URL Scheme)
URL Scheme不仅可以打开其他的app,当然你也能为自己的app设置URL Scheme 1.如何设置给app设置URL Scheme 添加URL types字段数组 设置URL identif ...
随机推荐
- 二胎上位之路:html5报表和原生报表的笑尿撕逼
前段时间,小编和我们移动端产品经理之间发生了一场罕见的撕逼大战. (看到撕逼二字,估计读者朋友们来劲了,呵呵呵……) 事情起因是这样的.小编基于对客户需求以及同行产品的了解,发了一篇关于报表在各种屏幕 ...
- FineReport实现EXCEL数据导入自由报表
在制作填报报表的时候,对于空白填报表,常常导出为Excel,派发给各部门人员填写后上交.如何能避免手动输入,直接将Excel中的数据导入到填报表中提交入库呢? 这里以一个简单的员工信息填报示例进行介绍 ...
- 关于从Activity A跳转到Activity B ,其中Activity A中有一个VideoView,Activity B中有一个MediaPlayer。
两个不同的视频的跳转, 前面我是在onStop()方法中销毁VideoView(因为MediaPlayer是全局共用的,而VideoView内包含MediaPlayer),但是每次进入Activity ...
- iOS之获取经纬度并通过反向地理编码获取详细地址
_locationManager = [[CLLocationManager alloc] init]; //期望的经度 _locationManager.desiredAccuracy = kCLL ...
- Android自定义ViewGroup
视图分类就两类,View和ViewGroup.ViewGroup是View的子类,ViewGroup可以包含所有的View(包括ViewGroup),View只能自我描绘,不能包含其他View. 然而 ...
- Spring 资源文件处理
Java中,不同来源的资源抽象成URL,通过注册不同的handler(URLStreamHandler)来处理不同来源的资源的读取逻辑.一般handler的类型使用不同的前缀(协议,protocal) ...
- 【转】MySql中的函数
原文:http://www.cnblogs.com/kissdodog/p/4168721.html MySQL数据库提供了很多函数包括: 数学函数: 字符串函数: 日期和时间函数: 条件判断函数: ...
- ANSI Common Lisp Practice - My Answers - Chatper - 3
Ok, Go ahead. 1 (a) (b) (c) (d) 2 注:union 在 Common Lisp 中的作用就是求两个集合的并集.但是这有一个前提,即给的两个列表已经满足集合的属性了.具体 ...
- Ajax中POST和GET的区别
Get和Post都是向服务器发送的一种请求,只是发送机制不同. 1. GET请求会将参数跟在URL后进行传递,而POST请求则是作为HTTP消息的实体内容发送给WEB服务器.当然在Ajax请求中,这种 ...
- 使用Guid做主键和int做主键性能比较
使用Guid做主键和int做主键性能比较 在数据库的设计中我们常常用Guid或int来做主键,根据所学的知识一直感觉int做主键效率要高,但没有做仔细的测试无法 说明道理.碰巧今天在数据库的优化过程中 ...