ドキュメント

サポート

自己管理通貨

ゲーム内報酬コールバックを設定し、サーバーでトランザクションを処理することで、Tapjoy Offerwall に自己管理ゲーム内通貨を設定します。
読み終わるまでの所要時間 7 分最終更新 6日前

自己管理通貨は、独自のサーバーでユーザーの通貨を処理するときに使用します。このメソッドを使用すると、ユーザーの通貨をより細かくコントロールできますが、すべてのユーザーの通貨の金額の保存と処理のバックエンド作業を完全に自分で行う必要があることも意味します。getCurrencyBalance、awardCurrency、spendCurrency は、管理通貨 でのみ使用できます。Tapjoy は、自己管理通貨に関するクライアントサイド/アプリ側の通知を提供しません。コールバックサーバーの呼び出し時にアプリとユーザーに通知する責任は皆さんにあります。自己管理通貨で動作するようにコールバックサーバーを自分で設定することは必須です。 Tapjoy はできる限り迅速にユーザーに報酬を与えるよう最善を尽くしていますが、ユーザーが即座に報酬を受け取れるという保証はできません。ユーザーへの報酬付与にかかる時間は、多くの要因が関与します。ベストプラクティスとして、アプリの起動時、アプリの再開時、レベル間、動画広告が閉じるとき、ストアのロード前など、特定のアプリイベントの後に、更新された残高を定期的に確認してください。また、オファーが完了するまでに時間がかかる可能性があることをユーザーに通知することをお勧めします。

コールバック URL

ユーザーがオファーを完了して通貨を獲得したら、この URL に対して HTTP GET リクエストを行います。パラメーターの形式は以下のとおりです。
<callback_url>?snuid=<user_id>&currency=<currency>&mac_address=<mac_address>//Examplehttp://www.sampledoman.com/payments/offers/tapjoy?&amp;snuid=42&amp;currency=50&amp;mac\_address=00-16-41-34-2C-A6
デフォルトのリクエストパラメーターには、snuid と currency (ユーザーのアカウントに追加する通貨の量)、ユーザーの Wi-Fi mac_address (使用可能な場合) が含まれます。

サーバーのレスポンス

Tapjoy サーバーは、サーバーから
200
または
403
のレスポンスを期待します。

サーバーのレスポンス

ケース

200
  • ユーザーに通貨が正常に付与されました。
403
  • verifier パラメーターが計算された値と一致しません。
  • snuid パラメーターがシステムに対して不明です。
  • 再試行すべきでない他のエラーがありました。
Tapjoy サーバーが 200 または 403 以外のレスポンスを受信した場合、Tapjoy は引き続き再試行します。 Tapjoy は、約 5 分おきに 4 日間コールバックを再試行します。Tapjoy のアルゴリズムは、サーバーの応答に 5 秒以上かかる場合、リクエストを失敗として扱います。

オプションの不正の検出と防止のパラメーター

ゲーム内通貨秘密鍵には、Dashboard (ダッシュボード) > Monetize (収益化) > Virtual Currency (ゲーム内通貨) > Create/Edit (作成/編集) でアクセスできます。このキーはアプリケーション SDK キーとは異なります。このゲーム内通貨秘密鍵を使用して、コールバックに署名します。 Currency に秘密鍵が存在する場合 (
secret_key=
)、コールバックリクエストに以下のパラメーターを追加します。

パラメーター

説明

ノート

id
付与された特定の通貨を示す識別子。常に一意になります。
currency_id
ではなく、
request_id
を表します。
verifier
ID、snuid、通貨、および秘密鍵の MD5 ハッシュ。

常に注意する必要がある不正シナリオ

  • ID の再利用や正しくない検証子が見られる場合、コールバック URL は Tapjoy からのものではなく、不正と見なす必要があります。
  • ユーザー ID に整数のみが含まれている場合は、簡単な検証を実行して、ユーザー ID が改ざんされていないことを確認することをお勧めします。例えば、Tapjoy は "001234" と "1234" の 2 つを別のユーザー ID と見なしますが、バックエンドサーバーロジックでは別と見なさない可能性があります。

検証子

検証子は、ID、snuid、通貨、秘密鍵の MD5 ハッシュをコロンで区切って計算します。Ruby コードでは、以下のようになります。
Digest::MD5.hexdigest("#{id}:#{snuid}:#{currency}:#{secret_key}")
サーバーは検証子を再計算し、一致しないリクエストをすべて拒否する必要があります。検証子が一致しない場合、サーバーは 403 Forbidden を返します。

改良されたコールバック URL

