前回の記事
今回試したこと - Crash Reporting
Parseでは、クラッシュレポートについても扱える。
せっかくなのでCrittercismからの移行を考えて触ってみたのでまとめてみた。
※日本版のドキュメントには、導入情報などが書いてないので注意。
環境
- iOS
- SDKの管理はcocoapodsを利用
platform :ios, "7.0"
target "parse" do
pod 'Parse', '~> 1.6'
pod 'ParseCrashReporting', '~> 1.6'
end
設定 - Step1 -
Parse CLIのダウンロード
curl -s https://www.parse.com/downloads/cloud_code/installer.sh | sudo /bin/bash
Parse Cloud Codeディレクトリの作成
parse new
上記をおこなうとParseのログインアカウントなどを聞かれるので指定する。
すると、以下のようなディレクトリが作成される。
- parse
- cloud
- config
- public
Run Script Phaseの追加
Xcodeで「Build Phases」を選択し、「Run Script Phase」を追加する。
追加する内容は以下。
export PATH=/usr/local/bin:$PATH
CLOUD_CODE_DIR=<path_to_cloudcode_folder>
if [ -d ${CLOUD_CODE_DIR} ]; then
cd ${CLOUD_CODE_DIR}
parse symbols "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"
else
fi
path_to_cloudcode_folder
には上記のステップで作られたディレクトリ(Parse Cloud Codeディレクトリ)を指定する。
設定 - Step2 -
次に、テストアプリ側のコードを記述する。
まずはimport。
# import <Parse/Parse.h>
# import <ParseCrashReporting.h>
そして、AppDelegate.mに以下のコードを追加する。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Enable Crash Reporting
[ParseCrashReporting enable];
// Setup Parse
[Parse setApplicationId:@"parseAppId" clientKey:@"parseClientKey"];
}
やるべきことは、これだけでOK。
動作確認
動作確認をするために、AppDelegate.mの application:didFinishLaunchingWithOptions:
とかに以下のようなクラッシュするコードを記述する。
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[NSException raise:NSGenericException format:@"Everything is ok. This is just a test crash."];
});
レポート画面
上記のコードを記述し、アプリを動かすとクラッシュする。
その後に、再度アプリを起動するとクラッシュレポートが表示されるようになる。
※クラッシュするコードのままだとアプリ起動時に再度クラッシュするので注意。
上記の赤枠の箇所が今回のコードでクラッシュした情報を表示しているもの。
そして、詳細は以下の様な感じで表示される。