2016-04-27 94 views
5

我使用websocket与Swift 2来维护应用程序和服务器之间的一些数据。这个websocket在前台和后台状态下工作正常,但是当我终止(kill)app时,websocket连接中断。当再次进入应用程序时,它将再次开始工作。当应用程序处于终止状态时,保留活动websocket

注:

  • 所有背景,VOIP等权限给出。
  • 一般来说,websocket不能在后台工作,我已经想通了 解决方案继续工作在后台状态和当设备锁定时 。
  • 尝试了静默推送通知,它调用了websocket连接的 方法,但发生了静默推送通知,但方法 仅在回到应用程序时才起作用。

因此,任何想法和建议都赞赏有关如何在应用程序处于终止(终止)状态时保持活动websocket?

提前致谢!

+0

你永远不会有一个处理程序,使用无声推动,只有当应用程序再次激活它将被处理。我真的无法看到这样做的方式。 – Brduca

+0

@Brduca - 我没有得到任何处理程序,并且只有当我回到应用程序时,无声推送通知才有效。任何人都可以知道其他选项吗? – Hasya

+0

Hasya,这就是我要告诉你的。这是不可能的。 – Brduca

回答

3

这是不可能的。当用户终止应用程序时,所有事情都随之而来,如果情况并非如此,那么用户将无法停止应用程序执行奇怪的事情(除了重新启动整个设备)。

此外,你不应该尝试一些奇特的东西来避开系统限制,因为这将最终导致应用程序拒绝你发布到商店和/或在应用程序运行时不满意电池寿命的用户。

+0

非常感谢Wain,我需要知道你的一件事情,例如app处于kill状态,app将推送通知称为“来电”,1分钟后再次将另一个推送通知作为“未接来电”,但我还是很喜欢碰到任何通知,那么当通知栏(栏)中出现“未接来电”通知时,我们是否可以清除/删除“来电”推送通知? (用户还没有碰过任何东西) – Hasya

+0

不,没有办法编辑该列表,iOS为您处理(与用户交互有关) – Wain

+0

Wain,Skype iOS应用程序如何发生? Skype.your的帮助会发生在我身上。 – Hasya

0

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

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

然后实现下面的方法来下载内容,或在你的情况做一些与你的web套接字

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

此方法只应使用在更新一些状态你的应用程序或下载一些数据,Apple建议不要使用它来保持你的套接字始终处于活动状态,如果你使用它来保持你的套接字始终处于活动状态,我肯定会最终拒绝你的应用程序。

+0

我知道这一点,并已实施,静默推送通知无助于保持Web套接字活着。但是这只有在从终止状态返回到应用程序时才起作用。非常感谢很多弗朗西斯科。 – Hasya

相关问题