删除我的应用程序时,呼叫状态更改Web服务

时间:2013-05-07 06:43:00

标签: iphone ios objective-c web-services background

在我的应用程序中,我使用Web服务,当用户登录到我的应用程序时,我的应用程序正在发送状态为1的请求,这意味着在登出按钮时单击发送状态为0的请求。

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

提前致谢。

3 个答案:

答案 0 :(得分:4)

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

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

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

  3. 定期从您的应用程序调用Web服务:仅当您的应用处于活动状态时才可以执行此操作。 (限制:当您将应用程序推送到后台时,您的应用程序将处于挂起模式,因此无法调用Web服务)

答案 1 :(得分:2)

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

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

我只是假设有一种方法可以让您了解用户何时删除您的应用。那就是你需要实现推送通知Apple服务器会在你尝试推送到未安装的实例时通知你。除此之外,没有办法检测到它,但我不确定它是否有用。

答案 2 :(得分:1)

您无法在应用内执行此操作。您可能希望执行类似于在后端运行的定期任务,检查已登录用户的上次活动日期以及在某些配置的不活动时段后将其设置为“不可用”的操作。这可能需要对后端进行一些更改,以记录上次活动日期和对应用程序的更改,以便在打开时向后端发送定期“心跳”。您可能希望使超时非常大(比如15分钟,大到足以对性能没有太大影响)。