ios - 应用程序处于未运行或终止状态时的网络选项

标签 ios objective-c network-programming

我们正在构建一个 iOS iPhone 应用程序,它需要每 12 小时向服务器登记一次。这是让服务器知道该应用程序仍在使用它在服务器上的服务所必需的。据我们了解,当应用程序通过后台获取或远程通知处于后台状态(未在前台显示)时,这是可能的。

但是当应用程序未运行或终止时这是不可能的,当应用程序处于这些状态时则无法启动与服务器的通信。这个说法是否正确?是否可以在设备启动后启动通信,然后是否可以向服务器发送一条小的保持事件消息?

后台获取和响应远程通知在非运行和终止状态(?)下是不可能的,因此我们不能将这些机制用于此目的。如果是这样,我们可以尝试其他解决方案吗?还是根本不可能?

我们查看了 Internet 上的许多资源,但有些人说这是可能的,而另一些人则说不是。

最佳答案

您可能想看一下 Silent Push Notifications。事情是这样的,如果应用程序处于后台模式或暂停状态,你会没事的。如果应用程序被用户杀死,你就有问题了。

您始终可以发送静默推送通知,并等待从设备向您的服务发出的服务调用。如果有响应,则表示该应用程序处于后台或已挂起,然后您可以继续做任何您需要做的事情。如果没有请求,则表示该应用已被杀死。然后您可能想要发送一个非静默推送,让该设备的用户知道他需要启动应用程序或类似的东西。我不知道你将如何解决它,但这是可能的。

我会告诉你也看看 NSURLSession 和 Background NSURLSessionConfiguration,但你会遇到同样的问题。如果用户手动终止应用程序,您需要找到解决方法来设置与服务器的连接,这将意味着用户以某种方式启动您的应用程序。

关于ios - 应用程序处于未运行或终止状态时的网络选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34966375/

相关文章:

iphone - 在 applicationDidEnterBackground 时更新数据

ios - Init 方法未显示在 Swift Bridging header 中

ios - 动态自动布局调整大小

ios - LTR 到 RTL 在 objective-c 中使用相同的 xib

ubuntu - 为什么 networkmanager.WatchState 出现 panic ?

c# - NAT 在其表中保留 TCP 转换字段多长时间?

ios - 命令/usr/bin/codesign 失败,退出代码为 1 Xcode CocoaPods

ios - navigationItem.titleView 更新时闪烁

linux - Linux 套接字编程的最佳实践

iphone - 关闭特定对象的控制台日志记录