В FCM (облачные сообщения Firebase) безопасно ли включать токен в уведомление? - PullRequest
0 голосов
/ 28 августа 2018

При отправке push-уведомлений на устройство Android с помощью FCM безопасно ли включать токен в тело уведомления? Будет ли это как-то нарушать безопасность / конфиденциальность или GDPR?

В документации Firebase (https://firebase.google.com/docs/cloud-messaging/concept-options), их пример включает токен уведомления в уведомление:

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification":{
      "title":"Portugal vs. Denmark",
      "body":"great match!"
    }
  }
}

Вместо этого мы можем сделать что-то подобное?

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification":{
      "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
      "title":"Portugal vs. Denmark",
      "body":"great match!"
    }
  }
}

Если нет ничего плохого в том, чтобы включить токен в уведомление, я надеялся, что смогу включить токен в уведомление для проверки на стороне клиента, чтобы отфильтровать получение уведомления от просроченного токена (токен не всегда сразу становится недействительным. По крайней мере, в GCM это не так)

ПРИМЕЧАНИЕ. Причина, по которой я это делаю, заключается в том, что когда пользователь удаляет и переустанавливает приложение, старый токен все еще может быть активным. Пока работа cron в Firebase не удалит старый токен, старый токен все еще можно использовать. Это проблема, если у вас есть отдельный сервер, поддерживающий токены. Поэтому я надеялся, что смогу просто включить токен в уведомление, чтобы отфильтровать недействительные уведомления и сделать недействительным старый токен на нашем частном сервере.

1 Ответ

0 голосов
/ 28 августа 2018

В этом примере токен отправляется в сообщении, а не в уведомлении. Уведомление также является частью сообщения.

Сообщение отправляется на сервер FCM, где с помощью токена он узнает, кому направлено уведомление.

Насчет включения токена в уведомление я бы этого не делал.

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

РЕДАКТИРОВАТЬ I

Вы не сможете таким образом добавить токен в уведомление (как дополнительный атрибут). Посмотрите, как сообщение json должно быть сформировано в документации fcm. Если есть место, которое вы можете установить (что я не рекомендую делать), это часть data.

Причина, по которой его не включать, заключается в том, что для этого нет причин:

Токен не управляется вашим приложением, он управляется сервером FCM. Вам просто нужно позаботиться об обновлении вашего сервера при изменении токена, и в этом случае API FCM сообщает об этом вашему приложению, вызывая обратный вызов в приложении ( onTokenRefresh () ). Когда вы делаете это, вы сохраняете копию токена в общих настройках.

После последнего пункта приложение уже имеет токен. Отправляя его в каждом уведомлении, если оно попадает на мобильное устройство, это потому, что оно все еще действует, поэтому оно уже есть в общих настройках. С другой стороны, если токен недействителен, сообщение не будет получено, и приложение никогда не узнает об этом. Все вернется на круги своя, когда сервер FCM предоставит новый токен приложению. В этом случае приложение уведомляется с помощью обратного вызова, и ваше приложение заменяет токен в общих настройках и обновляет ваш сервер.

...