123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- //
- // YMRouter.h
- // MSYOUPAI
- //
- // Created by YoMi on 2023/11/8.
- //
- #import <Foundation/Foundation.h>
- extern NSString *const YMRouterParameterURL;
- extern NSString *const YMRouterParameterCompletion;
- extern NSString *const YMRouterParameterUserInfo;
- /**
- * routerParameters 里内置的几个参数会用到上面定义的 string
- */
- typedef void (^YMRouterHandler)(NSDictionary *routerParameters);
- /**
- * 需要返回一个 object,配合 objectForURL: 使用
- */
- typedef id (^YMRouterObjectHandler)(NSDictionary *routerParameters);
- @interface YMRouter : NSObject
- /**
- * 注册 URLPattern 对应的 Handler,在 handler 中可以初始化 VC,然后对 VC 做各种操作
- *
- * @param URLPattern 带上 scheme,如 mgj://beauty/:id
- * @param handler 该 block 会传一个字典,包含了注册的 URL 中对应的变量。
- * 假如注册的 URL 为 mgj://beauty/:id 那么,就会传一个 @{@"id": 4} 这样的字典过来
- */
- + (void)registerURLPattern:(NSString *)URLPattern toHandler:(YMRouterHandler)handler;
- /**
- * 注册 URLPattern 对应的 ObjectHandler,需要返回一个 object 给调用方
- *
- * @param URLPattern 带上 scheme,如 mgj://beauty/:id
- * @param handler 该 block 会传一个字典,包含了注册的 URL 中对应的变量。
- * 假如注册的 URL 为 mgj://beauty/:id 那么,就会传一个 @{@"id": 4} 这样的字典过来
- * 自带的 key 为 @"url" 和 @"completion" (如果有的话)
- */
- + (void)registerURLPattern:(NSString *)URLPattern toObjectHandler:(YMRouterObjectHandler)handler;
- /**
- * 取消注册某个 URL Pattern
- *
- * @param URLPattern URLPattern
- */
- + (void)deregisterURLPattern:(NSString *)URLPattern;
- /**
- * 打开此 URL
- * 会在已注册的 URL -> Handler 中寻找,如果找到,则执行 Handler
- *
- * @param URL 带 Scheme,如 mgj://beauty/3
- */
- + (void)openURL:(NSString *)URL;
- /**
- * 打开此 URL,同时当操作完成时,执行额外的代码
- *
- * @param URL 带 Scheme 的 URL,如 mgj://beauty/4
- * @param completion URL 处理完成后的 callback,完成的判定跟具体的业务相关
- */
- + (void)openURL:(NSString *)URL completion:(void (^)(id result))completion;
- /**
- * 打开此 URL,带上附加信息,同时当操作完成时,执行额外的代码
- *
- * @param URL 带 Scheme 的 URL,如 mgj://beauty/4
- * @param userInfo 附加参数
- * @param completion URL 处理完成后的 callback,完成的判定跟具体的业务相关
- */
- + (void)openURL:(NSString *)URL withUserInfo:(NSDictionary *)userInfo completion:(void (^)(id result))completion;
- /**
- * 查找谁对某个 URL 感兴趣,如果有的话,返回一个 object
- *
- * @param URL 带 Scheme,如 mgj://beauty/3
- */
- + (id)objectForURL:(NSString *)URL;
- /**
- * 查找谁对某个 URL 感兴趣,如果有的话,返回一个 object
- *
- * @param URL 带 Scheme,如 mgj://beauty/3
- * @param userInfo 附加参数
- */
- + (id)objectForURL:(NSString *)URL withUserInfo:(NSDictionary *)userInfo;
- /**
- * 是否可以打开URL
- *
- * @param URL 带 Scheme,如 mgj://beauty/3
- *
- * @return 返回BOOL值
- */
- + (BOOL)canOpenURL:(NSString *)URL;
- + (BOOL)canOpenURL:(NSString *)URL matchExactly:(BOOL)exactly;
- /**
- * 调用此方法来拼接 urlpattern 和 parameters
- *
- * #define YOMI_ROUTE_BEAUTY @"beauty/:id"
- * [YMRouter generateURLWithPattern:YOMI_ROUTE_BEAUTY, @[@13]];
- *
- *
- * @param pattern url pattern 比如 @"beauty/:id"
- * @param parameters 一个数组,数量要跟 pattern 里的变量一致
- *
- * @return 返回生成的URL String
- */
- + (NSString *)generateURLWithPattern:(NSString *)pattern parameters:(NSArray *)parameters;
- @end
|