Является ли конечная точка уникальной для устройства в AWS Pinpoint?

Я новичок в Pinpoint и пытаюсь понять, как работает endpoint / endpointId в семантике Pinpoint. Из документа aws :

Когда пользователь запускает сеанс (например, запускает ваше мобильное приложение), ваше мобильное или веб-приложение может автоматически регистрировать (или обновлять) конечную точку с помощью Amazon Pinpoint.

Означает ли это, что каждый раз при запуске приложения появляется новая конечная точка / endpointId? Будет ли он регистрировать новую конечную точку, если текущий сеанс завершится или пользователь убьет и перезапустит приложение?

Есть ли способ получить конечную точку / идентификатор конечной точки в приложении программно?


person pledez    schedule 30.08.2018    source источник


Ответы (1)


Да, конечная точка одинакова для каждого уникального устройства, электронной почты и т. Д. Она должна быть одинаковой, чтобы Amazon знал, куда отправлять push-уведомления, например, если вы запускаете целевую кампанию. Если пользователь завершает работу и перезапускает приложение, используется та же конечная точка. Это касается как аутентифицированных, так и не аутентифицированных пользователей. Таким образом, у меня есть основания полагать, что если текущий сеанс завершится (т.е. пользователь должен повторно пройти аутентификацию), то у них будет одна и та же конечная точка. Это имеет смысл, потому что каждому устройству (самому устройству) нужен уникальный идентификатор. Чтобы лучше ответить на ваш вопрос, я лично протестировал приведенное ниже и подтвердил:

Если один пользователь выходит из системы, а другой входит в систему [на том же устройстве], идентификатор конечной точки остается прежним. В приведенном ниже коде регистрируется идентификатор пользователя с определенной конечной точкой. Вы также можете изменить приведенный ниже код, чтобы распечатать идентификатор конечной точки, как вы просили.

Поместите это в верхней части вашего AppDelegate, если вы используете Swift и AWS Cognito для аутентификации пользователя:

        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")
                }
            }
person Josh Wolff    schedule 31.08.2018