推荐JLRoutes路由跳转

NSScanner

在寻找更加灵活的页面跳转和通知,我遇见了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 操作的更多相关文章

  1. IOS URL scheme

    常用URL scheme查询 http://handleopenurl.com/scheme QQ: mqq://新浪微博: weibo:// (sinaweibo://)腾讯微博: tencentw ...

  2. iOS App 自定义 URL Scheme 设计(转自COCOACHINA)

    在 iOS 里,程序之间都是相互隔离,目前并没有一个有效的方式来做程序间通信,幸好 iOS 程序可以很方便的注册自己的 URL Scheme,这样就可以通过打开特定 URL 的方式来传递参数给另外一个 ...

  3. ios 自定义URL Scheme 设计

    在 iOS 里,程序之间都是相互隔离,目前并没有一个有效的方式来做程序间通信,幸好 iOS 程序可以很方便的注册自己的 URL Scheme,这样就可以通过打开特定 URL 的方式来传递参数给另外一个 ...

  4. iOS 唤起APP之URL Scheme

    什么是URL Scheme 简单的说,由于苹果选择使用沙盒机制来保障用户的隐私和安全,APP只能访问自己沙盒数据,但同时也阻碍了应用间合理的信息共享.因此苹果提供了一个可以在APP之间跳转的方法:UR ...

  5. iOS 自定义 URL Scheme 完全指南

    http://www.cocoachina.com/industry/20140522/8514.html “”   阅读器 自定义URL Scheme 本文转自Migrant的博客,原文:<T ...

  6. [Tool] 取得APP的Store URL Scheme (Android、iOS)

    [Tool] 取得APP的Store URL Scheme (Android.iOS) 前言 在企业网站中,如果希望使用URL连结的方式,开启Store APP来下载APP(非网页下载).开发人员可以 ...

  7. React Native之配置URL Scheme(iOS Android)

    React Native之配置URL Scheme(iOS Android) 一,需求分析 1.1,需要在网站中打开/唤起app,或其他app中打开app,则需要设置URL Scheme.比如微信的是 ...

  8. iOS 禁用`URL Scheme`和`Universal Link`(通用链接)

    为什么要禁用URL Scheme和Universal Link(通用链接) 通常我们APP中都会嵌套一些web页面,有时我们的web页面会被DNS劫持从而跳转到其他APP中:或者是某些APP的Univ ...

  9. iOS通过URL Scheme启动app(收集了常用的app的URL Scheme)

    URL Scheme不仅可以打开其他的app,当然你也能为自己的app设置URL Scheme 1.如何设置给app设置URL Scheme 添加URL types字段数组 设置URL identif ...

随机推荐

  1. java script第一篇(按钮全选的实现)

    今天刚学了java script,记录下学习新知识的点滴.以下是操作步骤.鉴于我是初级者,如有错误,恳请读者指正.万分谢谢. 1.新建一个文档(用NotePad软件,为了使得在浏览器中打开不是乱码,在 ...

  2. arcgis api for js共享干货系列之二自定义Navigation控件样式风格

    arcgis api for js默认的Navigation控件样式风格如下图: 这样的风格不能说不好,各有各的爱好,审美观,这里也不是重点,这里的重点是如何自定义一套自己喜欢的样式风格呢:自己自定义 ...

  3. ZeroC Ice启用SSL通讯的配置

    Zeroc ICE ( Internet Communications Engine )中间件号称标准统一,开源,跨平台,跨语言,分布式,安全,服务透明,负载均衡,面向对象,性能优越,防火墙穿透,通讯 ...

  4. 蓝牙协议中的SBC编码

    一.从信息的传输说起  上图是一个典型的蓝牙耳机应用场景.手机上的音频信息经过编码以后通过蓝牙协议被蓝牙耳机接收,经过解码以后,蓝牙耳机成功获取手机上的音频信息,然后再转化为振动被人耳识别.这是一个 ...

  5. Android如何自定义dialog

    ; window.setAttributes(lp); // set the confirm button if (positiveButtonClickListener != null) { ((B ...

  6. 11、项目经理要阅读的书籍 - IT软件人员书籍系列文章

    项目经理是负责软件项目的总体把控的角色.项目经理在项目中是一个管理者的角色,他需要对项目的9大领域进行学习,同时针对项目的范围.进度.沟通和风险进行处理,让项目能够按时保质保量的完成. 项目经理需要学 ...

  7. Hibernate 系列 06 - 对象在JVM中的生命周期

    引导目录: Hibernate 系列教程 目录 Java对象通过new命令进行创建,Java虚拟机(Java Virtual Machine,JVM)会为新的Java对象在内存中开辟一个新空间以存放次 ...

  8. IntelliJ IDEA安装及jsp开发环境搭建

    一.前言 现在.net国内市场不怎么好,公司整个.net组技术转型,就个人来说还是更喜欢.net,毕竟不是什么公司都像微软一样财大气粗开发出VS这样的宇宙级IDE供开发者使用,双击sln即可打开项目, ...

  9. The user specified as a definer ('root'@'%') does not exist 异常解决

    参考:http://www.cnblogs.com/Magicam/archive/2013/07/22/3207382.html 权限问题,授权 给 root  所有sql 权限 mysql> ...

  10. 从零自学Hadoop(18):Hive的CLI和JDBC

    阅读目录 序 Hive CLI(old CLI) Beeline CLI(new CLI) JDBC Demo下载 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出 ...