我是 Pinpoint 的新手,并试图了解端点/endpointId 如何在 Pinpoint 语义中工作。来自aws 文档:
当用户启动会话(例如,通过启动您的移动应用程序)时,您的移动或 Web 应用程序可以自动向 Amazon Pinpoint 注册(或更新)终端节点。
这是否意味着每次应用启动时,都会有一个新的端点/endpointId?如果当前会话结束或用户杀死并重新启动应用程序,它会注册一个新端点吗?
有没有办法以编程方式在应用程序中获取端点/端点 ID?
我是 Pinpoint 的新手,并试图了解端点/endpointId 如何在 Pinpoint 语义中工作。来自aws 文档:
当用户启动会话(例如,通过启动您的移动应用程序)时,您的移动或 Web 应用程序可以自动向 Amazon Pinpoint 注册(或更新)终端节点。
这是否意味着每次应用启动时,都会有一个新的端点/endpointId?如果当前会话结束或用户杀死并重新启动应用程序,它会注册一个新端点吗?
有没有办法以编程方式在应用程序中获取端点/端点 ID?
是的,每个唯一设备、电子邮件等的端点都是相同的。它必须相同,以便亚马逊知道在哪里发送推送通知,例如,如果您运行有针对性的活动。如果用户杀死并重新启动应用程序,则使用相同的端点。这适用于经过身份验证和未经身份验证的用户。因此,我有理由相信,如果当前会话结束(即用户必须重新验证),那么它们具有相同的端点。这是有道理的,因为每个设备(设备本身)都需要一个唯一标识符。为了更好地回答您的问题,我亲自测试了以下内容并确认:
如果一个用户注销,另一个用户登录 [在同一设备上],端点 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")
}
}