iOS SDK 実装手順

  • 過去のバージョン履歴については、こちらのリリースノートを御覧ください。
  • Unityの実装手順については, こちらをご確認ください。
  • ご質問がある方は、support@tenjin.comまでお問い合わせください。

注:

  • v1.12.0以上のバージョンのiOS SDKを使用する場合は、Xcode 12の使用が必要となります。
  • AppTrackingTransparencyを使用する場合、.plistファイルのアップデート、Privacy - Tracking Usage Description (NSUserTrackingUsageDescription)の追加及びユーザに表示するテキストメッセージの追加を行ってください。当ライブラリはiOS 14.0以上で使用可能となります。
  • Appleサーチアドアトリビューションをお使いの場合、SDKのバージョンをv1.12.6以上にし、AdServices.frameworkライブラリを追加してください。当ライブラリはiOS 14.3以上で使用可能となります。

目次

SDK実装手順


podsをお使いの場合、Podfilepod 'TenjinSDK'を追加後、pod install コマンドを実行してください。その後ステップ5にお進みください。

  1. こちらより最新のSDKコンテンツをダウンロードします。
  2. libTenjinSDK.aTenjinSDK.h をプロジェクトにドラッグします。32ビットのiOSシミュレーターデバイス(i386)をお使いの場合、libTenjinSDK.aの代わりにlibTenjinSDKUniversal.aをお使いください。
  3. 下記フレームワークをプロジェクトに追加します。
    • AdServices.framework
    • AdSupport.framework
    • AppTrackingTransparency.framework
    • iAd.framework
    • StoreKit.framework

Dashboard

  1. ビルド設定に -ObjC のリンカーフラグを追加します。 Dashboard

  2. AppDelegateファイル(デフォルトはAppDelegate.m)内に#import "TenjinSDK.h"を追加します。

  3. 管理画面よりAPIキーを取得します。 7a. didFinishLaunchingWithOptionsメソッド内に下記を追加します。
    [TenjinSDK init:@"<API_KEY>"];
    [TenjinSDK connect];
    

下記がAppDelegate.mファイル内での実装例です。

#import "TenjinSDK.h"

@implementation TJNAppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [TenjinSDK init:@"<API_KEY>"];
    [TenjinSDK connect];

    //All your other stuff
    ...
}

注:Swift 5をお使いの場合、init()の代わりにgetInstance()をお使いください。Swiftを用いたサンプルのアプリについてはこちら

初期化処理についてはdidFinishLaunchingWithOptions以外にも用途に応じて他のメソッドを使用することも可能です。iOSのアクティビティライフサイクルについては下記をご確認ください。

https://developer.apple.com/documentation/uikit/app_and_environment/managing_your_app_s_life_cycle

7b. 他サービスでディファードディープリンクを既に使用している場合の初期化例 (7a.と7b.のどちらか一方のみをご使用ください) もし、他サービスでディファードディープリンクを使用している場合、それらのディープリンクをTenjin側に連携してアトリビューションのロジックと紐付けることが可能です。

#import "TenjinSDK.h"

@implementation TJNAppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    [TenjinSDK init:@"<API_KEY>"];

    //get your deep link from your other 3rd party service
    NSURL *url = [NSURL withString: @"your_deep_link"];

    //if you have a deep link that's generated from a third party service then pass it to tenjin to handle the attribution of deep links holistically
    if(url) {
      [TenjinSDK connectWithDeferredDeeplink:url];
    }
    else{
      [TenjinSDK connect];
    }

    //All your other stuff
    //...
}
  1. テスト用デバイスを追加し、TenjinのSDKデバッガツールを用いてイベントが正しく送信されているか確認します。

ATTrackingManagerを使用した場合のTenjinの初期化処理


iOS 14では、ATTrackingManagerを使用して許可プロンプトを表示し、ユーザをオプトイン/オプトアウトする事が可能です。 デバイスがトラッキングの許可を行わない場合は、IDFAはゼロとなります。デバイスがトラッキングの許可を行った場合、connect()メソッドを通じてIDFAがサーバ側に送られます。

#import "TenjinSDK.h"

@implementation TJNAppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    [TenjinSDK init:@"<API_KEY>"];

    if (@available(iOS 14, *)) {
        [ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
            [TenjinSDK connect];
        }];
    } else {
        [TenjinSDK connect];
    }
}

ATT許可プロンプトの表示

AppleのATTガイドラインに準拠するには、ATT許可プロンプトの説明を入力し、アプリケーションへの許可リクエストを実装する必要があります。

注: ゲーム内で広告を配信する前に、許可リクエストを実装する必要があります。

ユーザー追跡の説明の設定

