1

在我的应用程序中,我使用网络服务,当用户登录到我的应用程序时,我的应用程序发送状态为 1 的请求表示已登录,当注销按钮时单击发送状态为 0 的请求。

现在的问题是,当用户从设备中删除应用程序时,我的服务器中的状态仍然是 1(登录),因此其他用户可以在他的应用程序不在设备中时看到他可用。那么当我的应用程序从设备中删除时,我有什么方法可以发送请求(我认为不可能),或者我可以在后端做任何其他方式吗?

提前致谢。

4

3 回答 3

4

当用户从 ios 设备上删除应用程序时,无法调用 Web 服务。有三种方法可以知道您的应用程序是否存在于用户的 ios 设备中。但也有一些限制。

  1. 激活推送通知:通过这样做,设备将注册到 Apple 的推送通知服务。当用户从设备中删除应用程序时,注册将从 APNS 服务器中撤消,并通过 APNS 反馈服务,您可以了解该应用程序是否存在。(限制:如果用户不同意接收推送通知,那么应用程序将不会注册到APNS,你永远不会知道应用程序是否存在)

  2. 激活基于位置的服务:如果您的应用程序启用了基于位置的服务,那么您的应用程序将在位置委托方法中获得定期位置更新。在这个委托中,即使应用程序在后台,您也可以调用 Web 服务并保持更新用户的状态。(限制:如果用户禁用位置更新,那么您的服务器将无法获取有关用户状态的信息)

  3. 定期从您的应用调用 Web服务:仅当您的应用处于活动状态时才有可能。(限制:当你的应用被推到后台时,你的应用会处于挂起模式,所以无法调用webservice)

于 2013-05-07T07:50:54.750 回答
2

抱歉很遗憾,Apple 没有提供用户从用户设备上卸载应用程序的任何方法,没有这样的方法。

当用户删除任何应用程序设备时,会使用“删除”和“取消”选项发出警报“您要删除此应用程序”。您不必为此编写任何特定代码。

我只是假设有一种方法可以让您找出用户何时要删除您的应用程序。那就是您需要实现推送通知,当您尝试推送到已卸载的实例时,Apple 服务器会通知您。除此之外,没有办法检测到它,但我不确定它是否有用。

于 2013-05-07T06:51:50.307 回答
1

您无法在应用程序内执行此操作。您可能想做一些事情,比如在后端运行一个定期任务,检查登录用户的最后活动日期,并在一些配置的不活动期后将它们设置为“不可用”。这可能需要对后端进行一些更改以记录上次活动日期并更改应用程序,以便在它打开时向后端发送定期的“心跳”。您可能希望将超时设置得相当大(比如 15 分钟,大到不会对性能产生太大影响)。

于 2013-05-07T06:55:45.117 回答