如何跟踪用户以获取基于位置的推送通知?

Posted

技术标签:

【中文标题】如何跟踪用户以获取基于位置的推送通知?【英文标题】:How are users tracked for location based push notifications? 【发布时间】:2017-01-23 01:44:17 【问题描述】:

我想为使用 Azure SQL 数据库连接到 Azure 应用服务的 UWP 移动应用启用推送通知。通知将仅提醒位于某个地理坐标 x 公里范围内的用户。

但是我不清楚如何跟踪用户,我的问题如下,

我是否应该在我的数据库中存储每个使用该应用程序的用户并定期更新他们的位置?我猜我需要这样做以计算哪些在范围内并仅向那些发送通知。然而,这引出了我的下一个问题,

如果我要在我的数据库中为每个用户存储一条记录,他们使用什么标识符?如何在每台设备上识别用户?他们是否需要通过 Facebook、Twitter 等授权提供商登录才能让我的应用记录唯一标识符?还是有不同的机制来创建或获取唯一标识符?

【问题讨论】:

【参考方案1】:

@DaveSmits 的方向是正确的。您可以注册 GeofenceBackgroundtask 以向您的 azure 服务报告用户的位置。除了当前位置,您还需要将当前设备频道 Uri 报告给您的 zaure 设备。

相信你对WNS很熟悉。如果没有,请查看该文档,它将为您解释频道 Uri。

然后在你的azure服务中,你需要在一些数据库表中保存位置和通道Uri。您需要计算与某个地理坐标的距离。如果满足要求,则可以获得所有符合条件的频道Uris。(例如select channelUri from yourtable where location='xxxxx'

获得所有频道 Uris 后,您可以使用它向特定用户发送通知。关于如何发送通知,请查看 WNS 文档。

我在MSDN上回答了类似的问题,它还需要向特定用户发送通知。

【讨论】:

通过后台任务提取设备位置,这可能吗?因为我试图这样做,但 Windows 不允许后台任务发送位置数据。更多相关信息:msdn.microsoft.com/en-us/windows/uwp/maps-and-location/… 它明确声明应用程序必须在前台 这个场景怎么样 - 一个需要用户登录并设置其家庭位置的天气应用程序。然后根据保存的家庭位置(不是当前位置)发送通知。如何将频道 Uri 链接到单个用户(而不是设备) - 例如,根据用户表中的家庭位置获取用户,然后根据他们的频道 Uri 仅向这些用户发送通知。 @erotavlas 如果home location 由用户设置。您可能需要考虑 Convert addresses to geographic locations,然后您可以将坐标信息发布到您的 azure 服务。关于How to link channel Uri to individual user (not device),我应该在上面的回复中解释过,每个设备的频道 Uri 都是唯一的。请仔细阅读WNS。 如何处理这种情况“我们不保证应用程序的通知通道 URI 将始终保持不变。我们建议应用程序在每次运行时请求一个新通道并在何时更新其服务URI 更改”?如果 Azure 中的通道 Uri 发生变化,我不明白这将如何工作。它无法将通知发送给尚未运行应用程序的用户以获取新的频道 Uri。 @erotavlas Notification channels automatically expire after 30 days 请阅读How to request, create, and save a notification channel【参考方案2】:

在推送通知中没有任何东西可以跟踪用户的位置。您可以做两件事:

解决方案 1: - 使用触发后台任务的地理围栏。如果进入地理围栏注册推送通知。如果在您的后端再次取消订阅地理围栏。

解决方案 2: - 只发送原始通知并使用后台任务来处理它们。在后台任务评估当前位置,如果在正确的位置触发代码通知。

【讨论】:

以上是关于如何跟踪用户以获取基于位置的推送通知?的主要内容,如果未能解决你的问题,请参考以下文章

使用 MobileFirst 的基于位置的推送通知

如何使用推送通知等更改位置间隔

iOS - 如何在 iOS 应用上跟踪用户对推送通知的选择?

基于地理位置的推送通知

Firebase 推送通知 - 如何跟踪用户 FCM 令牌?

如何从我的所有用户那里获取设备令牌信息以进行推送通知?