メインコンテンツまでスキップ

Aptoide サービスへのサインイン (Unity SDK)

Aptoide サービスにサインインすると、ユーザーの購入がその Aptoide アカウントに紐付けられます。サインインすると、ホストアプリのストレージが消去された後やユーザーがデバイスを切り替えた後でも、保留中の購入および消費不可の購入を QueryPurchasesAsync で取得できます。自分側でバックエンドは必要ありません。

📘
機能の利用可否

アカウントのサインインはリモートで切り替えられ、デフォルトでは無効です。公開する前に、AptoideBillingSDKManager.IsFeatureSupported(3).ResponseCode == 0 で利用可能かどうかを確認してください (レスポンスコード 0 (OK) は有効であることを意味し、2 (SERVICE_UNAVAILABLE) は設定がまだ読み込み中であることを意味します。再試行してください)。

サインイン

AptoideBillingSDKManager.SignInToAptoideServices を使用して、Aptoide アカウントのサインインフローを起動します。これは非同期であり、結果は IAptoideSignInResponseListenerOnSignInResponse メソッドに BillingResult として配信されます。SDK 接続が確立された後に (例えば「サインイン」ボタンから) 呼び出してください。

public void SignIn()
{
AptoideBillingSDKManager.SignInToAptoideServices();
}

public void OnSignInResponse(BillingResult billingResult)
{
switch (billingResult.ResponseCode)
{
case 0: // OK
RestoreOwnedPurchases(); // signed in (or already signed in)
break;
case 1: // USER_CANCELED
Debug.Log("Sign-in dismissed by the user");
break;
case -2: // FEATURE_NOT_SUPPORTED
Debug.Log("Sign-in is disabled");
break;
case 2: // SERVICE_UNAVAILABLE
Debug.Log("Not ready yet - retry shortly");
break;
default:
Debug.LogError($"Sign-in error: {billingResult.DebugMessage}");
break;
}
}

リスナーに返されるレスポンスコードは以下のとおりです:

レスポンスコード意味
OK0ユーザーがサインインした、またはすでにサインイン済みです。所有している購入のクエリに進みます。
USER_CANCELED1ユーザーがサインイン画面を閉じたか、「今後表示しない」を選択しました。
FEATURE_NOT_SUPPORTED-2アカウントのサインインが無効です (機能フラグがオフ)。
SERVICE_UNAVAILABLE2設定がまだ読み込み中です (または読み込みに失敗しました)。再試行可能です。
ERROR6予期しないエラーが発生しました。

OK の場合、所有している購入をクエリしてエンタイトルメントを復元します (結果には承認済みの消費不可の商品が含まれます。消費不可の購入の承認を参照してください):

private void RestoreOwnedPurchases()
{
QueryPurchasesParams queryPurchasesParams = QueryPurchasesParams.NewBuilder()
.SetProductType("inapp")
.Build();

AptoideBillingSDKManager.QueryPurchasesAsync(queryPurchasesParams);
}

public void OnQueryPurchasesResponse(BillingResult billingResult, Purchase[] purchases)
{
if (billingResult.ResponseCode == 0)
{
foreach (var purchase in purchases)
{
GrantEntitlement(purchase);
}
}
}
📘

サインイン画面は SDK によって控えめに表示されます (レート制限があり、ユーザーに「今後表示しない」オプションを提供します)。そのため、SignInToAptoideServices の呼び出しは安全です。適切な場合には、画面を表示せずに単に戻ります。

現在のサインイン状態の確認

AptoideBillingSDKManager.IsSignedInToAptoideServices を使用すると、現在の状態を同期的に読み取ることができます。例えば、画面を開いたときに「サインイン」ボタンと「ログアウト」ボタンのどちらを表示するかを決定するために使用します。

bool signedIn = AptoideBillingSDKManager.IsSignedInToAptoideServices();

サインイン状態の変化のリスニング

サインインとサインアウトは、支払い WebView 内でも発生する可能性があります。InitializePlugin で登録された IAptoideAccountStateListener はあらゆる状態変化を通知するため、ユーザーがアプリを再起動することなく、UI を更新して購入を再クエリできます。状態は、ユーザーがサインインしているときは 1サインアウトしているときは 0 です。これは実際の状態遷移が発生したときにのみ発火します。

public void OnAccountStateChanged(int state)
{
if (state == 1) // SIGNED_IN
{
RestoreOwnedPurchases();
}
else if (state == 0) // SIGNED_OUT
{
RevokeAccountEntitlements();
}
}

サインアウト

AptoideBillingSDKManager.SignOutFromAptoideServices を使用してユーザーをサインアウトさせます。これは保存されたセッションを消去し、以降のすべての操作を匿名ゲストフローに戻します。登録されている IAptoideAccountStateListener には、状態 0 (サインアウト) が通知されます。

AptoideBillingSDKManager.SignOutFromAptoideServices();