自己管理通貨
ゲーム内報酬コールバックを設定し、サーバーでトランザクションを処理することで、Tapjoy Offerwall に自己管理ゲーム内通貨を設定します。
読み終わるまでの所要時間 7 分最終更新 6日前
自己管理通貨は、独自のサーバーでユーザーの通貨を処理するときに使用します。このメソッドを使用すると、ユーザーの通貨をより細かくコントロールできますが、すべてのユーザーの通貨の金額の保存と処理のバックエンド作業を完全に自分で行う必要があることも意味します。getCurrencyBalance、awardCurrency、spendCurrency は、管理通貨 でのみ使用できます。Tapjoy は、自己管理通貨に関するクライアントサイド/アプリ側の通知を提供しません。コールバックサーバーの呼び出し時にアプリとユーザーに通知する責任は皆さんにあります。自己管理通貨で動作するようにコールバックサーバーを自分で設定することは必須です。 Tapjoy はできる限り迅速にユーザーに報酬を与えるよう最善を尽くしていますが、ユーザーが即座に報酬を受け取れるという保証はできません。ユーザーへの報酬付与にかかる時間は、多くの要因が関与します。ベストプラクティスとして、アプリの起動時、アプリの再開時、レベル間、動画広告が閉じるとき、ストアのロード前など、特定のアプリイベントの後に、更新された残高を定期的に確認してください。また、オファーが完了するまでに時間がかかる可能性があることをユーザーに通知することをお勧めします。
コールバック URL
ユーザーがオファーを完了して通貨を獲得したら、この URL に対して HTTP GET リクエストを行います。パラメーターの形式は以下のとおりです。デフォルトのリクエストパラメーターには、snuid と currency (ユーザーのアカウントに追加する通貨の量)、ユーザーの Wi-Fi mac_address (使用可能な場合) が含まれます。<callback_url>?snuid=<user_id>¤cy=<currency>&mac_address=<mac_address>//Examplehttp://www.sampledoman.com/payments/offers/tapjoy?&snuid=42&currency=50&mac\_address=00-16-41-34-2C-A6
サーバーのレスポンス
Tapjoy サーバーは、サーバーから200403サーバーのレスポンス | ケース |
|---|---|
|
|
|
|
Tapjoy は、約 5 分おきに 4 日間コールバックを再試行します。Tapjoy のアルゴリズムは、サーバーの応答に 5 秒以上かかる場合、リクエストを失敗として扱います。
オプションの不正の検出と防止のパラメーター
ゲーム内通貨秘密鍵には、Dashboard (ダッシュボード) > Monetize (収益化) > Virtual Currency (ゲーム内通貨) > Create/Edit (作成/編集) でアクセスできます。このキーはアプリケーション SDK キーとは異なります。このゲーム内通貨秘密鍵を使用して、コールバックに署名します。 Currency に秘密鍵が存在する場合 (secret_key=パラメーター | 説明 | ノート |
|---|---|---|
| 付与された特定の通貨を示す識別子。常に一意になります。 | |
| ID、snuid、通貨、および秘密鍵の MD5 ハッシュ。 |
常に注意する必要がある不正シナリオ
- ID の再利用や正しくない検証子が見られる場合、コールバック URL は Tapjoy からのものではなく、不正と見なす必要があります。
- ユーザー ID に整数のみが含まれている場合は、簡単な検証を実行して、ユーザー ID が改ざんされていないことを確認することをお勧めします。例えば、Tapjoy は "001234" と "1234" の 2 つを別のユーザー ID と見なしますが、バックエンドサーバーロジックでは別と見なさない可能性があります。
検証子
検証子は、ID、snuid、通貨、秘密鍵の MD5 ハッシュをコロンで区切って計算します。Ruby コードでは、以下のようになります。サーバーは検証子を再計算し、一致しないリクエストをすべて拒否する必要があります。検証子が一致しない場合、サーバーは 403 Forbidden を返します。Digest::MD5.hexdigest("#{id}:#{snuid}:#{currency}:#{secret_key}")
改良されたコールバック 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" }}
パラメーター | タイプ | 説明 |
|---|---|---|
| string | このリクエストの一意のゲーム内報酬 ID |
| double | 獲得した収益 (ドル単位) |
| string | setCustomParameter メソッドを介して SDK に渡されたカスタムパラメーター |
| string | この通貨の一意の識別子 |
| integer | ユーザーに与えられる通貨額 |
| float | 通貨セール乗数 (該当する場合) |
| integer | ユーザーがこのオファーのすべてのタスクを完了した場合に獲得できる最大通貨。 |
| string | 広告主のオファーの名前 |
| string | これは現在サポートされていません |
| string | オファーのアイコンの URL |
| string | 広告主のアプリ名 |
| string | ユーザーが報酬を受け取る完了したタスクの名前または説明。 |
| boolean | 報酬が付与されるイベントが IAP イベントの場合は true |
| timestamp | ユーザーがこのオファーの報酬を獲得できなくなるまでのタイムスタンプ (秒単位)。 |
| string | このコンバージョンに関連付けられたプレースメント |
| string | 使用するプレースメントのタイプ |
| string | setUserID メソッドを介して SDK に渡されたユーザー ID |
| timestamp | このトランザクションのタイムスタンプ |
署名付き Tapjoy ヘッダーの例:HMAC_SHA-256(<Request-Body>,<Secret-Key>)
X-Tapjoy-Signature => 7205ccfdfa1fe28cd05a1b56a9508d898cc938aa555a6c18848097fe4ee0975b
ユーザー ID
自己管理通貨を使用している場合は、ユーザー ID を設定することが非常に重要です。この値は、コールバック URL でsnuidsetUserID// 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) {}];
ユーザー残高の設定
プレースメントをリクエストするたびに、現在の残高を 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 管理通貨に切り替えることはできません。そのため、変更することを希望する場合は、事前にこのことを十分に理解しておいてください。
- 初回起動時に (Tapjoy 管理通貨で使用されている) 古い SDK キーを使用し、getCurrencyBalance を呼び出して残高を取得します。
- getCurrencyBalance によって返される値で残高を更新します。
- 以降のすべての起動時に、新しい SDK キーを使用します。