Purchase Tracking

IAP情報によりユーザーをセグメントすることはTapjoy SDKで最も強力な機能の一つです。例えば、非課金ユーザーだけに広告を配信しながら、高課金ユーザーにはアプリ内アイテムプロモーションをするといった事が可能になります。このためにはユーザーのIAP情報をTapjoyに送る必要があり、その際は、Tapjoy.trackPurchase コールを使います。

Tapjoy SDK 11.2.0 以降では、Google Play ストアと Apple の App Store 用にAPIが別々に用意され、レシート情報を含める事によりダッシュボードに値を反映させる前にTapjoyで購入確認を行えるようになりました:

1. 実装

A. Google Play ストア:

Tapjoy.TrackPurchaseInGooglePlayStore(skuDetails, purchaseData, dataSignature, campaignId);

パラメータの説明:

  1. skuDetails – Product itemの詳細を含むJSON Object formatの文字列 (Specification on Google Playによる)
  2. purchaseData – Purchase orderの詳細を含むJSON formatの文字列。これはPurchaseコール後Operating Systemから返されます。確認を行わない場合はnullを使います。
  3. dataSignature – 開発者がprivate keyにより署名したpurchase dataの署名を含む文字列。Purchaseコール後Operating Systemから返されます。確認を行わない場合はnullを使います。
  4. campaignId – この課金を促したキャンペーンがある場合、そのPurchaseRequestのcampaign id。課金を促したキャンペーンをトラッキングしない場合はnullにします。

Androidでレシートの受領確認月のIAPトラッキングを行うためには、アプリのライセンスキーを "設定 -> アプリ設定 -> アナリティクス -> Receipt Validation" に設定します。

アプリのライセンスキーの取得の仕方は、Google Services ドキュメントの Licensing についての章を参照して下さい。

例:

if (purchaseData == "" || purchaseData == null) { 
    purchaseData = "DATA_WAS_EMPTY"; 
}

if (dataSignature == "" || dataSignature == null) { 
    dataSignature = "SIGNATURE_WAS_EMPTY"; 
}

Tapjoy.TrackPurchaseInGooglePlayStore(skuDetails, purchaseData, dataSignature, campaignId);

B. iOS App Store:

Tapjoy.TrackPurchaseInAppleAppStore("SWORD", "USD", 0.99, transactionID, null);

パラメータの説明:

  1. productId — プロダクトを区別する文字列

  2. currencyCode – ISO 4217 で規定された通貨を指定するアルファベット文字列("USD"、"KRW" 等)

  3. price — プロダクトの価格。 Double 値

  4. transactionId — iTunes IAP purchase processで生成されたレシートのトランザクションID。このパラメータは、IAP Purchase process で生成される SKPaymentTransaction クラスインスタンスの transactionIdentifier プロパティで参照可能です。このメソッドを呼び出す時点で SKPaymentTransaction クラスインスタンスの transactionState プロパティの値が SKPaymentTransactionStatePurchased になっていない場合は、集計時に不正購入と見なされる場合があります。

  5. campaignId — の課金を促したキャンペーンがある場合、そのPurchaseRequestのcampaign id。課金を促したキャンペーンをトラッキングしない場合はnullにします。

例:

if (transactionId == "" || transactionId == null) { 
    transactionId = "ID_WAS_EMPTY"; 
}
TapjoyUnity.Tapjoy.TrackPurchaseInAppleAppStore(productId, currencyCode, productPrice, transactionId, campaignId);

2. 購入確認なしのトラッキング:

SDK 11.2.0 以前では、次のように呼び出します。この場合、課金の確認処理はパブリッシャーで必ず行って下さい:

Tapjoy.trackPurchase("SWORD", "USD", 0.99, null);

通貨コードはISO 4217 standardをご利用ください。

campaignIdは当該購入をプロモーションを識別するための文字列であれば何でも構いません。

IAPトラッキングを実装しますと、管理画面上でIAPレベニューグラフをご確認いただけます。

3. Referrer (Android)

Tapjoyの InstallReferrer クライアントをTapjoyアナリティクス用に実装する

  1. プロジェクトのクラスファイル your_project.cs の start() メソッドで Tapjoy.ActivateInstallReferrerClient(); を呼び出す
  2. com.android.installreferrer:installreferrer をダウンロードし、Unityプロジェクトの Assets > Android > Plugins フォルダにインポートする

4. 重要事項

IAP購入レシートをTapjoyに送る前に、Tapjoy IAPトラッキングに含めるか、Google Play のレシートバリデーション (もしくは利用しているストアでの適切なバリデーション) を行ってください。レシートの受領確認を行わない場合、恐らく、統計数値およびセグメント情報は不正ユーザーによる購入情報により歪められる事になります。

フリーミアムアプリでのIAPが増加しているため、アプリ開発者はすべての購入を検証して不正を防ぐ事が重要です。アプリ内でレシートバリデーションを行い、不正なトランザクションがデータに混じり混む事を防止するよう強く勧めます。これにより、携帯のアナリティクスデータに減少された購入の情報のみを組み合わせられるようになります。レシートパラメータを含めない場合、Tapjoyではレシートバリデーションを既に行っているとみなしてデータを検証されたものとして受け入れます。

パブリッシャーはIAP Receipt Validation機能を使って簡単に、最小限の実装でTapjoyダッシュボードで購入情報を追跡できます。

ユーザーが購入を行うたびに、IAPトラッキング用APIを一度呼ぶだけです。レシートパラメータを含める事で、ダッシュボードに表示されるIAPアナリティクスデータを正確に保てます。Tapjoy IAP トラッキングAPIの呼びだし時には、AppleおよびGoogleのストアからのレシート情報を指定でき、Tapjoyのサーバではダッシュボードのデータに加える前にトランザクションが正しいかどうかを検証します。

レシートのバリデーションが完了すればデータの正確性が担保されるため、Tapjoyの将来バリューマップ機能や購入情報によるIAPプロモーションや日課金者に対する広告表示等によりユーザーのLTVを真に向上できるようになります。