跳到主要内容

RevenueCat用户ID官方文档 | Identifying Customers

RevenueCat 为不同平台上客户订阅状态提供了一个真实来源。用户身份是许多移动应用程序中最重要的组成部分之一,确保与 RevenueCat 跟踪的订阅状态关联的是正确的用户至关重要。

RevenueCat 中的客户是什么?

在 RevenueCat 中,“客户”一词指的是使用利用 RevenueCat 处理或跟踪用户购买的应用的人。每个客户都有一个独特的 CustomerInfo 对象,可以通过他们的 App User ID 引用。如下面所述,除非开发者提供了自定义的 App User ID,否则 RevenueCat SDK 会自动为用户生成匿名的 App User ID。一些应用程序会同时使用自定义和匿名的 App User IDs,或者只使用一种类型的 App User ID。

如果您同时使用匿名和自定义的 App User IDs,预计由于客户在应用内执行的各种操作(如登录或恢复),客户可能会随着时间合并。下面更详细地涵盖了合并发生的场景,并将取决于您为项目选择的恢复行为。当客户合并发生时,original_app_user_id 字段内将只有一个 App User ID。如果您正在监听 Webhooks,与客户关联的其他 App User IDs 将在 aliases 字段的数组中。通过 SDK 或 API 引用时,任何合并的 App User IDs 都将被视为同一个“客户”。在 RevenueCat 中查找任何合并的 App User IDs 将返回相同的 CustomerInfo、客户历史、客户属性、订阅状态等。

总体而言,客户的概念是 RevenueCat 平台跟踪和管理应用内购买和订阅的能力的核心。通过这种形式,维护每个客户活动的详细记录,开发者可以洞察其应用的收入流,并做出明智的决策来优化他们的货币化策略。

匿名 App User IDs

如果您在实例化 Purchases SDK 时没有提供 App User ID,RevenueCat 将为您生成一个新的随机 App User ID 并将其缓存在设备上。如果用户删除并重新安装应用程序,将生成一个新的随机 App User ID。

  • React Native
Purchases.configure(withAPIKey: <my_api_key>)

匿名 App User IDs 总是以 $RCAnonymousID: 为前缀,适用于 SDK 版本 3+。这对于在服务器上使用匿名用户可能很有用。

使用自定义 App User ID 登录

设置您自己的 App User ID 将允许您在 RevenueCat 仪表板、通过 API 以及在 webhooks 和其他集成中引用用户。

使用外部管理的 App User ID 还提供了在几种场景中恢复购买的机制:

  • 当用户删除并重新安装您的应用程序时 - 使用相同的 App User ID 将确保他们仍然可以访问之前开始的订阅,而无需恢复。
  • 当用户在多个设备上登录时 - 您可以在任何其他平台上尊重在一个设备上购买的订阅。

App User IDs 是区分大小写的。

在配置上提供 App User ID

❗️iOS 15+ 预热

在某些情况下,iOS 可能会预热您的应用程序 - 这基本上意味着您的应用程序将在后台静默启动,以改善用户的应用程序启动时间。

如果您没有使用上面描述的 RevenueCat 的匿名 ID,而是在配置中提供了您自己的应用程序用户 ID,不要application:didFinishLaunchingWithOptions: 中调用 configure。相反,应在您的根视图控制器的初始化方法中调用 configure 方法。

如果您在应用程序启动时有自己的 App User IDs,可以在实例化时将它们传递给 Purchases。

  • React Native
Purchases.configure(withAPIKey: <my_api_key>, appUserID: <my_app_user_id>)

通常情况下,您可能在应用程序生命周期的后期才有自己的 App User IDs。在这些情况下,您可以随时通过 .logIn() 方法传递 App User ID。

在配置后提供 App User ID

如果您的应用程序直到生命周期的后期才收到自己的 App User ID,您可以通过调用 .logIn() 在任何时候设置(或更改)App User ID。如果登录的身份在 RevenueCat 中尚不存在,它将自动创建。

  • React Native
// 在应用程序启动时配置 Purchases
Purchases.configure(withAPIKey: <my_api_key>)

// ...
// 稍后登录提供的 user Id
Purchases.shared.logIn(<my_app_user_id>) { (customerInfo, created, error) in
// customerInfo 针对 my_app_user_id 更新
}