XcodeプロジェクトのInfo.plistファイル内のNSUserTrackingUsageDescriptionキーを使用して説明の内容を設定します。デバイス追跡データの使用許可を要求している理由をユーザーに通知するメッセージを提供する必要があります。

  • Xcodeプロジェクトナビゲータで、 Info.plistファイルを開きます。
  • プロパティリストエディタの任意のキーの横にある追加ボタン(+)をクリックして、新しいプロパティキーを作成します。
  • キー名 NSUserTrackingUsageDescriptionを入力します。
  • 文字列値のタイプを選択します。
  • 値フィールドにアプリ追跡のメッセージを入力します。いくつかの例が含まれます:
    • お客様のデータを使用して、より優れたパーソナライズされた広告エクスペリエンスを提供します。
    • 使用しているアプリ、使用しているデバイス、使用している国に基づいて、最も興味のあるアプリや製品の広告を表示するようにしています。
    • 私たちは、あなたが使用するアプリに基づいて、あなたにとって最も興味深いアプリや製品の広告を表示しようとします。

注: Appleは、プライバシー関連の機能に直面しているすべてのエンドユーザーの許容可能な使用とメッセージングを定義する特定のアプリストアガイドラインを提供しています。Tenjinは法律上の助言を提供していません。したがって、このページの情報は、お客様のビジネスとプロセスの法的要件、およびそれらに対処する方法を決定するための法的手段の代替ではありません。

SKAdNetworkとコンバージョンバリュー


SKAdNetworkの導入に従って, TenjinではregisterAppForAdNetworkAttribution()updateConversionValue(_:)の2種類のラッパーメソッドを用意しています。 これらのメソッドは、該当のSKAdNetworkのメソッドをコールし、コンバージョンバリューをTenjinのサーバに送信します。

updateConversionValue(_:)の6ビットの値はアプリ内イベントに対応する値で、バイナリ値ではなく0-63の間の整数値である必要があります。これ以外の数値の場合、サーバ側でエラーとなります。

#import "TenjinSDK.h"

@implementation TJNAppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    [TenjinSDK init:@"<API_KEY>"];

    //
    // This will call [SKAdNetwork registerAppForAdNetworkAttribution]
    //
    [TenjinSDK registerAppForAdNetworkAttribution];

    [TenjinSDK connect];

    //
    // This will call [SKAdNetwork updateConversionValue: <YOUR 6 bit value>] 
    // and also send conversion value to our servers.
    //
    // You will need to use a value between 0-63 for <YOUR 6 bit value>.
    //
    [TenjinSDK updateConversionValue: <YOUR 6 bit value>];
}

SKAdNetworkとiOS 15+広告主向けポストバック


SKAdNetworkのポストバックにおいて、Tenjinを送信先に設定するためには、下記をご設定ください。

  1. XCodeのプロジェクトナビゲーターで、Info.plistを選択します。
  2. プロパティリストエディタ上で、keyのそばの追加ボタン(+)をクリックし、リターンを押下します。
  3. NSAdvertisingAttributionReportEndpointをkeyの名称として入力します。
  4. Typeのカラムで、ポップアップメニューからStringを選択します。
  5. https://tenjin-skan.comを入力します。

これらのステップは、Appleのインストラクション: https://developer.apple.com/documentation/storekit/skadnetwork/configuring_an_advertised_app を元にしています。

GDPR対応


GDPRへの対応において、Tenjin SDKではデバイス/ユーザのオプトイン, オプトアウトおよび各デバイスパラメータのオプトイン, オプトアウトが可能です。OptOut()メソッドにより、Tenjinにリクエストが送られることはありません。

オプトイン, オプトアウトの具体例:

#import "TenjinSDK.h"

@implementation TJNAppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

  [TenjinSDK init:@"<API_KEY>"];

  if ([self checkOptInValue]) {
      [TenjinSDK optIn];
  }
  else {
      [TenjinSDK optOut];
  }

  [TenjinSDK connect];

  //All your other stuff
  //..
}

-(BOOL) checkOptInValue
{
  // check opt-in value
  // return YES; // if user opted-in
  return NO;
}

特定のデバイスパラメータをオプトイン,オプトアウトするにはOptInParams() または OptOutParams()メソッドを使用します。OptInParams()メソッドにより指定されたパラメータのみを送信します。OptOutParams()メソッドにより、指定されたパラーメータ以外のパラメータを送信します。

注意点:Tenjin上で正しくユーザをトラッキングするには、developer_device_idが必要となります。

特定のデバイスパラメータのみを取得するには、OptInParams()を使用します。下記具体例では、ip_address, advertising_id, developer_device_id, limit_ad_tracking, referrer, and iadのみを取得しています。

[TenjinSDK init:@"<API_KEY>"];

NSArray *optInParams = @[@"ip_address", @"advertising_id", @"developer_device_id", @"limit_ad_tracking", @"referrer", @"iad"];
[TenjinSDK optInParams:optInParams];

[TenjinSDK connect];

