Редактировать: Ваша ошибка связана с неверным токеном регистрации: убедитесь, что адрес конечной точки совпадает с токеном регистрации, который клиентское приложение получает от регистрации в FCM - https://developers.google.com/cloud-messaging/http-server-ref#error-codes).
Мне удалось заставить его работать после входа в систему с помощьюполучить deviceToken
от AsyncStorage
.
Если вы хотите сохранить endpointId
и обновить только userId
(в каждый момент в систему входит только один пользователь - помните, что вы можете отправлять push-уведомления на конкретный userId
, который может иметь несколько конечных точек(устройства, электронная почта, номер телефона)):
try {
const deviceToken = await AsyncStorage.getItem('push_token'+aws_exports.aws_mobile_analytics_app_id)
if (deviceToken !== null) {
console.log('device token from AsyncStorage', deviceToken)
Analytics.updateEndpoint({
optOut: 'NONE',
channelType: 'GCM',
userId: userId,
address: deviceToken,
})
}
} catch (error) {
console.log('error retrieving device token from AsyncStorage', error)
}
ИЛИ, если вы хотите указать свой endpointId
(таким образом, вы можете иметь несколько пользователей / конечных точек на одном устройстве):
try {
const deviceToken = await AsyncStorage.getItem('push_token'+aws_exports.aws_mobile_analytics_app_id)
if (deviceToken !== null) {
console.log('device token from AsyncStorage', deviceToken)
Analytics.configure({
disabled: false,
AWSPinpoint: {
appId: aws_exports.aws_mobile_analytics_app_id,
region: aws_exports.aws_mobile_analytics_app_region,
endpointId: endpointId,
endpoint: {
address: deviceToken,
channelType: 'GCM',
optOut: 'NONE',
userId: userId
}
}
})
Analytics.updateEndpoint({
optOut: 'NONE',
})
}
} catch (error) {
console.log('error retrieving device token from AsyncStorage', error)
}
Сначала проверьте сообщения отладки, используя window.LOG_LEVEL='DEBUG'
Затем убедитесь, что Analytics работает!Настройте модуль аналитики перед модулем push-уведомлений (https://aws -amplify.github.io / docs / js / push-уведомления # configure-your-app ).У вас есть звонок на PushNotification.configure()
?
Насколько я знаю, вам нужно позвонить на PushNotification.onRegister()
, чтобы получить действующую активную конечную точку с таргетингом.
Вы тестируете на реальном устройстве?
А что произойдет, если вы не установите атрибуты endpointId
и endpoint
на amplifyConfig
?Он должен обновить адрес вашей конечной точки с помощью device token
самостоятельно.Позже вы сможете обновить свою конечную точку с помощью идентификатора пользователя Analytics.updateEndpoint({optOut: 'NONE', UserId: 'xxx'})
ps .: У меня была связанная проблема, и теперь она наконец работает, но я настроил свой бэкэнд с помощью Amplify CLI, поэтому он может немного отличаться