跳到正文
Indiana
控制台
章节目录 / Android / Kotlin 接入

Android / Kotlin 接入

接入原生客户身份、隔离会话并核对 Play 购买支持范围。

API v1更新于

1. 安装原生 SDK

将 packages/android 中的 indiana 源码模块接入 Gradle 工程。Android SDK、Kotlin 和 Play Billing 依赖以模块的 Gradle 配置为准。

目前仅提供源码包。发行方式与协议要求见版本说明;先完成 Customer 会话与 readHoldings,再接入 Funnel。

相关:版本与接入方式

2. 签发当前客户会话

  • 自己的后端先验证应用登录,再使用绑定当前 App / Sandbox 的 Server Key 识别客户并签发短期 customerToken。不要接受客户端任意指定的客户身份。
  • 配置 HTTPS API 地址、App UUID 与 Sandbox 环境。App 中仅使用 Customer Token;Server Key 和控制台会话保留在各自受信任的环境中。
  • Token 只保存在 SDK 内存。续期向自己的已认证后端请求;401 / 403 后清理当前客户数据并重新认证。

相关:身份与凭据边界

3. 连接并读取客户数据

IndianaSession.kt
import android.content.Contextimport ai.tinkerland.indiana.*import java.util.UUID suspend fun connectIndiana(context: Context, baseUrl: String,    projectId: UUID, customerToken: String, runToken: String): Pair<IndianaClient, IndianaFunnelSession> {    val client = IndianaClient(context, IndianaConfiguration(baseUrl,        IndianaScope(projectId, IndianaEnvironment.SANDBOX)))    client.identify(customerToken)    client.readHoldings()    return Pair(client, client.funnel(runToken))} // Add IndianaFunnelView(activity, flow) to the host UI on its main thread.// Authenticate the Customer before starting the Run; its Customer never changes.// Set onEvent for authored native events.// Store purchase/restore requires an explicitly supported server release.// On sign-out: client.reset(); destroy the old Funnel view; client.close()

连接成功的条件

readHoldings 中的会员与余额全部属于当前客户时才显示已连接。保留小数积分,不按整数取整。用户换号或离开页面时取消宿主任务,拒绝旧会话的迟到响应并整体清理旧快照。

4. 核对商店能力范围

Apple/Google 购买、通知与恢复尚未开放为完整接入路径。先完成 Customer 会话和持有读取;商店购买须等待对应版本明确支持后再启用。

5. 检查结果与恢复

接入检查
场景预期结果
首次接入持有读取和控制台客户详情一致;非法、过期和跨范围会话被拒绝。
退出与换号立即清理旧客户数据;旧请求不能覆盖新客户;重启后需重新认证。
断网与超时保留可重试错误,不显示成功;恢复网络后能重试原请求。
购买、恢复与退款真实 Sandbox 交易交付一次;恢复不重复授予;经验证退款与撤销反映在权益和账本。

接入检查

  • 首次接入

    预期结果
    持有读取和控制台客户详情一致;非法、过期和跨范围会话被拒绝。
  • 退出与换号

    预期结果
    立即清理旧客户数据;旧请求不能覆盖新客户;重启后需重新认证。
  • 断网与超时

    预期结果
    保留可重试错误,不显示成功;恢复网络后能重试原请求。
  • 购买、恢复与退款

    预期结果
    真实 Sandbox 交易交付一次;恢复不重复授予;经验证退款与撤销反映在权益和账本。
商店功能开放后,先在 Sandbox 验证购买、恢复与退款,并用 readHoldings 和交易状态核对结果。