logIn() 方法别名行为

当从匿名 ID 登录到提供的自定义 App User ID 时,RevenueCat 将决定是否应该将身份合并(别名)到同一个 CustomerInfo 对象中。这取决于提供的自定义 App User ID 是否已经存在,如果存在,是否已经有匿名别名。

当前 App User ID提供的自定义 App User ID 是否已存在?提供的自定义 App User ID 是否有匿名别名?结果
匿名N/A匿名 ID 和提供的 ID 合并为 CustomerInfo。
匿名匿名 ID 和提供的 ID 合并为 CustomerInfo。
匿名CustomerInfo 转移到提供的 ID,不创建别名。
非匿名任意任意CustomerInfo 转移到提供的 ID,不创建别名。

登出

当已识别的用户从您的应用程序登出时,您应该在 SDK 中调用 logOut() 方法。这将为登出状态生成一个新的匿名 App User ID。然而,如果您计划只使用自定义 App User ID,可以按照这里的说明进行。

登回

要登录新用户,应再次使用 .logIn() 设置提供的 App User ID。

切换账户

如果您需要从一个提供的 App User ID 切换到另一个,可以直接调用 .logIn() 方法 - 您不需要先调用 logOut()

在应用程序和平台之间共享订阅

同一 RevenueCat 项目中的应用程序共享相同的 App User ID 命名空间,这意味着它们也共享订阅。使用相同用户 ID 在同一项目的不同应用程序中登录的用户将能够访问相同的权益。这允许在不同应用程序之间共享订阅状态,即使是在不同的平台上。

请注意,匿名 App User IDs 无法在应用程序和平台之间共享订阅状态,因此您需要通过自己的认证系统使用自定义 App User ID 进行识别。

如何仅使用自定义 App User IDs

要仅使用自定义 App User IDs,您必须确保在 SDK 中不生成任何匿名 App User IDs。当 SDK 配置时没有提供自定义 App User ID,或者如上所述在 logOut() 时,会生成匿名 App User IDs。许多应用程序通过其认证系统使用匿名 App User IDs 和自己的自定义 App User IDs 的组合,以提供在其用户购买流程中的灵活性。然而,一些应用程序旨在仅在使用已知 App User ID 时使用,完全没有匿名用户。匿名 ID 的一些限制包括增加个性化用户体验的难度、优化货币化策略的难度,以及无法在平台之间共享订阅。根据应用程序的转移行为,提供的用户的订阅可能会转移到匿名 ID - 这只能通过在原始购买平台上的恢复来恢复。

无论如何,要永远看不到匿名 ID,您只需要确保做到以下两点:只使用自定义 App User ID 配置 SDK,并且永远不要调用 .logout()

只使用自定义 App User ID 配置 SDK

创建匿名 App User IDs 的最常见地方是当 SDK 首次配置时。在没有提供已知用户 ID 的情况下调用 SDK 上的 .configure 将导致 SDK 为当前用户生成匿名 ID。为了避免匿名 ID,您需要在配置 SDK 之前识别用户的 ID。许多应用程序使用自己的认证系统,通常在多个平台上共享,以识别用户并提供他们独特的 App User IDs。

不要登出用户

使用已知 App User ID 登录后,他们可能想要在您的应用程序中登出或切换账户 - 登出,然后使用不同的已知 ID 登录。然而,在 SDK 中调用登出将导致创建匿名 App User ID。简单地不要登出 SDK。在切换账户的情况下,当用户使用他们的新 App User ID 登录到不同账户时,可以调用登录。

设置 App User IDs 的提示

ℹ️ App User IDs 不应被猜测
RevenueCat 通过公共 API 提供订阅状态,易于猜测的 App User IDs 是不好的。建议使用不可猜测的伪随机 ID。
ℹ️ 保持 App User IDs 小于 100 个字符
App User IDs 的长度不应超过 100 个字符。
⚠️ 不要将电子邮件设置为 App User IDs
由于上述关于可猜测性的原因,以及 GDPR 合规性,我们不建议使用电子邮件地址作为 App User IDs
⚠️ 不要将 IDFA 设置为 App User IDs
由于 IDFA 可以轻易轮换,并且在启用限制广告跟踪时不是跨用户唯一的,因此不应将广告标识符用作 App User IDs

❗️