我试图使用API制作简单的消息应用程序。现在,我有一个线程每秒检查一次请求,看看消息的数量是否发生了变化,但是这会带来很多麻烦,RAM会不断增加,并且由于请求的数量太大,API变得无法响应。目前我的代码看起来是这样的:如何读取HTTP请求,而不会使用Swift 3泛滥我的API
var request = URLRequest(url: URL(string: "URL")!)
let session = URLSession.shared
public func thread()
{
DispatchQueue.global(qos: .background).async {
while(true)
{
self.request.httpMethod = "GET"
self.session.dataTask(with: self.request) {data, response, err in
let json = try! JSONSerialization.jsonObject(with: data!, options: []) as? [String: Any]
let data = json?["data"] as? [[String: Any]]
if((data?.count)! > self.nbMessages)
{
self.messages.removeAll()
for message in data! {
let text = message["message_body"] as? String
let creator = message["creator_id"] as? Int
self.messages.append([text!, String(creator!)])
}
DispatchQueue.main.async {
self.nbMessages = (data?.count)!
self.TableView.reloadData()
let scrollPoint = CGPoint(x: 0, y: self.TableView.contentSize.height - self.TableView.frame.size.height)
self.TableView.setContentOffset(scrollPoint, animated: false)
}
}
}.resume()
usleep(2000)
}
}
}
这工作得很好,我可以发送消息和查看发送给我(一个体面的延迟)的消息,但我与每2秒请求逻辑的路要走我承认这一点。我仍然在学习Swift,因此我非常感谢关于此事的一些建议,谢谢!
我认为这是当你应该使用推送通知... – Honey
以什么方式?我的API为我提供了2个端点:getmessages和sendmessage –
我同意@Honey,而不是无休止地运行该函数来观察收到的消息,向后端添加APNS功能,以便在新消息可用时通知您的应用程序,应用程序可以运行一个函数来提取新消息。 – janusbalatbat