CocoaPods は Objective-C および Swift の依存関係マネージャです。
Tapjoy を利用する場合には、Podfile に下記のように付け加えます:
platform :ios, '10.0'
source 'https://github.com/CocoaPods/Specs.git'
use_frameworks!
target 'MyApp' do
pod 'TapjoySDK'
end
Cocoapods を使用する場合、static または dynamic フレームワークのどちらでも使用可能です。デフォルトでは static です。次のように Podfile に追加することで、dynamic フレームワークを使用できます:
pod 'TapjoySDK/Dynamic'
SDK v13.4.0 から Swift Package Manager をサポートしました。
File > Add Packages Dependancies を開きます。 上部右の検索バーにレポジトリ https://github.com/Tapjoy/swift-packages.git をペーストし、 Add Package を選択します。
アプリがApp Tracking Transparencyを使用する場合、IDFA(広告ID)にアクセスするための許可を求めるダイアログを表示するには、Info.plistに NSUserTrackingUsageDescription
キーとIDFAをアプリで使用する許可を求めるカスタムメッセージの値を追加します。
例:
<key>NSUserTrackingUsageDescription</key>
<string>あなたに最適になるようにパーソナライズした広告をお届けできるようになります。</string>
指定した使用目的の記述の内容は App Tracking Transparency のトラッキング許可ダイアログとして下記のように表示されます:
プロジェクトに AppTrackingTransparency
フレームワークを追加し、 requestTrackingAuthorizationWithCompletionHandler:
を呼び出して許可を求めるダイアログを表示します。ベスト・プラクティスとして、 requestTrackingAuthorization
のコンプリーションハンドラが呼び出されるまでTapjoy connectの呼び出しを待つ事をお勧めします。こうすれば、意図したIDFAの値がTapjoyへのすべてのリクエストに使われるようになるからです。
#import <AppTrackingTransparency/AppTrackingTransparency.h>
...
- (void)fetchTrackingAuthorization {
[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
// Tapjoy connect をここで呼びます。
}];
}
次に、Tapjoy connect をアプリに実装します。 これにより、アプリからTapjoy SDK を"起動"します。
Tapjoy connect の実装は非常に重要です。この実装が正常に行われていない場合、Tapjoyの機能がいっさい動作しなくなるからです
Tapjoy connect を実装するためには、実装を行うアプリのTapjoy SDK Keyが必要になります。この値を取得するには Tapjoyダッシュボードで実装するアプリを選択肢、"設定" - "アプリ設定" をクリックします。画面下部の SDK Keyの箇所に各プラットフォームのSDK Keyが表示されています。
次に、アプリケーションのデリゲートファイルの application:didFinishLaunchingWithOptions
メソッドに以下のコードを追加します:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(tjcConnectSuccess:) name:TJC_CONNECT_SUCCESS object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(tjcConnectFail:) name:TJC_CONNECT_FAILED object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(tjcConnectWarning:) name:TJC_CONNECT_WARNING object:nil];
// Tapjoy デバッグモードを ON に
[Tapjoy setDebugEnabled:YES]; // 開発用途にのみ有効にします。 パブリッシュする前に必ず無効にして下さい。
// 自社管理仮想通貨を使う場合は、ユーザーIDをconnect flagで指定します。
NSDictionary *connectFlags = @{TJC_OPTION_USER_ID : @"<USER_ID_HERE>"};
[Tapjoy connect:@"SDK_KEY_GOES_HERE" options:connectFlags];
// Connect flagを使用しない場合は、省略する事もできます。
[Tapjoy connect:@"SDK_KEY_GOES_HERE"];
return YES;
}
setDebugEnabled と setUserID メソッドは connect よりも先に設定するようにして下さい。 ユーザーIDを connect よりも先に設定すれば、 AppLaunch 自動設定プレイスメントが正しいユーザーIDでコンテンツを取得できるようになります。また、Push to Earn コンテンツでも同様です。
より詳細については SDK リファレンス (英語) もご参照下さい:
Objective C および C++。
Tapjoy connect が完了した、警告月で完了した、または失敗したという通知を受けるには、セレクタとして前のステップで設定したメソッドを実装する必要があります。 connectWarning
コールバックは connect の際に致命的でない問題が発生した場合に呼び出されます(その後に connectSuccess
も更に呼び出されます)。現時点ではこの機能は ConnectFlags で指定した UserId に問題がある場合にのみ呼び出されます。
- (void)tjcConnectSuccess:(NSNotification *)notifyObj
{
NSLog(@"Tapjoy connect succeeded");
}
- (void)tjcConnectFail:(NSNotification *)notifyObj
{
NSError *error = notifyObj.userInfo[TJC_CONNECT_USER_INFO_ERROR];
NSInteger code = error.code;
NSString *message = error.localizedDescription;
NSString *underlyingErrorMessage = underlyingError != nil ? [NSString stringWithFormat:@" - %li %@", underlyingError.code, underlyingError.localizedDescription] : @"";
NSLog(@"%@", underlyingErrorMessage);
}
- (void)tjcConnectWarning:(NSNotification *)notifyObj
{
NSError *error = notifyObj.userInfo[TJC_CONNECT_USER_INFO_ERROR];
NSError *underlyingError = error.userInfo[NSUnderlyingErrorKey];
}
コンパイルを行い、アプリを実行して下さい。 実装が正しい場合は下記のようなログが出力されます:
2020-01-29 16:01:55.422 App Name[25869:1433019] [TJLog level: 4] Connect success with type:0
これでTapjoyがアプリで起動するようになりました。
Tapjoy にゲーム内でのレベルの最大値を伝えられます。この値は Connectの前、および後で設定できます。
[Tapjoy setMaxLevel:10];
setUserSegment
を呼び出して、ユーザーのセグメントを知らせられます。この値は Connectの前、および後で設定できます。
[Tapjoy setUserSegment:TJSegmentVIP];
[Tapjoy setUserSegment:TJSegmentPayer];
[Tapjoy setUserSegment:TJSegmentNonPayer];
[Tapjoy setUserSegment:TJSegmentUnknown];