当用户从后台关闭应用程序时,iOS会查找?

时间:2013-12-14 17:49:32

标签: ios objective-c

我的基于套接字的聊天应用程序有点麻烦。当用户从后台关闭应用程序时(通过按两次主页按钮并关闭它),我的服务器不知道用户实际上已关闭应用程序,因此它继续向该用户发送推送通知。

如何检测用户何时从后台实际关闭应用程序?

我的服务器逻辑是这样的: 当用户将应用程序带入后台时,我的服务器通过套接字发送推送通知而不是消息。如果应用程序在前台,我的服务器通过套接字发送消息。

其他人如何处理这个问题?

2 个答案:

答案 0 :(得分:2)

旧答案

- (void)applicationWillTerminate:(UIApplication *)application
当用户通过按两次主页按钮并关闭它来关闭应用程序时,不会调用

我正在开发一个应用程序,我正在处理类似的(虽然不一样)情况...为了检查用户是否可用/有网络连接,我发布到服务器定期,只允许我的服务器发送推送通知,如果它最近收到用户的帖子。同样,也许您可​​以让用户的设备发布到服务器以确认在每次推送通知后收到消息,然后在用户的设备停止响应时停止发送通知?


编辑:

新答案

我可能错了,但......这似乎已经改变了!看起来我们已经看到了一个苹果天使!现在,当我的应用程序以这种方式关闭时,就会调用applicationWillTerminate。

答案 1 :(得分:1)

简短的回答是否定的,这是不可能的。一旦您在后台,系统可以随时终止您,而无需任何进一步的警告。

您需要使用applicationDidEnterBackground消息(或UIApplicationDidEnterBackgroundNotification通知)告诉您的服务器关闭套接字连接并切换到推送通知。这就是你想要做的事情,因为你的应用程序在后台不再能够发出信号。