Как отправить FCM в зависимости от местоположения пользователя - PullRequest
0 голосов
/ 10 мая 2018

Я создал приложение для покупок, используя React Native. У нас есть много магазинов и ресторанов со всей страны, зарегистрированных в нашем приложении.

Мы отправляем сообщения нашим пользователям, используя FCM, когда конкретный магазин публикует новое предложение на основе интересов пользователя и издателя. Если ресторан опубликовал предложение, мы отправим всем пользователям, зарегистрированным по теме "/ рестораны". Это плохое поведение, потому что, возможно, ресторан находится слишком далеко от пользователя, и это предложение ему не важно.

Вот почему я хочу создавать темы на основе местоположения, поэтому, если ресторан из Чикаго разместит предложение, я отправлю только пользователям, зарегистрированным в "/ restaurants / chicago".

Это лучший способ сделать это? Предлагает ли Firebase нечто подобное из коробки? И как я буду следить за тем, чтобы пользователи знали, когда они едут из другого города из другого?

1 Ответ

0 голосов
/ 10 мая 2018

TL; DR: текст, выделенный жирным шрифтом.

Можно создать фоновую службу, которая (раз в час) будет определять местоположение устройства. https://developer.android.com/about/versions/oreo/background-location-limits

Лучший способ получить пользовательское местоположение GPS в фоновом режиме в Android

Не добавляйте фоновую услугу определения местоположения, если вы можете избежать ее отсутствия. Это разряжает батарею.


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


Я предполагаю, что у вашего приложения включены разрешения на местоположение Что вы должны сделать для своего пользователя, это сохранить список их прошлых местоположений в базе данных Firebase (или Cloud FireStore). Разрешите эти местоположения в столичную область, почтовый индекс и т. Д. Держите счетчик, чтобы помочь взвесить это местоположение (и отсортировать)

Вам также следует хранить список ресторанов, которые они просматривали в виде карты ... особенно их местоположения. То, что вы собираетесь сделать, это вычислить приблизительное расстояние от центрального местоположения и создать среднее время в пути.

например. Я предпочитаю есть в столичном регионе, который (в среднем) находится в 30 минутах от того места, где я живу. Я также люблю есть около 6 вечера. Мне нужно принять решение о том, где я хочу поесть около 5:15 вечера.

Вы также должны отслеживать, сколько раз они просматривали ваше приложение для ресторанов в базе данных, чтобы выяснить, когда они начинают принимать решения о еде.


Другая проблема - это день недели. Например, поскольку я живу в хороших местах 30 минут, я иногда буду есть на месте. Эти местные места будут упакованы в определенные дни недели. В четверг они будут упакованы, в пятницу будет половина от этого, а в субботу почти ничего. Затем в воскресенье / понедельник они возвращаются к уровням пятницы. Это потому, что люди больше охотно едут в город в пятницу / субботу, но они не хотят готовить и едят вне дома в четверг.


Теперь, когда вы начинаете использовать предсказания. Firebase имеет модуль Predictions, и / или вы можете написать Cloud Functions для организации вашей базы данных и планирования FCM.

Сначала вам нужно собрать данные. Одним из способов является запуск службы определения местоположения с часа, когда они открывают ваше приложение. Надеемся, что это поймает вашего пользователя, в каком месте он решил поесть (мы назовем это Label , для аналитики это, вероятно, будет событием конверсии). Другой трюк заключается в том, чтобы через час вывести уведомление, чтобы оценить свой обеденный опыт. Это не требует фоновой службы определения местоположения, и если они открывают уведомление, вы можете получить их местоположение.

Наличие в приложении купонов, которые пользователь может представить в ресторане, позволяет вам захватить местоположение.

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

Если пользователь находится в другом мегаполисе, то ожидание, пока он откроет приложение, позволит вам отобразить соответствующие подписки. Я вылетел в Сиэтл и голодал в 4 часа дня.

Учитывая максимально возможное количество точек данных (функций) (день недели, время суток, день месяца, день 2 недели, среднее расстояние до местных ресторанов, среднее расстояние до ресторанов метрополитена, is_holiday, average_notification_open, average_time_at_restaurant) И метки данных (Eat_locally, eat_metro, Eat_home) вы сможете начать классифицировать пользователей по различным группам.

Итак, за 1 час до среднего времени приема пищи вашего пользователя, вы должны выполнить некоторые вычисления на стороне сервера, чтобы определить, где ваш пользователь, вероятно, будет есть. Например, если они едят в местном масштабе в четверг вечером, вы должны запланировать FCM в соответствии со средним расстоянием местных ресторанов.


Никогда не направляйте конкретного пользователя в конкретный ресторан. Соблюдайте GDPR, даже если вы не работаете в ЕС (это касается их граждан).Будьте прозрачны с вашей политикой сбора данных и всегда пытайтесь анонимизировать / рандомизировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...