読者です 読者をやめる 読者になる 読者になる

ほげほげ(仮)

仮死状態

TestFlight SDKを使う

Xcode iOS Objective-C

TestFlight SDKを使う際のメモ

Podfile

Podfileに下記を追加。

pod 'TestFlightSDK', '2.0.2'

インストール

$ pod install

AdHoc用ビルドのみ有効にする

AdHoc用ビルド設定

AdHoc用ビルド設定とTestFlightアップロードスクリプト を参照

AdHoc時のみリンクする

Project設定の対象ターゲットのBuild Settings -> Linking -> Other Linker Flagsの箇所を設定する。

DebugReleaseから-lTestFlight-lzを削除する。


f:id:STAR_ZERO:20131016193509p:plain

コードから判定するためにマクロ定義

Project設定のBuild Settings -> Apple LLVM 5.0 - Preprocessing -> Prepreocessor MacrosでAdHocのほうにUSE_TESTFLIGHT=1を追加する。


f:id:STAR_ZERO:20131016194804p:plain

コードを書く

xxxx-Prefix.pch

xxxx-Prefix.pchでTestFlightが有効(AdHoc時)の場合のみimport

#ifdef USE_TESTFLIGHT
    #import "TestFlight.h"
#endif

AppDelegate.m

SDKドキュメントの下のほうに書いてあるやつほぼそのまま。よく分かってないです…

[TestFlight takeOff:]の箇所だけTestFlightが有効かを判定している。

アプリTokenはTestFlightのAppsページから取得(Appsを作ってないと取得できない)

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.

    // installs HandleExceptions as the Uncaught Exception Handler
    NSSetUncaughtExceptionHandler(&HandleExceptions);
    // create the signal action structure
    struct sigaction newSignalAction;
    // initialize the signal action structure
    memset(&newSignalAction, 0, sizeof(newSignalAction));
    // set SignalHandler as the handler in the signal action structure
    newSignalAction.sa_handler = &SignalHandler;
    // set SignalHandler as the handlers for SIGABRT, SIGILL and SIGBUS
    sigaction(SIGABRT, &newSignalAction, NULL);
    sigaction(SIGILL, &newSignalAction, NULL);
    sigaction(SIGBUS, &newSignalAction, NULL);

#ifdef USE_TESTFLIGHT
    [TestFlight takeOff:@"<アプリのToken>"];
#endif

}

/*
 My Apps Custom uncaught exception catcher, we do special stuff here, and TestFlight takes care of the rest
 */
void HandleExceptions(NSException *exception) {
    NSLog(@"This is where we save the application data during a exception");
}

/*
 My Apps Custom signal catcher, we do special stuff here, and TestFlight takes care of the rest
 */
void SignalHandler(int sig) {
    NSLog(@"This is where we save the application data during a signal");
}

これでOKだと思う。。。

参考