我需要一些帮助来了解如何在 Amplify 中配置 AWS Pinpoint 分析。我目前正在使用 Amplify 进行身份验证,并在我的index.js
文件中将其配置为:
export const configureAmplify = () => {
window.LOG_LEVEL="DEBUG"
Hub.listen('auth', data => handleAmplifyHubEvent(data))
Hub.listen('analytics', data => handleAmplifyHubEvent(data))
Amplify.configure({
Auth: {
identityPoolId: "redacted",
region: "us-west-2",
userPoolId: "redacted",
userPoolWebClientId: "redacted",
mandatorySignIn: false,
cookieStorage: {
domain: process.env.NODE_ENV === 'development' ? "localhost" : "redacted",
path: '/',
expires: 1,
secure: false
}
}
})
}
要添加 Analytics,我首先将其添加到我的configureAmplify()
函数中:
Analytics: {
disabled: false,
autoSessionRecord: true,
AWSPinpoint: {
appId: 'redacted',
region: 'us-east-1',
endpointId: `wgc-default`,
bufferSize: 1000,
flushInterval: 5000, // 5s
flushSize: 100,
resendLimit: 5
}
}
在用户登录或从 cookie 存储刷新时,我调用了
Analytics.updateEndpoint({
address: user.attributes.email, // The unique identifier for the recipient. For example, an address could be a device token, email address, or mobile phone number.
attributes: {
},
channelType: 'EMAIL', // The channel type. Valid values: APNS, GCM
optOut: 'ALL',
userId: user.attributes.sub,
userAttributes: {
}
})
这样做之后,在我看来 Pinpoint 控制台中的数据并不准确。例如,当前没有应用端点过滤器时显示 44 个会话。如果我在那时添加一个端点过滤器,userAttributes: userId
无论我选择哪个 ID,它都会显示与该用户关联的所有 44 个会话。我怀疑这是因为它EndpointID
是在启动时建立的,并且没有被updateEndpoint
调用改变。
我还尝试Analytics
在最初配置 Amplify 时省略密钥,然后Analytics.configure()
在用户登录后调用。通过这种方法,我可以构造一个特定于用户的endpointId
. 但是,我认为这样做意味着我不会捕获任何身份验证事件(登录、注册、身份验证失败),因为直到它们发生之后才会配置分析。
所以我的问题是配置 Amplify Analytics 的正确时机是什么?如何准确捕获会话、身份验证和自定义事件,并通过用户 ID 唯一标识它们?