より多くの情報が含まれ、セキュリティが強化されるように、上記のコールバックを改良しました。この改良バージョンを使用したい場合は、このバージョンのコールバックを有効にするようアカウントマネージャーまたはサポートチームに連絡してください。 ユーザーがオファーを完了して通貨を獲得したら、入力した URL に POST リクエストを行います。パラメーターの形式は以下のとおりです。
{ "cp": "some_string", "currency": { "currency_sale": "1.0", "id": "reward_id", "reward": 100 }, "id": "some_id", "offer": { "advertiser_app_name": "a_cool_app", "currency": { "max_reward_value": 1360 }, "expires_at": 1768175428, "icon_url": "some_URL/icon.jpg", "name": "eye_catching_headline", "task":{ "is_iap": false, "name": "event_name" }, "type": "" }, "placement":{ "content_type": "offerwall", "name": "placement_name" }, "rev": 100, "timestamp": 1762993750, "user": { "id": "user_id" }}

パラメーター

タイプ

説明

id
stringこのリクエストの一意のゲーム内報酬 ID
rev
double獲得した収益 (ドル単位)
cp
stringsetCustomParameter メソッドを介して SDK に渡されたカスタムパラメーター
currency.id
stringこの通貨の一意の識別子
currency.reward
integerユーザーに与えられる通貨額
currency.currency_sale
float通貨セール乗数 (該当する場合)
currency.max_reward_value
integerユーザーがこのオファーのすべてのタスクを完了した場合に獲得できる最大通貨。
offer.name
string広告主のオファーの名前
offer.type
stringこれは現在サポートされていません
offer.icon_url
stringオファーのアイコンの URL
offer.advertiser_app_name
string広告主のアプリ名
offer.task.name
stringユーザーが報酬を受け取る完了したタスクの名前または説明。
offer.task.is\_iap
boolean報酬が付与されるイベントが IAP イベントの場合は true
offer.expires_at
timestampユーザーがこのオファーの報酬を獲得できなくなるまでのタイムスタンプ (秒単位)。
placement.name
stringこのコンバージョンに関連付けられたプレースメント
placement.content_type
string使用するプレースメントのタイプ
user.id
stringsetUserID メソッドを介して SDK に渡されたユーザー ID
timestamp
timestampこのトランザクションのタイムスタンプ
JSON 本文は最初に再帰的にソートされ、SHA256 ハッシュアルゴリズムを使用してハッシュされます。検証子は、POST 通貨コールバックリクエスト本文と共有秘密鍵 (コールバック URL とともに Tapjoy ダッシュボードにあります) から生成されます。この検証子は、POST 通貨コールバックリクエストヘッダーで送信されます。
HMAC_SHA-256(<Request-Body>,<Secret-Key>)
署名付き Tapjoy ヘッダーの例:
X-Tapjoy-Signature => 7205ccfdfa1fe28cd05a1b56a9508d898cc938aa555a6c18848097fe4ee0975b

ユーザー ID

自己管理通貨を使用している場合は、ユーザー ID を設定することが非常に重要です。この値は、コールバック URL で
snuid
に設定されている値です。コンテンツがリクエストされる前に、接続時に接続フラグを使用してユーザー ID を設定することをお勧めします。
正しく設定しないと、ユーザーに報酬が与えられず、自分にも支払いが発生しなくなります。ユーザー ID は一意のユーザー ID (通常は数字) に設定する必要があります。 データセキュリティと GDPR への準拠の目的で、setUserID パラメーターにはユーザー名、本名、E メールアドレスなど、認識可能および識別可能な情報を入れないでください。 セキュリティと不正検出の目的で、ユーザー ID はユーザーの生存期間を通じて定数にする必要があります。(例えば、ユーザーのレベルやスコアなどの情報の伝達にユーザー ID パラメーターを使用しないでください。) ユーザー ID は、最大 190 文字まで使用できます。 以下のプラットフォーム固有のコードサンプルは、接続フラグの使用方法と、必要に応じて
setUserID
API を (接続後に) 直接呼び出す方法を示しています。API を直接呼び出す場合は、コールバックを使用して ID が正しく設定されていることを確認します。可能な場合は接続フラグを使用することを強くお勧めします。
// Recommended approach using connect flagNSDictionary *connectFlags = @{TJC_OPTION_USER_ID : @"<USER_ID_HERE>"};[Tapjoy connect:@"SDK_KEY_GOES_HERE" options:connectFlags];// Setting the user id directly[Tapjoy setUserIDWithCompletion:@"<USER_ID_HERE>" completion:^(BOOL success, NSError *error) {}];
その他の例は、iOSAndroidUnity、および React Native のクイックスタートページにがあります。 トラブルシューティング: setUserID を呼び出しているときに、コールバック URL の snuid が期待どおりの値でない場合は、ユーザーがアプリ内 Offerwall または tapjoy.com にアクセスしてオファーを完了する前に、setUserID を呼び出す必要があります。デバイスに関連付けられている userID がない場合、Tapjoy はコールバック URL にデバイス ID を snuid として送信します。例えば、ユーザーはアプリを起動し、アプリが userID を送信する前に Tapjoy.com にアクセスすることができます。これを防ぐには、接続呼び出し後に起動のたびに setUserID が呼び出されるようにする必要があります。 ユーザー ID を設定していない場合、システムは利用できる中で最も適切なデバイス ID を使用しようとします。ほとんどの場合、これはデバイスの広告 ID になります。ただし、SDK のバージョン、デバイスのモデル/バージョン、デバイスの OS バージョン、Google Play 開発者サービスによって、正確な ID は異なる場合があります。その他の利用可能な値には、Android ID、udid、mac_address があります。

