推荐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. css知识点整理

    CSS是Cascading Style Sheets的简称,中文称为层叠样式表,用来控制网页数据的表现,可以使网页的表现与数据内容分离. 一.css引入的方式 1.行内样式:行内式是在标记的style ...

  2. 利用BI搭建零售业数据信息平台

    某百货公司是全市规模最大的以零售为主.多元化经营的股份制商业企业.拥有员工数千人,经营国内外品牌2300余种,年商品销售额逾10亿人元. 销售体量如此庞大的企业近几年在IT建设上出现了问题,集团内部的 ...

  3. Scala override

    var 变量不能在子类中重写,除非父类是抽象类 在抽象类中var变量不能赋初值 abstract class Person{ val name="" def name1=" ...

  4. android Activity runOnUiThread() 方法的使用

    利用Activity.runOnUiThread(Runnable)把更新ui的代码创建在Runnable中,然后在需要更新ui时,把这个Runnable对象传给Activity.runOnUiThr ...

  5. Android GZIP压缩IO流,优化APP数据传输(一)

    我是小搬运工,今天讲解流的压缩传输 在我们安卓开发中,通常伴随着大量的数据传输,在此,楼主给出一个简单的压缩流的数据进行操作. public void GZIPCpf(String path) { / ...

  6. c#批量插入数据库Demo

    using System; using System.Collections.Generic; using System.Configuration; using System.Data; using ...

  7. .Net开源Excel、Word操作组件-NPOI、EPPlus、DocX

    一.NPOI 简介: NPOI is the .NET version of POI Java project. With NPOI, you can read/write Office 2003/2 ...

  8. 使用httpclient发送get或post请求

    HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的.最新的.功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建 ...

  9. 安装TFS2015后启用生成功能

    安装了TFS2015后,发现高大上呀.可是在传了个DEMO,BUILD生成的时候提示没有 一些文件,提示:找不到具有以下功能的代理: msbuild, visualstudio.在服务端安了VS201 ...

  10. openstack学习(一)kvm-libvirt

    准备工作: 操作系统:ubuntu 16.04 安装KVM Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的 ...