移动sdk有两种创建终端用户的方式。一种类型的最终用户是确认使用匿名身份。另一种类型的终端用户是通过身份验证JWT的身份。

注意这里术语的不同,即确认通过身份验证.匿名终端用户是不受信任的,并且有一些访问限制。本文的其余部分假设您的SDK应用程序在Zendesk Support中配置为匿名身份。亚博

本文涉及的主题:

一个匿名的身份可以创建完全没有就我个人而言可识别的信息。UUID是在SDK中设置标识时创建的,用于标识用户。

术语表

UUID-通用唯一标识符

匿名标识的生命周期

匿名身份一直存在,直到发生以下事件之一:

  • SDK发出的请求会导致401错误
  • 标识在代码中更新
  • 卸载应用程序,或清除应用程序的app-data

下面将更详细地描述每个事件。在这些事件发生后,标识将被删除。您创建的下一个标识将是一个新用户。

在网络请求中遇到HTTP错误

匿名身份的目标是让它们尽可能长时间地存在。如果标识的细节没有变化,那么不需要在Zendesk Support中创建新的终端用户。亚博401错误意味着最终用户不再有权访问所请求的资源。出现这种情况的原因有很多,比如终端用户被暂停。当401发生时,sdk会采取以下步骤:

  • 从设备上删除用户的请求
  • 删除存储的访问令牌(用于API调用)
  • 生成一个新的UUID。

身份的变化

在改变身份时,sdk是非常严格的。我们不支持在不将其视为新标识的情况下向标识添加数据。这是一个常见的场景,我们的sdk的集成商可能在一开始不知道他们的用户,但是在他们登录过程之后他们就知道了。

考虑一下,如果你的开场白是这样的:

             
// Android:创建一个没有附加信息的身份身份身份AnonymousIdentity亚博实例setIdentity身份
             
// iOS:创建一个没有附加信息的身份身份身份createAnonymous亚博实例?.setIdentity身份

如果稍后执行以下操作,则SDK将此视为身份更改。它从设备上清除用户的数据。SDK考虑任何添加(没有电子邮件到有电子邮件)或任何更改((电子邮件保护)(电子邮件保护))作为新身份。

             
// Android:更新身份的幼稚尝试身份身份AnonymousIdentity构建器withEmailIdentifier(电子邮件保护)构建亚博实例setIdentity身份
             
// iOS:更新身份的幼稚尝试身份身份createAnonymous电子邮件(电子邮件保护)亚博实例?.setIdentity身份

请注意:如果您保持相同的电子邮件地址并更改其他内容,您最多只能更改1000个身份。示例:假设在启动应用程序时初始化一个匿名身份,其中电子邮件地址为(电子邮件保护)是硬编码的,但用户名是动态设置的。结果:每次不同的用户启动应用程序时,“(电子邮件保护)删除,并为“”创建一个具有不同名称的新标识。(电子邮件保护)".在1000次这样的身份更改之后,您将开始收到登录尝试失败的消息。

卸载App,或清除App数据

标识、请求和访问令牌本地存储在最终用户的设备上。如果应用程序被卸载,那么身份、请求、访问令牌和任何其他用户数据都将被清除。如果应用程序的数据被清除,也会发生同样的情况。

电子邮件,名称和解决策略

匿名身份允许指定一些可选的信息,但要弄清楚它实际上是如何工作的,可能会非常令人困惑。一般来说,总有两种情况需要考虑:

  1. 这是新用户吗?
  2. 这是一个现有用户吗?

这非常重要,因为如果它是一个现有用户,那么SDK就不会更新最终用户。举个例子。

创建新用户

假设您有一个电子邮件地址为的用户(电子邮件保护).他还不存在于Zendesk Support的实例中。亚博在你的应用程序中,你为他创建了一个匿名身份,并设置了他的电子邮件地址和姓名:

             
/ /安卓身份身份AnonymousIdentity构建器withNameIdentifier“约翰·史密斯”withEmailIdentifier(电子邮件保护)构建亚博实例setIdentity身份
             
/ / iOS身份身份createAnonymous的名字“约翰·史密斯”电子邮件(电子邮件保护)亚博实例?.setIdentity身份

这个用户在Zendesk实例中还不存在,因此创建了一个用户,并将其名称和电子邮件地址设置为SDK提供的名亚博称和电子邮件地址。

正在尝试更新用户

在将来的某个时候,你可能想要更改用户的名称,所以你可以尝试这样做:

             
/ /安卓身份身份AnonymousIdentity构建器withNameIdentifier“乔安娜·史密斯”withEmailIdentifier(电子邮件保护)构建亚博实例setIdentity身份
             
/ / iOS身份身份createAnonymous的名字“乔安娜·史密斯”电子邮件(电子邮件保护)亚博实例?.setIdentity身份

提示:

  • 这被视为身份更改,所以上面“匿名身份的生命周期”中的所有内容都适用
  • 电邮地址为“(电子邮件保护)已经存在了。

亚博Zendesk Support在创建终端用户之前会尝试查看终端用户是否存在。它通过查看通过匿名标识传递的可选信息来做到这一点。对于上述用户,Zendesk Support采取以下步骤:亚博

  1. 搜索“”(电子邮件保护)“电子邮件
  2. 查找现有的最终用户
  3. 为最终用户生成一个新的访问令牌
  4. 将用户名改为“John Smith”而不是“Joanna Smith”

亚博Zendesk Support在发现终端用户已经存在时不会更新该用户。这是安全措施。

以下是Zendesk Support使用的通用解决策略:亚博

  1. 通过电子邮件找到用户。
  2. 如果没有通过电子邮件找到该用户,请创建该用户。

如果通过电子邮件找到最终用户,则Zendesk Support将忽略该名称。亚博

经常遇到的问题

在匿名身份中要记住的最重要的事情是,所有信息都是完全可选的。我们的建议是只填写你知道你肯定有的细节。

如果需要对用户身份进行更多控制,可以考虑使用JWT身份验证。看到身份验证的决定在SDK集成检查表。