資料介紹
軟件簡介
FFRouter 是 iOS 中一個強大且易用的 URL 路由庫,支持 URL Rewrite,使 APP 在發布之后也可以動態修改相關路由邏輯。基于匹配查找 URL,效率高。集成和使用都非常簡單!
功能
-
具備基本的 URL 注冊、Route、取消注冊、打印 Log 等
-
支持使用通配符(*)注冊 URL
-
支持 URL Rewrite
-
支持 Rewrite 時獲取原 URL 參數或 URLComponents,并可對其進行URL Encode或 Decode
-
支持通過 URL 獲取 Object
-
支持 Route URL 時傳遞非常規對象
-
支持 Route 一個未注冊的 URL 時統一回調
安裝
CocoaPods
target?'MyApp'?do ??pod?'FFRouter' end
運行?pod install
手動安裝
添加其中的?FFRouter
?文件夾到自己項目
使用方法
首先
#import?"FFRouter.h"
1、基本使用
/** ?注冊?url ?@param?routeURL?要注冊的?URL ?@param?handlerBlock?URL?被?Route?后的回調 ?*/ +?(void)registerRouteURL:(NSString?*)routeURL?handler:(FFRouterHandler)handlerBlock; /** ?注冊?URL,通過該方式注冊的?URL?被?Route?后可返回一個?Object ?@param?routeURL?要注冊的?URL ?@param?handlerBlock?URL?被?Route?后的回調,可在回調中返回一個?Object ?*/ +?(void)registerObjectRouteURL:(NSString?*)routeURL?handler:(FFObjectRouterHandler)handlerBlock; /** ?判斷?URL?是否可被?Route(是否已經注冊) ?@param?URL?要判斷的?URL ?@return?是否可被?Route ?*/ +?(BOOL)canRouteURL:(NSString?*)URL; /** ?Route?一個?URL ?@param?URL?要?Router?的?URL ?*/ +?(void)routeURL:(NSString?*)URL; /** ?Route?一個?URL,并帶上額外參數 ?@param?URL?要?Router?的?URL ?@param?parameters?額外參數 ?*/ +?(void)routeURL:(NSString?*)URL?withParameters:(NSDictionary?*)parameters; /** ?Route?一個?URL,可獲得返回的?Object ?@param?URL?要?Router?的?URL ?@return?返回的?Object ?*/ +?(id)routeObjectURL:(NSString?*)URL; /** ?Route?一個?URL,并帶上額外參數,可獲得返回的?Object ?@param?URL?要?Router?的?URL ?@param?parameters?額外參數 ?@return?返回的?Object ?*/ +?(id)routeObjectURL:(NSString?*)URL?withParameters:(NSDictionary ?*)parameters; /** ?Route?一個未注冊?URL?時回調 ?@param?handler?回調 ?*/ +?(void)routeUnregisterURLHandler:(FFRouterUnregisterURLHandler)handler; /** ?取消注冊某個?URL ?@param?URL?要被取消注冊的?URL ?*/ +?(void)unregisterRouteURL:(NSString?*)URL; /** ?取消注冊所有?URL ?*/ +?(void)unregisterAllRoutes; /** ?是否顯示?Log,用于調試 ?@param?enable?YES?or?NO,默認為?NO ?*/ +?(void)setLogEnabled:(BOOL)enable;
【備注】
(1)注冊 URL:
[FFRouter?registerRouteURL:@"protocol://page/routerDetails/:id"?handler:^(NSDictionary?*routerParameters)?{ ???//Route的URL與本次注冊URL匹配時的回調?? }]; [FFRouter?registerRouteURL:@"wildcard://*"?handler:^(NSDictionary?*routerParameters)?{ ???//Route的URL與本次注冊URL匹配時的回調?? }]; [FFRouter?registerRouteURL:@"protocol://page/routerObjectDetails"?handler:^(NSDictionary?*routerParameters)?{ ???//Route的URL與本次注冊URL匹配時的回調?? }];
可通過routerParameters
獲取 URL 中的參數,routerParameters[FFRouterParameterURLKey]
為完整的URL. (2)當需要通過以下方法:
+?(id)routeObjectURL:(NSString?*)URL;
Route 一個 URL 并獲取返回值時,需要使用如下方法注冊 URL:
+?(void)registerObjectRouteURL:(NSString?*)routeURL?handler:(FFObjectRouterHandler)handlerBlock;
并在 handlerBlock 中返回需要返回的 Object,例如:
//注冊并返回必要的值 [FFRouter?registerObjectRouteURL:@"protocol://page/routerObjectDetails"?handler:^id(NSDictionary?*routerParameters)?{ ????????NSString?*str?=?@“根據需要返回必要的Object”; ????????return?str; ????}]; ???? //獲取返回的值 NSString?*ret?=?[FFRouter?routeObjectURL:@"protocol://page/routerObjectDetails"];
(3)如果需要傳遞非常規對象作為參數,如UIImage
等,可使用如下方式:
[FFRouter?routeURL:@"protocol://page/routerDetails?nickname=imlifengfeng"?withParameters:@{@"img":[UIImage?imageNamed:@"router_test_img"]}];
2、URL Rewrite
/** ?根據設置的?Rules?去?rewrite?一個?URL ?@param?url?將被?rewrite?的?URL ?@return?rewrite?后的?URL ?*/ +?(NSString?*)rewriteURL:(NSString?*)url; /** ?添加一個?RewriteRule ?@param?matchRule?正則匹配規則 ?@param?targetRule?轉換規則 ?*/ +?(void)addRewriteMatchRule:(NSString?*)matchRule?targetRule:(NSString?*)targetRule; /** ?同時添加多個?RewriteRule,格式必須為:@[@{@"matchRule":@"YourMatchRule",@"targetRule":@"YourTargetRule"},...] ?@param?rules?RewriteRules ?*/ +?(void)addRewriteRules:(NSArray?*)rules; /** ?移除一個?RewriteRule ?@param?matchRule?將被移除的?matchRule ?*/ +?(void)removeRewriteMatchRule:(NSString?*)matchRule; /** ?移除所有?RewriteRule ?*/ +?(void)removeAllRewriteRules;
【備注】
(1)可以使用正則
添加一條 Rewrite 規則,例如: 要實現打開 URL:https://www.taobao.com/search/原子彈
時,將其攔截,改用本地已注冊的 URL:protocol://page/routerDetails?product=原子彈
打開。 首先添加一條 Rewrite 規則:
[FFRouterRewrite?addRewriteMatchRule:@"(?:https://)?www.taobao.com/search/(.*)"?targetRule:@"protocol://page/routerDetails?product=$1"];
之后在打開URL:https://www.taobao.com/search/原子彈
時,將會 Rewrite 到URL:protocol://page/routerDetails?product=原子彈
。
[FFRouter?routeURL:@"https://www.taobao.com/search/原子彈"];
(2)可以通過以下方法同時增加多個規則:
+?(void)addRewriteRules:(NSArray?*)rules;
其中 rules 格式必須為以下格式:
@[@{@"matchRule":@"YourMatchRule1",@"targetRule":@"YourTargetRule1"}, ??@{@"matchRule":@"YourMatchRule2",@"targetRule":@"YourTargetRule2"}, ??@{@"matchRule":@"YourMatchRule3",@"targetRule":@"YourTargetRule3"},]
(3)Rewrite 規則中的保留字:
-
通過?
$scheme
、$host
、$port
、$path
、$query
、$fragment
?獲取標準 URL 中的相應部分。通過$url
獲取完整 URL -
通過?
$1
、$2
、$3
...獲取matchRule
的正則中使用圓括號取出的參數 -
$
:原變量的值、$$
:原變量URL Encode后的值、$#
:原變量URL Decode后的值
例如:?https://www.taobao.com/search/原子彈
對于Rewrite 規則(?:https://)?www.taobao.com/search/(.*)
$1=原子彈 $$1=%e5%8e%9f%e5%ad%90%e5%bc%b9
同樣,https://www.taobao.com/search/%e5%8e%9f%e5%ad%90%e5%bc%b9
對于Rewrite 規則(?:https://)?www.taobao.com/search/(.*)
$1=%e5%8e%9f%e5%ad%90%e5%bc%b9 $#1=原子彈
2、FFRouterNavigation
考慮到經常用路由配置UIViewController
之間的跳轉,所以增加了額外的工具FFRouterNavigation
來更方便地控制UIViewController
之間的跳轉。具體使用方法如下:
/** ?push?時是否自動隱藏底部TabBar ?@param?hide?是否自動隱藏,默認為?NO ?*/ +?(void)autoHidesBottomBarWhenPushed:(BOOL)hide; /** ?獲取當前?ViewController ?@return?當前?ViewController ?*/ +?(UIViewController?*)currentViewController; /** ?獲取當前?NavigationViewController ?@return?return?當前?NavigationViewController ?*/ +?(nullable?UINavigationController?*)currentNavigationViewController; /** ?Push?ViewController ?@param?viewController?被?Push?的?ViewController ?@param?animated?是否使用動畫 ?*/ +?(void)pushViewController:(UIViewController?*)viewController?animated:(BOOL)animated; /** ?Push?ViewController,可設置當前?ViewController?是否還保留 ?@param?viewController?被?Push?的?ViewController ?@param?replace?當前?ViewController?是否還保留 ?@param?animated?是否使用動畫 ?*/ +?(void)pushViewController:(UIViewController?*)viewController?replace:(BOOL)replace?animated:(BOOL)animated; /** ?Push?多個?ViewController ?@param?viewControllers?ViewController?Array ?@param?animated?是否使用動畫 ?*/ +?(void)pushViewControllerArray:(NSArray?*)viewControllers?animated:(BOOL)animated; /** ?present?ViewController ?@param?viewController?被?present?的?ViewController ?@param?animated?是否使用動畫 ?@param?completion?回調 ?*/ +?(void)presentViewController:(UIViewController?*)viewController?animated:(BOOL)animated?completion:(void?(^?__nullable)(void))completion; /** ?關閉當前?ViewController,push、present?方式通用 ?@param?animated?是否使用動畫 ?*/ +?(void)closeViewControllerAnimated:(BOOL)animated;
感謝
FFRouter
實現方案參考了以下文章,在此表示感謝!
- LABVIEW NPOI庫文件下載 192次下載
- altium designer元件庫下載 703次下載
- STM32f10x官方固件庫資料 65次下載
- AD常用3D封裝庫(STEP)下載 370次下載
- AD 2D標準封裝庫下載 22次下載
- 蘋果ios藍牙調試助手工具源代碼下載 7次下載
- IRMCK/F171靈活易用的電機控制芯片 5次下載
- 選擇最簡單易用的HyperLynx進行串擾仿真資料下載
- 如何使用OpenWRT路由器實現網絡存儲系統的設計 28次下載
- 兼容iOS 10的一些問題和使用資料整理合集
- AN1246中文手冊之如何在Microchip圖形庫中創建控件
- 通用封裝庫(protel/AD版本通用)資料下載 0次下載
- 在路由器上安裝IOS映像 0次下載
- 基于BGP協議屬性的路由策略 11次下載
- 路由控制和路由選擇
- 千兆路由器和百兆路由器的區別 萬兆路由器有什么好處? 1717次閱讀
- 路由重發布和路由匯總的概念 1220次閱讀
- 無模式數據庫的利與弊 366次閱讀
- 什么是路由表?IP路由表包含了哪些要素? 1w次閱讀
- 1000+常用Python庫一覽 983次閱讀
- work庫在VHDL中的特殊用法 824次閱讀
- Cargo如何訪問世界上最強大的3D庫 633次閱讀
- 關于路由策略數據庫(RPDB) 1798次閱讀
- 一款適合初學者超輕量級C語言網絡庫—Dyad 1594次閱讀
- 一文讀懂boost庫的概念和安裝方式 7333次閱讀
- 內存數據庫系統全面解析 4140次閱讀
- 思科路由器多少錢_思科路由器優勢有哪些_如何選擇選擇思科路由器 3069次閱讀
- 極路由和普通路由有什么區別 3006次閱讀
- 極路由怎么設置_極路由詳細設置圖文教程 12.5w次閱讀
- 動態路由特點及構成 3200次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多