zoukankan      html  css  js  c++  java
  • iOS

    推荐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 代码####

  • 相关阅读:
    Mac OSX下增加TCP连接数
    Connection reset by peer的常见原因及解决办法
    修改主机名
    docker 查看 docker容器启动 完整命令
    nginx 日志打印响应时间 request_time 和 upstream_response_time
    Ubuntu16.04 安装 Docker
    VictoriaMetrics vmagent 使用
    VictoriaMetrics vmauth 使用
    VictoriaMetrics集群模式的一些说明
    promgen prometheus 配置文件生成工具
  • 原文地址:https://www.cnblogs.com/R0SS/p/6249001.html
Copyright © 2011-2022 走看看