特定のデバイスパラメータ以外のパラメータを取得するには、OptOutParams()メソッドを使用します。下記具体例では、locale, timezone, または build_id以外のパラメータを送信ししています。

[TenjinSDK init:@"<API_KEY>"];

NSArray *optOutParams = @[@"country", @"timezone", @"language"];
[TenjinSDK optOutParams:optOutParams];

[TenjinSDK connect];
パラメータ 詳細 参照
advertising_id IDFA iOS
developer_device_id ベンダーID iOS
limit_ad_tracking limit ad tracking enabled iOS
platform プラットフォーム iOS
iad Appleサーチアドパラメータ iOS
os_version OSバージョン iOS
device デバイス名 iOS (hw.machine)
device_model デバイスモデル iOS (hw.model)
device_model_name デバイスモデル名 iOS (hw.model)
device_cpu デバイスCPU名 iOS (hw.cputype)
os_version_release リリース時OSバージョン iOS
build_id build ID iOS (kern.osversion)
locale デバイスロケール iOS
country デバイスロケール国 iOS
timezone タイムゾーン iOS

アプリ内課金イベント実装手順


(SKPaymentTransaction *) transaction(NSData *)receipt オブジェクトの連携:

課金イベントの検証後(SKPaymentTransactionStatePurchased)、 Tenjin側に課金トランザクションを連携することが可能です。

//Get the NSData receipt
NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL];
NSData *receiptData = [NSData dataWithContentsOfURL:receiptURL];

//Pass the transaction and the receiptData to Tenjin
[TenjinSDK transaction: transaction andReceipt: receiptData];

免責事項: Tenjinで初めて課金イベントを実装する場合は、課金データを使用してユーザー獲得キャンペーンを拡大する前に、使用している他のツールでデータが正しいことを確認してください。

サブスクリプション課金

サブスクリプションイベントの場合、 管理画面よりIAP shared secretを該当のアプリに追加してください。** 注意点:各サブスクリプション期間中に1度だけサブスクリプショントランザクションを送ってください。(例えば、月ごとのサブスクリプションの場合、1月に1度のトランザクション)

カスタムイベントの実装手順


注意点: SDK初期化処理の前にカスタムイベントを送らないようにしてください。 初期化処理は各カスタムイベント発生の前に実施する必要があります。

カスタムイベントの送信には下記メソッドを使います。:

  • sendEventWithName: (NSString *)eventName

カスタムイベントを利用して、特定のイベントを獲得したユーザの流入元のコスト情報などに紐付けることが可能です。下記が実装例となります。

//send a particular event for when someone swipes on a part of your app
[TenjinSDK sendEventWithName:@"swipe_right"];

また、カスタムイベントにはNSString eventValueを含めることが可能です。 Tenjinは同じeventNameのイベントのカウントまたは総和を計算するのにeventValueを使用します。eventValueはINTEGER形である必要があります。 eventValueがINTEGER型でない場合, イベントは送信されません。

ディファードディープリンク


TenjinのトラッキングURL経由でユーザがインストールした後、そのユーザをアプリ内の特定ページに遷移させることが可能です。

ディファードディープリンクの機能は有償の機能となります。料金の詳細については、お客様のアカウントマネージャにお問い合わせください。

サーバ間インテグレーション


Tenjinはサーバ間のインテグレーションもサポートしております(有償のプロダクト)。ドキュメントをご覧になりたい方は、support@tenjin.comまでメールをお送りいただき、料金についてご相談ください。

アプリサブバージョン


A/Bテストを実施する場合、appendAppSubversionメソッドを用いて、アプリバージョンに固定の数値を付加することが可能です。例えば、アプリのバージョンが1.0.1appendAppSubversion: @8888をセットすると、レポートされるアプリバージョンは 1.0.1.8888となります。DataVaultを用いれば、このアプリバージョンごとのパフォーマンスを分析することが可能です。

[TenjinSDK init:@"<API_KEY>"];
[TenjinSDK appendAppSubversion:@8888];
[TenjinSDK connect];

インプレッションレベル広告収益の実装


Tenjinでは下記のメディエーションプロバイダにおいて、インプレッションレベルの広告収益(ILRD)をサポートしています。

  • AppLovin
  • IronSource
  • HyperBid
  • AdMob
  • Topon

この機能を使用すると、ユーザーへの広告のインプレッションごとに広告収益に対応するイベントを受け取ることができます。この機能を有効にするには、以下の手順に従ってください。

ILRDは有償のプロダクトとなります。料金については、お客様のアカウントマネージャまでお問い合わせください。

テスト

実装が正しくできているかどうかを確認するには、SDK Live Dataを使用します。 管理画面のDIAGNOSE-> Test devicesより、テストデバイスのリストにadvertising_idを追加します。 SDK Live Dataにアクセスして、アプリからテストイベントを送信します。イベントがリアルタイムで確認できます。

results matching ""

    No results matching ""