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

登录 Aptoide 服务(Unity SDK)

登录 Aptoide 服务会将用户的购买关联到其 Aptoide 账户。登录后,即使宿主应用的存储被清除或用户切换设备,也可以通过 QueryPurchasesAsync 检索其待处理和非消耗型购买——您这一端无需任何后端。

📘
功能可用性

账户登录通过远程切换,且默认关闭。在公开该功能之前,请使用 AptoideBillingSDKManager.IsFeatureSupported(3).ResponseCode == 0 验证其是否可用(响应代码为 0(OK)表示已启用;2(SERVICE_UNAVAILABLE)表示配置仍在加载中——请重试)。

登录

使用 AptoideBillingSDKManager.SignInToAptoideServices 启动 Aptoide 账户登录流程。它是异步的:结果会作为 BillingResult 交付到 IAptoideSignInResponseListenerOnSignInResponse 方法。请在 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();