Push-уведомления о детоксикации

  • Я сейчас пытаюсь реализовать тест на push-уведомления, но у меня проблемы с системой обработки.

Мой тест e2e выглядит так:

```
it('Init from push notification', async () => {
    await device.launchApp({newInstance: true, userNotification: userNotificationPushTrigger});
    await expect(element(by.text('From push'))).toBeVisible();
  });

const userNotificationPushTrigger = {
  "trigger": {
    "type": "push"
  },
  "title": "From push",
  "subtitle": "Subtitle",
  "body": "Body",
  "badge": 1,
  "payload": {
    "key1": "value1",
    "key2": "value2"
  },
  "category": "com.example.category",
  "content-available": 0,
  "action-identifier": "default"
};
```
  • Как я видел в документации, система обработки должна выглядеть так:

    _onNotification(notification) { console.log('App@onNotification:', notification); this.setState({notification: notification.getAlert()}); }

  • Может кто-нибудь объяснить мне, как работает эта функция _onNotification ()? Более точно, как этот объект уведомления анализируется из теста e2e на экране app.js.

  • Также путь для _onNotification - Detox / detox / test / src / app.js.

    1. Я нашел пример обработки в ссылке ниже: https://github.com/wix/Detox/blob/47a921076194ac3a9ca6c875afe1b2ce4b7f91c6/detox/test/src/app.js#L153

    2. И тестовый пример https://github.com/wix/Detox/blob/master/detox/test/e2e/11.user-notifications.test.js


person Prutii35    schedule 10.06.2020    source источник


Ответы (2)


Вам необходимо подключить нативную часть вашего приложения для отправки уведомлений в RN. В примере с iOS мы вообще не обрабатываем уведомления в RN. Вы можете увидеть это здесь: //github.com/wix/Detox/blob/c8f4b28599358e465fb326810453a28bb4509a22/detox/test/ios/example/AppDelegate.m#L203

Вы можете реализовать аналогичный метод, но вместо этого направить уведомление в RN. Вы также можете использовать платформы с открытым исходным кодом, которые делают это за вас, например response-native-notification .

person Leo Natan    schedule 10.06.2020

Я думаю, что документация по детоксикации может дать некоторую ясность в отношении того, какая информация требуется в различных областях - например, категория и идентификатор действия

Я пытаюсь протестировать приложение, которое работает с настоящими уведомлениями. Системное уведомление запускается, но не связано с приложением RN. В приложении RN есть обработчики didReceiveRemoteNotification (и локальные), но я не думаю, что правильно настраиваю уведомление, поэтому оно никогда не достигает приложения.

РЕДАКТИРОВАТЬ: Я упорно работал, и, хотя я определенно не эксперт, я наткнулся и хотел поделиться своими выводами, если они помогут. К вашему сведению - я использую response-native-firebase 5.6.0 для обработки уведомлений и тестирую RN 0.62.2 с симулятором iPhone 11 на iOS 13.5. Я зацикливался на получении правильных системных атрибутов в уведомлении (категория , действие), поскольку я думал, что это необходимо, чтобы iOS доставила уведомление моему приложению. Я думаю, что Detox позаботится об этом, хотя в какой-то жесткой проводке, поскольку все, что я установил для этих значений, сообщения по-прежнему доставляются обработчикам уведомлений, зарегистрированным в RN firebase. Моя проблема была проще в том, что моя полезная нагрузка была неправильной, и я не заметил ошибок в моем журнале. Я все еще думаю, что Detox выиграет от лучшей документации, но это очень хорошо работает для меня при обработке уведомлений переднего плана.

person Nick Jones    schedule 11.06.2020
comment
Это комментарий, а не ответ. didReceiveRemoteNotification: - это устаревший API, который больше не поддерживается Detox. Это упоминается в документации: github.com/wix /Detox/blob/master/docs/Guide.Migration.md#1400 Документация Detox не предназначена для обучения написанию приложений, а предназначена только для того, чтобы помочь вам их протестировать. - person Leo Natan; 15.06.2020
comment
Это не дает ответа на вопрос. Чтобы критиковать или запрашивать разъяснения у автора, оставьте комментарий под его сообщением. - Из отзыва - person Alexander van Oostenrijk; 16.06.2020
comment
Эй, Ник, не могли бы вы поделиться кодом, который привел вас к решению? - person user3779502; 22.09.2020