当应用程序处于终止(终止)状态

时间:2016-04-27 09:35:34

标签: ios iphone swift websocket push-notification

我正在使用websocket和Swift 2来维护应用和服务器之间的一些数据。这个websocket在前台和后台状态下运行良好,但是当我终止(kill)app时,websocket连接断开。当再次来到应用程序时,它将再次开始工作。

备注:

  • 提供所有背景,VOIP和其他权限。
  • 一般来说,websocket不能在后台运行,我已经想通了 一个解决方案,以保持工作在后台状态和设备时 锁定。
  • 也尝试了静音推送通知,它会调用方法 websocket连接,静默推送通知发生但方法 仅在返回应用程序时有效。

那么,当应用程序处于终止(终止)状态时,任何想法和建议都会对如何保持实时websocket表示赞赏吗?

提前致谢!

2 个答案:

答案 0 :(得分:3)

这是不可能的。当用户终止应用程序时,一切都顺其自然,如果情况不是这样,那么用户将无法阻止应用程序做出奇怪的事情(除了重启整个设备)。

此外,您不应该尝试使用异国情调的东西来解决系统限制,因为这会(最终)导致应用拒绝您释放到商店和/或对您的应用运行时电池寿命不满意的用户。

答案 1 :(得分:0)

您可以尝试使用内容可用的推送通知来实现您正在寻找的行为,这会让您有时间在后台下载内容(更多信息here),以便执行此操作有效负载的结构应该是,

{
    "aps" : {
        "content-available" : 1
    },
    "data-id" : 1234
}

然后实现以下方法来下载内容,或者在您的情况下使用Web套接字执行某些操作

- (void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler

此方法应仅用于更新应用中的某些状态或下载某些数据,Apple建议不要使用此方法来保持套接字始终处于活动状态,如果您使用此方法,我肯定会拒绝您的应用你的插座总是活着。