3

我是 Pinpoint 的新手,并试图了解端点/endpointId 如何在 Pinpoint 语义中工作。来自aws 文档

当用户启动会话(例如,通过启动您的移动应用程序)时,您的移动或 Web 应用程序可以自动向 Amazon Pinpoint 注册(或更新)终端节点。

这是否意味着每次应用启动时,都会有一个新的端点/endpointId?如果当前会话结束或用户杀死并重新启动应用程序,它会注册一个新端点吗?

有没有办法以编程方式在应用程序中获取端点/端点 ID?

4

1 回答 1

4

是的,每个唯一设备、电子邮件等的端点都是相同的。它必须相同,以便亚马逊知道在哪里发送推送通知,例如,如果您运行有针对性的活动。如果用户杀死并重新启动应用程序,则使用相同的端点。这适用于经过身份验证和未经身份验证的用户。因此,我有理由相信,如果当前会话结束(即用户必须重新验证),那么它们具有相同的端点。这是有道理的,因为每个设备(设备本身)都需要一个唯一标识符。为了更好地回答您的问题,我亲自测试了以下内容并确认:

如果一个用户注销,另一个用户登录 [在同一设备上],端点 ID 保持不变。下面代码的目的是向特定端点注册用户 ID。您还可以根据您的要求修改下面的代码以打印端点 ID。

假设您使用 Swift 和 AWS Cognito 进行用户身份验证,请将其放在 AppDelegate 的顶部:

        var pinpoint: AWSPinpoint?

...在 didFinishLaunching 中,输入:

        self.pinpoint = AWSPinpoint(configuration:AWSPinpointConfiguration.defaultPinpointConfiguration(launchOptions: launchOptions))
        if let targetingClient = pinpoint?.targetingClient {
                if let username = AppDelegate.defaultUserPool().currentUser()?.username {
                    let endpoint = targetingClient.currentEndpointProfile()
                    // Create a user and set its userId property
                    let user = AWSPinpointEndpointProfileUser()
                    user.userId = username
                    // Assign the user to the endpoint
                    endpoint.user = user
                    // Update the endpoint with the targeting client
                    targetingClient.update(endpoint)
                    print("Assigned user ID \(user.userId ?? "nil") to endpoint \(endpoint.endpointId).\n")
                }
            }
于 2018-08-31T08:01:00.250 回答