我在Php / Ratchet有一个工作的聊天服务器。我在Swift中使用Starscream作为我的客户端。我成功地在用户之间创建了聊天,但这仅在我的应用程序打开时才有效,因为这是套接字打开的时候。即使我的应用程序未启用,如何让我的应用程序接收消息。所以基本上有一种方法可以保持套接字打开。我在某处读过Apple禁止它。
答案 0 :(得分:2)
您的流程很可能会在某个时刻被系统关闭,因此我不会依赖应用程序在后台处于活动状态。
答案 1 :(得分:1)
听起来您正在从客户端向手机发送消息。您需要将消息发送到服务器,然后服务器将它们发送到您的手机。
如果无法成功向手机发送消息,服务器应存储该消息,并应在手机可用时将存储的消息发送至手机。
有这样的事情的消息排队系统。例如,参见RabbitMQ。还有很多其他人可以使用您的技术堆栈更好地工作。做一些研究。
此处客户端与服务器通信,服务器与RabbitMQ或您选择使用的任何内容挂钩,RabbitMQ跟踪排队的消息,当手机上线时,RabbitMQ将排队的消息发送到服务器并且服务器发送他们打电话。
PS Google“消息队列PHP”。
答案 2 :(得分:0)
您需要与服务器同步。请执行以下步骤。
转储数据库中的每条消息,即双方之间带有时间戳的对话。
当应用程序进入后台并进入前台时,请刷新屏幕/本地数组上的所有消息以在屏幕上显示消息,请调用Sync服务以获取整个会话,因为服务器肯定会所有消息,然后使用此服务响应向您提供消息。
iOS系统将在内核级别接收套接字调用,但不会将这些消息传递给您的应用程序,因此当应用程序处于后台时,您将不会收到消息。