Действие AWS Pinpoint не запускается с использованием реактивной системы - PullRequest
0 голосов
/ 19 сентября 2018

Я работаю над iOS и Android-приложением с Reaction-native и Amplify.Вся настройка для push-уведомлений выполнена.Я могу отправить кампанию на все или на определенное устройство - и получаю уведомления как на iOS, так и на Android.

Кроме того, в моем приложении включена глубокая связь.В iOS я могу набрать URL с моей собственной схемой, и он попросит меня открыть его в приложении и перейти к правильному маршруту.На Android я использую adb shell am start -a android.intent.action.VIEW -d "*://*/do-something" com.* (пустышка);тоже работает.

Однако, когда я отправляю Прямое сообщение в Pinpoint, используя глубокую ссылку, все, что он делает, это открывает приложение, а глубокая ссылка не открыта (https://i.imgur.com/652XoNQ.png). Даже используя Перейти к URL , приложение является открытым, а не указанный мной URL. Однако данные из Pinpoint получены (https://i.imgur.com/CCSBRyB.png)


Я использую следующие пакеты:

@aws-amplify/pushnotification": "^1.0.8",
"aws-amplify": "^1.0.10",
"react-native": "0.56.0",

Какая настройка требуется, чтобы убедиться, что действия из моего уведомления обрабатываются в моем приложении? Кажется, я не могу найти никакой документации по Определить действия и реагировать родной .

1 Ответ

0 голосов
/ 20 сентября 2018

ОБНОВЛЕНИЕ: на андроиде вы можете получить доступ к данным через notification.data['pinpoint.url'], поэтому просто данные - это объект, а ключи используют точки.Странное решение.

ОРИГИНАЛЬНЫЙ ОТВЕТ:

имел ту же проблему через час после того, как вы ее опубликовали.

Существует метод onNotification в библиотеке PushNotification ampify,Это срабатывает, когда приходит notification.На iOS это уведомление типа PushNotificationIOS, а на Android - обычный объект (не уверен, что здесь все еще ведется расследование).

На iOS вы можете получить доступ к данным с помощью notification.getData().data.pinpoint

образца кода:

    PushNotification.onNotification((notification) => {
        if (Platform.OS === 'ios') {
          if (notification.getData().data.pinpoint.deeplink) {
            alert(notification.getData().data.pinpoint.deeplink);
          }
          notification.finish(PushNotificationIOS.FetchResult.NoData)
        } 
        else {
          if (notification.data && notification.data['pinpoint.deeplink']) {
            alert(notification.data['pinpoint.deeplink']);
          }
        }
    }

не забудьте импортировать все необходимое.

Надеюсь, это поможет.

Приветствия,

Бен

...