iOS 以優雅的方式跟後臺聊3840 之 介面除錯“搖一搖”
阿新 • • 發佈:2018-11-08
背景
3840
是除錯介面時,經常遇到的問題
每次除錯,都只能在 Xcode
的控制檯檢視日誌
這意味著,每次都要先執行程式,才能檢視具體原因
有沒有一種方式
不用每次都在控制檯看日誌看資料
就能找具體的原因呢?
產生
經後臺同事的提醒
想寫一個除錯介面的小工具
每次出問題時,可以把URL
、引數
、返回資料
都提供給後臺除錯
一直沒想到一個好的方案
後來發現後臺同事
每次除錯介面時
都是在瀏覽器裡除錯的
於是就想到了用 webView
一套優雅的方式就誕生了
專案結構
- 總共 5 個檔案:
JHRequestDebugView.h
JHRequestDebugView.m
UIWindow+JHRequestDebugViewShake.h
UIWindow+JHRequestDebugViewShake.m
JSONFormat.html
除錯視窗:JHRequestDebugView
搖一搖事件響應:UIWindow+JHRequestDebugViewShake
JSON格式化:JSONFormat.html
- 配置:
在 AFN
請求後呼叫其中一之一:
// for GET
[[JHRequestDebugView defaultDebugView] jh_set_GET_URL:url parameter:dic];
// or
// for POST
[[JHRequestDebugView defaultDebugView] jh_set_POST_URL:url parameter:dic];
- 示例
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager GET:url parameters:dic progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
//...
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
//...
}];
// GET
[[JHRequestDebugView defaultDebugView] jh_set_GET_URL:url parameter:dic];
HTTPHeader 配置
如果需要配置HTTPHeader
資訊
在JHRequestDebugView.m
,方法- (void)xx_begin_debug;
內設定示例
// cookie
NSArray *array = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:[NSURL URLWithString:@"www.haocold.com"]];
NSDictionary *cookdict = [NSHTTPCookie requestHeaderFieldsWithCookies:array];
NSString *cookie = cookdict[@"Cookie"];
if (cookie.length > 0) {
[request setValue:cookie forHTTPHeaderField:@"Cookie"];
}
// token
NSString *token = [ToolObject jhGetLoginToken];
if (authorization.length > 0) {
[request setValue:token forHTTPHeaderField:@"token"];
}
- 最後
在請求介面後,搖一搖
手機,就能調出除錯視窗
此時,所有資訊已經拷貝到 系統的
[UIPasteboard generalPasteboard].string = result;
可以通過QQ把資訊發給後臺,OK!搞定!
- 圖示