iOS SDK実装手順

過去のバージョン履歴については、こちらのリリースノートを御覧ください。

Unityの実装手順については, こちらをご確認ください。 https://github.com/tenjin/tenjin-unity-sdk.

Tenjin iOS SDK (v1.8.0) (268KB) (Deployment Version 6.0+)

Note: Tenjin SDKを実装する際には、最新のXcodeを使用することを推奨いたします。

Tenjin SDK初期化手順:


  • podsをお使いの場合、Podfilepod 'TenjinSDK'を追加後、pod install コマンドを実行してください。その後ステップ5にお進みください。
1. こちらより SDKコンテンツをダウンロードします。
2. libTenjinSDK.aTenjinSDK.h をプロジェクトにドラッグします。32ビットのiOSシミュレーターデバイス(i386)をお使いの場合、libTenjinSDK.aの代わりにlibTenjinSDKUniversal.aをお使いください。
3. 下記フレームワークをプロジェクトに追加します。:
  • AdSupport.framework
  • StoreKit.framework
  • iAd.framework

Dashboard

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

Dashboard

5. AppDelegateファイル(デフォルトはAppDelegate.m)内に#import "TenjinSDK.h"を追加します。
6. 管理画面より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
    ...
}

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

https://developer.apple.com/library/archive/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/TheAppLifeCycle/TheAppLifeCycle.html

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
    //...
}
8. テスト用デバイスを追加し、TenjinのSDKデバッガツールを用いてイベントが正しく送信されているか確認します。

Tenjinの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上で正しくユーザをトラッキングするには、ip_address, advertising_id, developer_device_id, limit_ad_tracking, referrer (Androidの場合) または iad (iOSの場合) が少なくとも必要となります。

特定のデバイスパラメータのみを取得するには、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

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


課金イベントの実装には下記の二通りがあります。:

1. (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];

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

または

2. トランザクションをマニュアルで連携 (課金イベントがAppleによって処理されないケースの場合必要):

この方法の場合, transactionのproductName, currencyCode, quantity, およびユニット price を連携することが必要です。

NSString *productName = @"product_1";
NSString *currencyCode = @"USD";
NSDecimalNumber *price = [NSDecimalNumber decimalNumberWithString:@"0.99"];
NSInteger quantity = 1;

[TenjinSDK  transactionWithProductName: productName
            andCurrencyCode: currencyCode
            andQuantity: quantity
            andUnitPrice: price];
  • ProductName -> プロダクトの名称またはID
  • CurrencyCode -> 通貨コード
  • Quantity -> 当該課金イベントに含まれるプロダクトの数
  • UnitPrice -> プロダクトのプライス

トータルの課金額は以下のように計算されます。 TotalRevenue = Quantity * UnitPrice

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


注意点: 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経由でユーザがインストールした後、そのユーザをアプリ内の特定ページに遷移させることが可能です。registerDeepLinkHandlerメソッドを利用して、TenjinのトラッキングURLに含まれるparams[@"deferred_deeplink_url"]パラメータにアクセスすることができます。 詳細なテスト手順はこちらをご確認ください。


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    //initialize the Tenjin SDK like you normally would for attribution
    [TenjinSDK init:@"<API_KEY>"];
    [TenjinSDK connect]

    //If you want to utilize the deeplink capabilities in Tenjin, utilize the registerDeepLinkHandler to retrieve the deferred_deeplink_url from the params NSDictionary object
    [[TenjinSDK sharedInstance] registerDeepLinkHandler:^(NSDictionary *params, NSError *error) {
        if([params[@"clicked_tenjin_link"] boolValue]){
            if([params[@"is_first_session"] boolValue]){

                //use the params to retrieve deferred_deeplink_url through params[@"deferred_deeplink_url"]
                //use the deferred_deeplink_url to direct the user to a specific part of your app

            } else{

            }
        }
    }];
}

バージョン1.7.2以降のiOS SDKをお使いの場合、paramsパラメータを用いて、registerDeepLinkHandler内でインストールした後のロジックを組むことが可能です。下記例のように、売り切り型のアプリの場合、インストール後に売上イベントを送ることが可能です。


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    //initialize the Tenjin SDK like you normally would for attribution
    [TenjinSDK init:@"<API_KEY>"];
    [TenjinSDK connect]

    //If you want to utilize the deeplink capabilities in Tenjin, utilize the registerDeepLinkHandler to retrieve the deferred_deeplink_url from the params NSDictionary object
    [[TenjinSDK sharedInstance] registerDeepLinkHandler:^(NSDictionary *params, NSError *error) {

          if([params[@"is_first_session"] boolValue]){
              //send paid app price and revenue to Tenjin

          } else{

          }

    }];
}

results matching ""

    No results matching ""