在 Xcode 添加经审核的 GrooveGrow Swift Package(仓库 packages/ios),并链接 GrooveGrow 库。当前源码包要求 Swift 6,支持 iOS 15 及以上。
目前这些是仓库源码包,尚未证明公开 SPM 或 Maven 发行可用。安装完成后先验证身份与 readHoldings,再接入 Funnel 与商店购买。
安装原生 SDK、读取客户数据并验证 Sandbox 商店交付。
在 Xcode 添加经审核的 GrooveGrow Swift Package(仓库 packages/ios),并链接 GrooveGrow 库。当前源码包要求 Swift 6,支持 iOS 15 及以上。
相关:身份与凭据边界
import Foundationimport GrooveGrow func connectGrow(baseURL: URL, projectID: UUID, customerToken: String, runToken: String) async throws -> (GrooveGrowClient, GrowFunnelSession) { let client = GrooveGrowClient(configuration: try GrowConfiguration( baseURL: baseURL, scope: GrowScope(projectId: projectID, environment: .sandbox))) try await client.identify(customerToken: customerToken) _ = try await client.readHoldings() let flow = try await client.funnel(runToken: runToken) return (client, flow)} // Present GrowFunnelViewController(session: flow) on your MainActor UI.// Set onAuthenticate to obtain the current user's token from your backend.// Recover: try await client.recoverNativeOrders(using: verifiedHostRelay)// Explicit store sync: recoverNativeOrders(using: verifiedHostRelay, synchronizeStore: true)// On sign-out: await client.reset(); dismiss the old Funnel view.连接成功的条件
readHoldings 中的会员与余额全部属于当前客户时才显示已连接。保留小数积分,不按整数取整。用户换号或离开页面时取消宿主任务,拒绝旧会话的迟到响应并整体清理旧快照。
| 场景 | 预期结果 |
|---|---|
| 首次接入 | 持有读取和控制台客户详情一致;非法、过期和跨范围会话被拒绝。 |
| 退出与换号 | 立即清理旧客户数据;旧请求不能覆盖新客户;重启后需重新认证。 |
| 断网与超时 | 保留可重试错误,不显示成功;恢复网络后能重试原请求。 |
| 购买、恢复与退款 | 真实 Sandbox 交易交付一次;恢复不重复授予;经验证退款与撤销反映在权益和账本。 |
原生验收条件
首次接入
退出与换号
断网与超时
购买、恢复与退款