2017-01-23 88 views
0

我想为使用Azure SQL数据库连接到Azure应用服务的UWP移动应用启用推送通知。通知只会警告位于距某个地理坐标x公里内的用户。用户如何跟踪基于位置的推送通知?

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

在我的数据库,我应该存储了使用的应用程序,并定期更新其位置每个用户?我猜我需要这样做,以便计算哪些在范围内,并只发送通知给那些人。然而,这导致我到我的下一个问题,

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

回答

0

没有什么可以跟踪推送通知中用户的位置。有两件事你可以做:

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

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

1

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

我相信你很熟悉WNS。如果没有,请检查该文件,它会解释你的频道Uri。

然后在您的天蓝色服务中,您需要将位置和通道Uri保存在某些数据库表中。您需要计算距某个地理坐标的距离。如果符合要求,您可以获得所有合格的渠道Uris(例如select channelUri from yourtable where location='xxxxx'

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

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

+0

通过后台任务拉出设备位置,甚至可能吗?因为我试图这样做,但窗口不允许后台任务发送位置数据。更多关于此:https://msdn.microsoft.com/en-us/windows/uwp/maps-and-location/guidelines-and-checklist-for-detecting-location它明确指出应用程序必须在前台 –

+0

什么关于这种情况 - 一个天气应用程序,要求用户登录并设置他们的主页位置。然后根据保存的家庭地点(不是当前位置)发送通知。如何将Uri频道与个人用户(而不是设备)相关联 - 例如根据用户表获得基于家庭位置的用户,然后仅根据用户的频道Uri发送通知。 – erotavlas

+0

@erotavlas如果'home location'由用户设置。您可能需要考虑[将地址转换为地理位置](https://msdn.microsoft。com/en-us/windows/uwp/maps-and-location/geocoding),然后您可以将坐标信息发布到您的天蓝色服务。关于'如何将Uri频道连接到个人用户(不是设备)',我应该在我上面的回复中解释过,Uri频道对每个设备都是唯一的。请阅读[WNS](https://msdn.microsoft.com/en-us/windows/uwp/controls-and-patterns/tiles-and-notifications-windows-push-notification-services--wns--overview)更仔细。 –