// // DHRouter.h 在MGHRouter外é¢åР䏀层 方便以åŽç½®æ¢ // Pods // // Created by Anson on 2017/5/18. // // #import <Foundation/Foundation.h> extern NSString *const DHRouterParameterURL; extern NSString *const DHRouterParameterCompletion; extern NSString *const DHRouterParameterUserInfo; /** * routerParameters é‡Œå†…ç½®çš„å‡ ä¸ªå‚æ•°ä¼šç”¨åˆ°ä¸Šé¢å®šä¹‰çš„ string */ typedef void (^DHRouterHandler)(NSDictionary *routerParameters); /** * 需è¦è¿”回一个 object,é…åˆ objectForURL: 使用 */ typedef id (^DHRouterObjectHandler)(NSDictionary *routerParameters); @interface DHRouter : 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:(DHRouterHandler)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:(DHRouterObjectHandler)handler; /** * å–æ¶ˆæ³¨å†ŒæŸä¸ª URL Pattern * * @param URLPattern 已注册的url */ + (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 已注册的路由url */ + (id)objectForURL:(NSString *)URL; /** * 查找è°å¯¹æŸä¸ª URL 感兴趣,如果有的è¯ï¼Œè¿”回一个 object * * @param URL 已注册的路由url * @param userInfo ç”¨æˆ·å‚æ•° */ + (id)objectForURL:(NSString *)URL withUserInfo:(NSDictionary *)userInfo; /** * 是å¦å¯ä»¥æ‰“å¼€URL * * @param URL 已注册的路由url * * @return YES or NO */ + (BOOL)canOpenURL:(NSString *)URL; /** * è°ƒç”¨æ¤æ–¹æ³•æ¥æ‹¼æŽ¥ urlpattern å’Œ parameters * * #define MGJ_ROUTE_BEAUTY @"beauty/:id" * [MGJRouter generateURLWithPattern:MGJ_ROUTE_BEAUTY, @[@13]]; * * * @param pattern url pattern 比如 @"beauty/:id" * @param parameters 一个数组,数é‡è¦è·Ÿ pattern 里的å˜é‡ä¸€è‡´ * * @return Route url */ + (NSString *)generateURLWithPattern:(NSString *)pattern parameters:(NSArray *)parameters; @end