ユーザー残高の設定

プレースメントをリクエストするたびに、現在の残高を Tapjoy ユーザーに通知できます。これはプレースメントのコンテンツをリクエストする前に設定する必要があります。
TJPlacement *placement = [TJPlacement placementWithName:@"placementName" delegate:nil];[placement setBalance:100 forCurrencyId:@"1234" withCompletion:^(NSError * _Nullable error) { if (error != nil) { //Failure NSString *message = error.localizedDescription; } else { //Success }}];

必要な金額

残高を設定する場合は、プレースメントに必要な金額の値も設定できます。
TJPlacement* placement = [TJPlacement placementWithName:@"placementName" delegate:nil];[placement setRequiredAmount:100 forCurrencyId:@"1234" withCompletion:^(NSError * _Nullable error) { if (error != nil) { //Failure NSString *message = error.localizedDescription; } else { //Success }}];

ゲーム内報酬コールバック IP ホワイトリスト

ゲーム内報酬コールバックサーバーにアクセスするための追加権限 (ホワイトリスト) を必要とする場合は、以下のリストに示す Tapjoy の IP を使用できます。(最終更新日: 2024 年 5 月 12 日)
18.215.207.8918.235.142.16523.20.255.11323.23.134.1653.210.188.323.215.42.1403.217.209.1773.218.95.353.219.236.533.231.137.161

Tapjoy 管理から自己管理への切り替え

まだアプリを公開していない場合は、Tapjoy ダッシュボードの Edit Virtual Currency (仮想通貨を編集) 画面から、Tapjoy 管理通貨を自己管理通貨に切り替えることができます。コールバック URL フィールドには、必ず適切な形式の URL を入力してください。そうしないと、変更が実際に行われません。 Tapjoy によって管理される通貨があるライブアプリケーションの場合、切り替えのプロセスはより複雑です。いくつか考慮すべき点があります。
  • 新しい SDK キーで新しいアプリを作成する必要があります。これにより、最新バージョンにアップグレードしていない古いバージョンのアプリを使用しているユーザーが影響を受けることがなくなります。アプリの自己管理通貨バージョンに同じ SDK キーを使用する場合、Tapjoy 管理通貨バージョンのすべてのユーザーはオファーを完了しても報酬は得られません。
  • 古いアプリ ID を参照する広告キャンペーンを無効にし、新しいアプリ ID を参照する広告キャンペーンを再作成する必要があります。
  • 自己管理に切り替えるには、アプリでコードの変更が必要になります。getCurrencyBalance、awardCurrency、spendCurrency は管理通貨でのみ使用できるため、使用できません。
  • 変更を検討する前にアカウントマネージャーに連絡することをお勧めします。
  • 自己管理通貨から Tapjoy 管理通貨に切り替えることはできません。そのため、変更することを希望する場合は、事前にこのことを十分に理解しておいてください。
ユーザーの残高は、以下のステップに従って移行することをお勧めします。
  1. 初回起動時に (Tapjoy 管理通貨で使用されている) 古い SDK キーを使用し、getCurrencyBalance を呼び出して残高を取得します。
  2. getCurrencyBalance によって返される値で残高を更新します。
  3. 以降のすべての起動時に、新しい SDK キーを使用します。
自己管理への移行を検討しているが、独自のゲーム内通貨サーバーの実装方法が不明な場合は、Parse または UrbanAirship のソリューションを確認することをお勧めします。