Firebase 如何根据用户位置发送FCM

Firebase 如何根据用户位置发送FCM,firebase,react-native,geolocation,firebase-cloud-messaging,Firebase,React Native,Geolocation,Firebase Cloud Messaging,我用React Native构建了一个购物应用程序。我们有来自全国各地的许多商店和餐馆在我们的应用程序上注册 当特定商店根据用户兴趣和发布者发布新产品时,我们使用FCM向用户发送消息。如果一家餐厅发布了报价,我们将发送给所有注册主题/餐厅的用户。这种行为是不好的,因为餐厅可能离用户太远,而这个优惠对他来说并不重要 这就是为什么我想基于位置创建主题,所以如果芝加哥的餐厅发布了报价,我只会发送给在/restaurants/Chicago上注册的用户 这是最好的方法吗?firebase是否提供类似的现

我用React Native构建了一个购物应用程序。我们有来自全国各地的许多商店和餐馆在我们的应用程序上注册

当特定商店根据用户兴趣和发布者发布新产品时,我们使用FCM向用户发送消息。如果一家餐厅发布了报价,我们将发送给所有注册主题/餐厅的用户。这种行为是不好的,因为餐厅可能离用户太远,而这个优惠对他来说并不重要

这就是为什么我想基于位置创建主题,所以如果芝加哥的餐厅发布了报价,我只会发送给在/restaurants/Chicago上注册的用户

这是最好的方法吗?firebase是否提供类似的现成产品?我如何跟踪用户,以了解他们何时从另一个城市离开另一个城市?

TL;DR:粗体文本

可以创建一个后台服务,每小时获取一次设备位置

如果没有位置后台服务,就不要添加位置后台服务。它会耗尽电池电量

您应该将位置与FCM分离,并使用一点预测。在他们开始计划访问餐厅时发送通知,并在他们打开你的应用程序时解析他们的位置/组

我假设您的应用程序已启用位置权限。您应该为您的用户做的是在Firebase数据库或云FireStore中存储他们过去位置的列表。将这些位置解析为大都市区、zipcode等。保留一个计数器,以帮助对该位置进行加权和排序

您还应该存储他们从地图视图查看的餐厅列表…特别是他们的位置。您将要做的是计算距离中心位置的近似距离,并创建平均旅行时间

例如,我更喜欢在距离我居住的地方平均30分钟的次都市区吃饭。我也喜欢在下午6点左右吃东西。我需要在下午5:15左右决定在哪里吃饭

你还应该跟踪他们在数据库中查看你的餐馆应用程序的时间,以确定他们何时开始决定吃饭

另一个问题是一周中的哪一天。例如,因为我住的地方离吃饭的好地方只有30分钟,所以我有时会在当地吃饭。这些地方在一周中的某些日子都会人满为患。。星期四他们会被挤得水泄不通,星期五只占一半,星期六几乎什么都没有。然后周日/周一,它们又回升到周五的水平。这是因为人们更愿意在周五/周六晚上开车进城,但他们不想做饭,周四会在当地外出就餐

现在是开始使用预测的时候了。Firebase有一个预测模块,和/或您可以编写云函数来组织数据库和调度FCM

首先,你需要收集数据。一种方法是在他们打开你的应用程序的一小时内启动定位服务。希望,这将捕获您的用户选择在哪个位置吃饭,我们称之为标签,对于分析来说,这可能是一个转换事件。另一个窍门是在一小时内发出通知,对他们的用餐体验进行评分。这不需要位置后台服务,如果他们打开通知,你就可以抓取他们的位置

拥有用户可以在餐厅出示的应用程序内优惠券可以让你抓取位置

此外,还要了解他们一周中的哪几天更喜欢外出就餐,以及在这些特定的日子里他们的目标区域

如果用户位于不同的大都市区,那么等待他们打开应用程序将允许您显示相关订阅。我飞往西雅图,下午4点就饿坏了

考虑到尽可能多的数据点功能,如星期几、时间、月日、两周日、到当地餐厅的平均距离、到地铁餐厅的平均距离、是假日、平均通知时间、餐厅的平均时间以及数据标签Eat_local、Eat_metro、,Eat_home您应该能够开始将用户分为不同的组

因此,在用户平均进食时间前1小时,您应该执行一些服务器端计算,以确定用户可能在哪里进食。例如,如果他们在星期四晚上在当地吃饭,你应该根据当地餐馆的平均距离安排FCM


永远不要将特定的用户转移到特定的餐厅。遵守GDPR,即使您不在欧盟运营,也包括其公民。对数据收集策略保持透明,并始终尝试匿名/随机化

这是一个相当广泛的话题。首先,您必须在数据库中存储每个餐厅的位置。那你就不得不这么做了。最后,你必须这么做。