推荐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. android SQLite数据库总结

    SQLite SQLite是一种超轻量级的嵌入式数据库,大小只有几百KB,但是其语法支持标准SQL语法,同时还遵循了数据库的ACID事务,所以学过其他数据库的开发人员都很容易掌握其使用. sql语法就 ...

  2. AC算法学习笔记

    1.算法流程图 (1)    void Init() 此函数是初始化函数,用来给fail数组和goto数组初始化值. (2)    void GotoFunction(string x) 这个函数的作 ...

  3. Highchart插件简介和引入方式

    一.Highchart简介: Highcharts 是一个用纯 JavaScript 编写的一个图表库, 能够很简单便捷的在 Web 网站或是 Web 应用程序添加有交互性的图表. Highchart ...

  4. Git使用详细教程(一)

    很久不发博客,最近有兴趣想写点东西,但 Live Writer 不支持从Word复制图片,疯狂吐槽下 Git使用详细教程(一) Git使用详细教程(二) 该教程主要是Git与IntelliJ IDEA ...

  5. 原创 C++之常量(二)

    4常量的内存分配 4.1应用程序的内存结构 一个由C++编译的应用程序,占用的内存可以划分为如下几个部分: 栈(stack).由编译器自动分配释放.存放函数参数和函数里的局部变量(又称自动变量).其操 ...

  6. 多值(in),范围值(between..and)

    多值检测 关键词[in]   查出年龄是23,24,28 的人员信息 select * from T_Employee  where FAge  in (23,25,28) in 后面如果跟子查询, ...

  7. Reactor 模式的简单实现

    Reactor 模式简单实现 在网上有部分文章在描述Netty时,会提到Reactor.这个Reactor到底是什么呢?为了搞清楚Reactor到底是什么鬼,我写了一个简单的Demo,来帮助大家理解他 ...

  8. knockoutjs如何动态加载外部的file作为component中的template数据源

    玩过knockoutjs的都知道,有一个强大的功能叫做component,而这个component有个牛逼的地方就是拥有自己的viewmodel和template, 比如下面这样: ko.compon ...

  9. windows下redis安装

    最近因公司项目原因,去了趟昆明出差,其中第一次接触安装redis,配置sentinel,学习到不少,但也都是皮毛而已,本随笔记下所学知识. 1.首先介绍下redis,来源自百度百科 redis是一个k ...

  10. USB Host的上拉下拉电阻

      关于USB的上下拉电阻,不是随便接个任意阻值的电阻就ok了. 当你的USB为主设备的时候,D+.D-上分别接一个15K的下拉电阻,这样可以使得在没有设备插入的时候,D+.D-上始终保持低电平:当为 ...