[공지] NHN Cloud SDK 0.13.0부터 arm64e 아키텍처를 사용하는 기기(iPhone XS, XR, XS Max, iPad Pros 3rd)에서 발생한 크래시의 집계, 분석이 가능합니다.
Service | Cocoapods Pod Name | Framework | Dependency | Build Settings |
---|---|---|---|---|
Log & Crash | ToastLogger | ToastLogger.framework | [External & Optional] * CrashReporter.framework (Toast) |
|
Mandatory | ToastCore ToastCommon |
ToastCore.framework ToastCommon.framework |
OTHER_LDFLAGS = ( "-ObjC", "-lc++" ); |
platform :ios, '9.0'
use_frameworks!
target '{YOUR PROJECT TARGET NAME}' do
pod 'ToastLogger'
end
Build Settings의 Other Linker Flags에 -lc++와 -ObjC 항목을 추가합니다.
CrashReporter.framewor를 직접 다운로드하거나 빌드한 경우에는 Build Setting의 Enable Bitcode의 값을 NO로 변경해야 합니다.
NHN Cloud의 Downloads 페이지에서 다운로드한 CrashReporter.framework는 bitCode를 지원합니다.
if [ "${CONFIGURATION}" = "Debug" ]; then
${PODS_ROOT}/ToastSymbolUploader/toastcloud.sdk-*/run --app-key LOG_N_CRASH_SEARCH_DEV_APPKEY
fi
USAGE: symbol-uploader -ak <ak> -pv <pv> [-sz <sz>] <path> [--verbose]
ARGUMENTS:
<path> dSYM file path is must be entered.
OPTIONS:
-ak, --app-key <ak> [Log&Crash Search]'s AppKey must be entered.
-pv, --project-version <pv>
Project version must be entered.
-sz, --service-zone <sz>
You can choose between real, alpha, and demo. (default: real)
--verbose Show more debugging information
-h, --help Show help information.
./SymbolUploader --app-key {APP_KEY} --project-version {CFBundleShortVersionString || MARKETING_VERSION} {symbol path(~/Project.dSYM)}
동일한 버전의 Symbol이 이미 업로드되어 있는 경우 SymbolUploader는 업로드되어 있는 Symbol을 제거하고 업로드를 수행합니다.
이때 두 Symbol 파일의파일명이 다를 경우 업로드되어 있던 Symbol은 제거되지 않습니다.
Log & Crash Search 콘솔에서 업로드되어 있는 Symbol을 제거해야 합니다. https://console.toast.com/-> 조직 선택 -> 프로젝트 선택 -> Anaytics -> Log & Crash Search -> 설정 -> 심벌 파일
// 초기화
+ (void)initWithConfiguration:(ToastLoggerConfiguration *)configuration;
ToastLoggerConfiguration *configuration = [ToastLoggerConfiguration configurationWithAppKey:@"YOUR_APP_KEY"];
[ToastLogger initWithConfiguration:configuration];
// DEBUG Level log
+ (void)debug:(NSString *)message;
// INFO Level log
+ (void)info:(NSString *)message;
// WARN Level log
+ (void)warn:(NSString *)message;
// ERROR Level log
+ (void)error:(NSString *)message;
// FATAL Level log
+ (void)fatal:(NSString *)message;
[ToastLogger info:@"NHN Cloud Log & Crash Search!"];
// 사용자 정의 필드 추가
+ (void)setUserFieldWithValue:(NSString *)value forKey:(NSString *)key;
// 사용자 정의 필드 추가
[ToastLogger setUserFieldWithValue:@"USER_VALUE" forKey:@"USER_KEY"];
사용자 아이디가 설정되어 있으면 Log&Crash Search 콘솔의
크래시 사용자
항목에서 사용자별 크래시 경험을 확인 할 수 있습니다. 사용자 아이디 설정은 시작하기에서 확인 가능합니다.
// CrashReporter 활성화
ToastLoggerConfiguration *configuration = [ToastLoggerConfiguration configurationWithAppKey:@"YOUR_APP_KEY"
enableCrashReporter:YES];
[ToastLogger initWithConfiguration:configuration];
// CrashReporter 비활성화
ToastLoggerConfiguration *configuration = [ToastLoggerConfiguration configurationWithAppKey:@"YOUR_APP_KEY"
enableCrashReporter:NO];
[ToastLogger initWithConfiguration:configuration];
+ (void)setShouldReportCrashHandler:(void (^)(void))handler;
[ToastLogger setShouldReportCrashHandler:^{
// 사용자 정의 필드 를 통해 Crash가 발생한 상황에서 얻고자 하는 정보를 함께 전송
// 사용자 정의 필드 추가
[ToastLogger setUserFieldWithValue:@"USER_VALUE" forKey:@"USER_KEY"];
}];
+ (void)setDelegate:(id<ToastLoggerDelegate>) delegate;
@protocol ToastLoggerDelegate <NSObject>
@optional
// 로그 전송 성공
- (void)toastLogDidSuccess:(ToastLog *)log;
// 로그 전송 실패
- (void)toastLogDidFail:(ToastLog *)log error:(NSError *)error;
// 네트워크 단절 등의 이유로 로그 전송에 실패한 경우 재전송을 위해 SDK 내부 저장
- (void)toastLogDidSave:(ToastLog *)log;
// 로그 필터링
- (void)toastLogDidFilter:(ToastLog *)log logFilter:(ToastLogFilter *)logFilter;
@end
#import <ToastLogger/ToastLogger.h>
@interface AppDelegate () <UIApplicationDelegate, ToastLoggerDelegate>
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// ...
// 초기화
ToastLoggerConfiguration *configuration = [ToastLoggerConfiguration configurationWithAppKey:@"YOUR_APP_KEY"
enableCrashReporter:YES];
[ToastLogger initWithConfiguration:configuration];
// Delegate 설정
[[ToastLogger setDelegate:self];
return YES;
}
#pragma mark - ToastLoggerDelegate
// 로그 전송 성공
- (void)toastLogDidSuccess:(ToastLog *)log {
// ...
}
// 로그 전송 실패
- (void)toastLogDidFail:(ToastLog *)log error:(NSError *)error {
// ...
}
// 네트워크 단절 등의 이유로 로그 전송에 실패한 경우 재전송을 위해 SDK 내부 저장
- (void)toastLogDidSave:(ToastLog *)log {
// ...
}
// 로그 필터링
- (void)toastLogDidFilter:(ToastLog *)log logFilter:(ToastLogFilter *)logFilter {
// ...
}
@end
콘솔을 통해 Network Insights 기능을 활성화하면 NHN Cloud Logger를 초기화할 때, 콘솔에 등록한 URL로 1회 요청합니다.