開源架構:iConsole

來源:互聯網
上載者:User

引言:

官方的簡介加少許語義上的修改:

iConsole是一個簡單的,無依賴的控制台管理類,讓iPhone在運行App時記錄更多使用者使用時的記錄. 它可以準確的定位程式所遇到的錯誤,內建在應用中,而無需串連到XCode調試器即可查詢崩潰日誌並儲存起來. 所以,普通使用者可以主動提交在使用時遇到的錯誤記錄檔.

如何開始使用?

開源項目:猛擊此處

下載以後翻開項目的原始碼找到如下兩個檔案夾,分別是:

將這兩個檔案夾拖動要使用的工程中,此時無需任何其他依賴項的設定.

如何編寫代碼?

在使用其功能之前有一點要注意,需要將AppDelegate裡初始的UIWindow需要以iConsoleWindow來初始化.

如果項目中沒有使用StoryBoard來初始化工程,則進行如下修改即可:

- (void)applicationDidFinishLaunching:(UIApplication *)application{    _window = [[iConsoleWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];_window.rootViewController = [[HelloWorldViewController alloc] init];    [_window makeKeyAndVisible];}

如果是通過StoryBoard來初始化工程的話需要進入如下修改:

1:第一步將工程設定裡的Main StoryBoard清空

2:applicationDidFinishLaunching裡面添加如下代碼:

//啟動iConsonleself.window = [[iConsoleWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];self.window.rootViewController = [[UIStoryboard storyboardWithName:MainStoryBoardName bundle:nil] instantiateInitialViewController];//other load code[self.window makeKeyAndVisible];

至於其它代碼請寫在other load code的位置, 不然會Crash.原理是UIWindow

到此,iConsole的部署及初始化工作已經完成,iConsole會默默的記錄App產品的Crash資訊. 接下來介紹其強大的功能及細節.

iConsole提供了4種記錄議程的方式,分別是:

1:資訊

2:警告

3:錯誤

4:崩潰

通過以上4種記錄的層級由開發人員自行管理其分類,以備App脫離XCode調試器時,輔助開發人員通過日誌理解錯誤的具體位置.

代碼如下:

[iConsole info:@"記錄一條普通級"];[iConsole warn:@"記錄一條警告級"];[iConsole error:@"記錄一條錯誤級"];[iConsole crash:@"記錄一條崩潰級"];

iConsole 預設記錄的日誌條數是1000條. 如果日誌記錄到上限時,會刪除最早的一條,如此迴圈,可通過如下屬性設定上下限:

[[iConsole sharedConsole] setMaxLogItems:2000];

當我們需要查看iConsole的控制台時,可以通過三種方式來啟動控制台:

1:主動調用

[iConsole show];

2:三跟手指由下往上滑動. 模擬器兩根手指,  預設啟動

[iConsole sharedConsole].simulatorTouchesToShow = YES;[iConsole sharedConsole].deviceTouchesToShow = YES;

3:搖動手機啟動  預設禁用

[iConsole sharedConsole].deviceShakeToShow = YES;

成功進入控制台以後,可以看到有一個輸入地區,等待使用者輸入命令,如所示:

此時需要實現iConsole唯一的一個代理,用來捕捉命令列的值:

1:代理賦值

[iConsole sharedConsole].delegate = self;

2:實現介面方法

- (void)handleConsoleCommand:(NSString *)command{if ([command isEqualToString:@"version"]){[iConsole info:@"%@ version %@",         [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleName"], [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"]];}else {[iConsole error:@"unrecognised command, try 'version' instead"];}}

這個代理到底有什麼用?

這裡的權利完全交給了開發人員,通過自訂一些命令來輸出一些有利於調試的日誌資訊.

比如version命令,一旦成功進入代理以後,將會自動列印當前App的程式版本

更改的輔助命令由開發人員根據個人化需求自由定製

另外iConsole的控制台也可以進行少許的樣式修改:

//branding and feedback@property (nonatomic, copy) NSString *infoString;//控制台簡短介紹@property (nonatomic, copy) NSString *inputPlaceholderString;//命令列空值提示@property (nonatomic, copy) NSString *logSubmissionEmail;//日誌所發送的郵件地址//styling@property (nonatomic, strong) UIColor *backgroundColor;//背景顏色@property (nonatomic, strong) UIColor *textColor;//文字顏色@property (nonatomic, assign) UIScrollViewIndicatorStyle indicatorStyle;//這個呢?

額外的說明:

類比一個Crash 用於嘗試使用iConsole 的功能,代碼如下:

[[NSException exceptionWithName:@"什麼類型的崩潰異常?" reason:@"對崩潰進行些說明?" userInfo:nil] raise];

總結:

iConsole在於對XCode控制台脫離時依舊能保持調試的能力,方面輔助開發人員捕捉致命的BUG. 建議閱讀本文所有的開發人員都是用.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.