Unity Offerwall Offerwall の収益化 Tapjoy 管理通貨 Tapjoy Offerwall の管理通貨を使用すると、Tapjoy のサーバー上にユーザー通貨残高を保存して管理できます。
読み終わるまでの所要時間 6 分
最終更新 2ヶ月前 Tapjoy 管理通貨を使用すると、Tapjoy のサーバーを使用してユーザーの通貨額を保存できます。これは、Tapjoy のパブリッシャー SDK を統合するすべての開発者向けに Tapjoy が提供する無料のサービスです。これにより、アプリケーションのユーザーの通貨データを格納するために通常必要なバックエンド作業が不要になります。統合は比較的簡単です。統合手順を以下に示します。
通貨残高の取得
ユーザーの現在のゲーム内通貨を取得するには、以下のメソッドを呼び出します。
ゲーム内通貨のベストプラクティス : getCurrencyBalance をできるだけ頻繁に呼び出して、ユーザーの残高を常に最新にしておくことをお勧めします。ユーザーの残高を確認するタイミングとしては、アプリの起動時、アプリの再開時、Tapjoy ビューの終了時、プレースメントコンテンツの消去時が一般的です。多くの場合、getCurrencyBalance の呼び出し (または使用しているプラットフォームでの同等の呼び出し) は、広告コンテンツが消えてから 3.5 秒後に行うと特に便利です。これにより、通貨残高を確認するまでにシステムを通過する十分な時間が与えられます。コンテンツの表示が完了した直後に getCurrencyBalance を確認すると、残高が照会されるまでに、その報酬がユーザーの残高に反映されない可能性があります。
注
Tapjoy はできる限り迅速にユーザーに報酬を与えるよう最善を尽くしていますが、ユーザーが即座に報酬を受け取れるという保証はできません。ユーザーへの報酬付与にかかる時間は、多くの要因が関与します。ベストプラクティスとして、動画広告が閉じるとき以外に、アプリの起動時、アプリの再開時、レベル間、ストアのロード前など、特定のアプリイベントの後に、更新された残高を定期的に確認してください。また、オファーが完了するまでに時間がかかる可能性があることをユーザーに通知することをお勧めします。
// This method requests the tapjoy server for current virtual currency of the user. //Get currency [Tapjoy getCurrencyBalanceWithCompletion:^(NSDictionary *parameters, NSError *error) { if (error) { //Show error message NSLog(@"getCurrencyBalance error: %@", [error localizedDescription]); } else { //Update currency value of your app NSLog(@"getCurrencyBalance returned %@: %d", parameters[@"currencyName"], [parameters[@"amount"] intValue]); } }];
前述のように、通貨残高は完了ブロックで通知されます。パラメーター は通貨の名前を示し、"amount" はユーザーの残高を示します。 実装の詳細については、SDK パッケージのサンプルアプリケーションを参照してください。 Tapjoy.getCurrencyBalance(new TJGetCurrencyBalanceListener(){ @Override public void onGetCurrencyBalanceResponse(String currencyName, int balance) { Log.i(TAG, "getCurrencyBalance returned " + currencyName + ":" + balance); } @Override public void onGetCurrencyBalanceResponseFailure(String error) { Log.i("Tapjoy", "getCurrencyBalance error: " + error); } });
通貨残高は、指定した TJGetCurrencyBalanceListener の onGetCurrencyBalanceResponse(String currencyName, int balance) コールバックメソッドで通知されます。エラー状態は、onGetCurrencyBalanceResponseFailure(String error) コールバックメソッドで通知されます。 注
getCurrencyBalance(…) は、アプリケーションの起動時と再開時に呼び出すのが最善です。SPEND と AWARD の通貨のコールバック通知もユーザーのゲーム内通貨残高の合計を返すため、これらを使用してユーザーが所有する通貨の合計金額を更新してください。
// Get currency Tapjoy.GetCurrencyBalance(); // on enable, add delegates void OnEnable() { Tapjoy.OnGetCurrencyBalanceResponse += HandleGetCurrencyBalanceResponse; Tapjoy.OnGetCurrencyBalanceResponseFailure += HandleGetCurrencyBalanceResponseFailure; } // on disable, remove delegates void OnDisable() { Tapjoy.OnGetCurrencyBalanceResponse -= HandleGetCurrencyBalanceResponse; Tapjoy.OnGetCurrencyBalanceResponseFailure -= HandleGetCurrencyBalanceResponseFailure; } public void HandleGetCurrencyBalanceResponse(string currencyName, int balance) { Debug.Log("C#: HandleGetCurrencyBalanceResponse: currencyName: " + currencyName + ", balance: " + balance); } public void HandleGetCurrencyBalanceResponseFailure(string error) { Debug.Log("C#: HandleGetCurrencyBalanceResponseFailure: " + error); }
通貨残高は、指定した OnGetCurrencyBalanceResponse ハンドラーで通知されます。このハンドラーは と のパラメーターを渡します。エラーは、OnGetCurrencyBalanceResponseFailure ハンドラーで通知されます。 try { let result = await Tapjoy.getCurrencyBalance(); let currencyName = result['currencyName']; let amount = result['amount']; } catch (error: any) { //Handle error }
React Native では、 にパラメーターを取らない promise を使用します。promise はディクショナリまたはエラー (検出される) で解決されます。ディクショナリキー は、通貨金額が含まれる文字列を保持します。 // Get currency TapjoyAIR.getCurrencyBalance(); // Setup handlers TapjoyAIR.addEventListener(TJCurrencyEvent.GET_CURRENCY_BALANCE_SUCCESS, tapjoyCurrencyEventHandler); TapjoyAIR.addEventListener(TJCurrencyEvent.GET_CURRENCY_BALANCE_FAILURE, tapjoyCurrencyEventHandler); private function tapjoyCurrencyEvents(event:TJCurrencyEvent):void { trace("Tapjoy sample event listener for " + event.type + ", " + event.balance + ", " + event.currencyName); }
通貨残高は、指定した .GET_CURRENCY_BALANCE_SUCCESS ハンドラーで通知されます。このハンドラーは オブジェクトを渡します。このオブジェクトには と のプロパティが含まれます。エラーは、TJCurrencyEvent.GET\_CURRENCY\_BALANCE\_FAILURE ハンドラーで通知されます。
ユーザーが通貨を獲得したかどうかの確認
アプリが最後にユーザーの通貨残高を照会してからゲーム内通貨を獲得したことをユーザーに通知するには、以下のように通知オブザーバーを設定します。 // Set the notification observer for earned-currency-notification.これは applicationDidBecomeActive メソッド内に配置することをお勧めします。 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showEarnedCurrencyAlert:) name:TJC_CURRENCY_EARNED_NOTIFICATION object:nil]; // In the following method, you can set a custom message or use the default UIAlert to inform the user that they just earned some currency. - (void)showEarnedCurrencyAlert:(NSNotification*)notifyObj { NSNumber *currencyEarned = notifyObj.object; int earnedNum = [currencyEarned intValue]; NSLog(@"Currency earned: %d", earnedNum); // Pops up a UIAlert notifying the user that they have successfully earned some currency. // This is the default alert, so you may place a custom alert here if you choose to do so. [Tapjoy showDefaultEarnedCurrencyAlert]; // This is a good place to remove this notification since it is undesirable to have a pop-up alert more than once per app run. [[NSNotificationCenter defaultCenter] removeObserver:self name:TJC_CURRENCY_EARNED_NOTIFICATION object:nil]; }
ユーザーがゲーム内通貨を獲得するたびに (オファーを通じて) 通知を受けるには、以下のメソッドを使用して獲得した通貨リスナーを設定します。 // Get notifications whenever Tapjoy currency is earned. Tapjoy.setEarnedCurrencyListener(new TJEarnedCurrencyListener() { @Override public void onEarnedCurrency(String currencyName, int amount) { Log.i("Tapjoy", "You've just earned " + amount + " " + currencyName); } });
獲得した通貨は、指定した の onEarnedCurrency(String currencyName, int amount) コールバックメソッドで通知されます。例えば、現在の通貨残高が 100 で、ユーザーが 25 通貨のオファーを完了した場合、次に が呼び出されると、onEarnedCurrency メソッドが実行され、金額が 25 となります。 // on enable, add delegates void OnEnable() { Tapjoy.OnEarnedCurrency += HandleEarnedCurrency; } // on disable, remove delegates void OnDisable() { Tapjoy.OnEarnedCurrency -= HandleEarnedCurrency; } public void HandleEarnedCurrency(string currencyName, int amount) { Debug.Log("C#: HandleEarnedCurrency: currencyName: " + currencyName + ", amount: " + amount); }
獲得した通貨は、指定した OnEarnedCurrency ハンドラーで通知されます。このハンドラーは currencyName と獲得した金額のパラメーターを渡します。 TapjoyAIR.addEventListener(TJEarnedCurrencyEvent.EARNED_CURRENCY, tapjoyEarnedCurrencyEventHandler); private function tapjoyEarnedCurrencyEventHandler(event:TJEarnedCurrencyEvent):void { trace("You can notify user's here that they've just earned " + event.amount + " " + event.currencyName); }
獲得した通貨は、指定した TJEarnedCurrencyEvent.EARNED\_CURRENCY ハンドラーで通知され、 オブジェクトを渡します。このオブジェクトには currencyName と amount のプロパティが含まれます。
Tapjoy 管理通貨の支出
ユーザーのゲーム内通貨を支出するには、以下のメソッドを呼び出します。
// This method call will deduct 10 virtual currencies from the user's total. [Tapjoy spendCurrency:10 completion:^(NSDictionary *parameters, NSError *error) { if (error) { NSLog(@"spendCurrency error: %@", [error localizedDescription]); } else { NSLog(@"spendCurrency returned %@: %d", parameters[@"currencyName"], [parameters[@"amount"] intValue]); } }];
前述のように、通貨残高は完了ブロックで通知されます。パラメーター は通貨の名前を示し、 はユーザーの残高を示します。 Tapjoy.spendCurrency(10, new TJSpendCurrencyListener() { @Override public void onSpendCurrencyResponse(String currencyName, int balance) { Log.i("Tapjoy", currencyName + ": " + balance); } @Override public void onSpendCurrencyResponseFailure(String error) { Log.i("Tapjoy", "spendCurrency error: " + error); } });
通貨残高は、指定した の onSpendCurrencyResponse(String currencyName, int balance) コールバックメソッドで通知されます。エラーは、onSpendCurrencyResponseFailure(String error) メソッドで通知されます。 // Spend currency Tapjoy.SpendCurrency(10); // on enable, add delegates void OnEnable() { Tapjoy.OnSpendCurrencyResponse += HandleSpendCurrencyResponse; Tapjoy.OnSpendCurrencyResponseFailure += HandleSpendCurrencyResponseFailure; } // on disable, remove delegates void OnDisable() { Tapjoy.OnSpendCurrencyResponse -= HandleSpendCurrencyResponse; Tapjoy.OnSpendCurrencyResponseFailure -= HandleSpendCurrencyResponseFailure; } public void HandleSpendCurrencyResponse(string currencyName, int balance) { Debug.Log("C#: HandleSpendCurrencyResponse: currencyName: " + currencyName + ", balance: " + balance); } public void HandleSpendCurrencyResponseFailure(string error) { Debug.Log("C#: HandleSpendCurrencyResponseFailure: " + error); }
通貨残高は、指定した ハンドラーで通知されます。このハンドラーは と のパラメーターを渡します。エラーは、OnSpendCurrencyResponseFailure ハンドラーで通知されます。 try { let result = await Tapjoy.spendCurrency(10); let currencyName = result['currencyName']; let amount = result['amount']; } catch (error: any) { //Handle error }
React Native では、 にパラメーターとして金額を取る promise を使用します。promise はディクショナリまたはエラー (検出される) で解決されます。ディクショナリキー は、通貨金額が含まれる文字列を保持します。 // Spend currency TapjoyAIR.spendCurrency(10); // Setup handlers TapjoyAIR.addEventListener(TJCurrencyEvent.SPEND_CURRENCY_SUCCESS, tapjoyCurrencyEventHandler); TapjoyAIR.addEventListener(TJCurrencyEvent.SPEND_CURRENCY_FAILURE, tapjoyCurrencyEventHandler); private function tapjoyCurrencyEventHandler(event:TJCurrencyEvent):void { trace("Tapjoy sample event listener for " + event.type + ", " + event.balance + ", " + event.currencyName); }
通貨残高は、指定した TJCurrencyEvent.SPEND\_CURRENCY\_SUCCESS ハンドラーで通知されます。このハンドラーは オブジェクトを渡します。このオブジェクトには と balance のプロパティが含まれます。エラーは、. ハンドラーで通知されます。
Tapjoy 管理通貨の付与
注意
お手数をおかけしますが、新しいアプリでこの機能を使用する場合は、アカウントマネージャーに相談して承認を得る必要があります。
ユーザーにゲーム内通貨を付与するには、以下のメソッドを呼び出します。
// This method call will award 10 virtual currencies to the user's total. [Tapjoy awardCurrency:10 completion:^(NSDictionary *parameters, NSError *error) { if (error) { NSLog(@"awardCurrency error: %@", [error localizedDescription]); } else { NSLog(@"awardCurrency returned %@: %d", parameters[@"currencyName"], [parameters[@"amount"] intValue]); } }];
前述のように、通貨残高は完了ブロックで通知されます。パラメーター は通貨の名前を示し、 はユーザーの残高を示します。 Tapjoy.awardCurrency(10, new TJAwardCurrencyListener() { @Override public void onAwardCurrencyResponseFailure(String error) { Log.i("Tapjoy", "awardCurrency error: " + error); } @Override public void onAwardCurrencyResponse(String currencyName, int balance) { Log.i("Tapjoy", currencyName + ": " + balance); } });
通貨残高は、指定した の onAwardCurrencyResponse(String currencyName, int balance) コールバックメソッドで通知されます。 // Award currency Tapjoy.AwardCurrency(10); // on enable, add delegates void OnEnable() { Tapjoy.OnAwardCurrencyResponse += HandleAwardCurrencyResponse; Tapjoy.OnAwardCurrencyResponseFailure += HandleAwardCurrencyResponseFailure; } // on disable, remove delegates void OnDisable() { Tapjoy.OnAwardCurrencyResponse -= HandleAwardCurrencyResponse; Tapjoy.OnAwardCurrencyResponseFailure -= HandleAwardCurrencyResponseFailure; } public void HandleAwardCurrencyResponse(string currencyName, int balance) { Debug.Log("C#: HandleAwardCurrencySucceeded: currencyName: " + currencyName + ", balance: " + balance); } public void HandleAwardCurrencyResponseFailure(string error) { Debug.Log("C#: HandleAwardCurrencyResponseFailure: " + error); }
通貨残高は、指定した ハンドラーで通知されます。このハンドラーは と のパラメーターを渡します。エラーは、OnAwardCurrencyResponseFailure ハンドラーで通知されます。 try { let result = await Tapjoy.awardCurrency(10); let currencyName = result['currencyName']; let amount = result['amount']; } catch (error: any) { //Handle error }
React Native では、 にパラメーターとして金額を取る promise を使用します。promise はディクショナリまたはエラー (検出される) で解決されます。ディクショナリキー は、通貨金額が含まれる文字列を保持します。 // Award currency TapjoyAIR.awardCurrency(10); // Setup handlers TapjoyAIR.addEventListener(TJCurrencyEvent.AWARD_CURRENCY_SUCCESS, tapjoyCurrencyEventHandler); TapjoyAIR.addEventListener(TJCurrencyEvent.AWARD_CURRENCY_FAILED, tapjoyCurrencyEventHandler); private function tapjoyCurrencyEventHandler(event:TJCurrencyEvent):void { trace("Tapjoy sample event listener for " + event.type + ", " + event.balance + ", " + event.currencyName); }
通貨残高は、指定した TJCurrencyEvent.AWARD\_CURRENCY\_SUCCESS ハンドラーで通知されます。このハンドラーは オブジェクトを渡します。このオブジェクトには と balance のプロパティが含まれます。エラーは、. ハンドラーで通知されます。
管理通貨のテスト
Offerwall でテストオファーを表示する必要がある場合は、アプリケーションにテストデバイスを加えることができます。これにより、Offerwall の上部にテストオファーが表示されるため、簡単に通貨をテストできます。
Tapjoy 管理通貨の実装が正しく機能していることを確認するために使用できるもう 1 つのツールは、Tapjoy ダッシュボードの "Get User Balance" (ユーザー残高の取得) ツールです。
アプリのユーザー残高がこのツールの表示と異なる場合は、アプリが Tapjoy の残高と同期していない可能性があります。通常は、アプリが を十分な頻度で呼び出すようにすることで修正できます。
推奨ガイド
重要
awardCurrency と spendCurrency の呼び出しを確認し、呼び出しが成功した場合に "のみ" コンテンツ/購入のロックを解除してください。awardCurrency と spendCurrency の呼び出しが失敗した場合は、デバイスの残高が侵害されている可能性が高くなります。例については、SDK に含まれている Tapjoy EasyApp プロジェクトを確認してください。
一部のパブリッシャーは、クライアントサイドの通知にのみ管理通貨を実装し、通貨をローカルに保存しています。ローカルに保存されている通貨金額のみに依存しないことを強くお勧めします。問題が発生した場合は、サポートできません。これが問題である場合は、自己管理通貨の使用を検討する必要があります。
は、アイテムまたはコンテンツのロックを解除するために通貨を差し引く場合にのみ呼び出す必要があります。
管理通貨はアプリ ID ごとに 1 つの通貨のみをサポートします。複数の通貨がある場合は、自己管理通貨を使用する必要があります。
残高はデバイスごと、アプリごとに保存されるため、デバイス間で残高を共有することはできません。
注
Tapjoy はできる限り迅速にユーザーに報酬を与えるよう最善を尽くしていますが、ユーザーが即座に報酬を受け取れるという保証はできません。ユーザーへの報酬付与にかかる時間は、多くの要因が関与します。ベストプラクティスとして、動画広告が閉じるとき以外に、アプリの起動時、アプリの再開時、レベル間、ストアのロード前など、特定のアプリイベントの後に、更新された残高を定期的に確認してください。また、オファーが完了するまでに時間がかかる可能性があることをユーザーに通知することをお勧めします。