1. 程式人生 > >iOS 以優雅的方式跟後臺聊3840 之 介面除錯“搖一搖”

iOS 以優雅的方式跟後臺聊3840 之 介面除錯“搖一搖”

背景

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!搞定!

  • 圖示

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述


倉庫