一旦另一端的用户发送了消息,许多即时服务会自动显示消息。
现在,我能想到的唯一方法是使用一个nstimer,它将运行相应的代码块来获取消息并更新表视图。这是资源密集型的,每秒可能浪费一个请求。有没有办法自动化这个过程,只有在发送/接收新消息时才能实现?
答案 0 :(得分:1)
以下是在您的应用委托中使用didReceiveRemoteNotification
来响应推送通知的示例。特别是,您关心在应用程序处于活动状态时收到通知的情况。
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {
if (PFUser.currentUser() == nil) {
return
}
if (application.applicationState == UIApplicationState.Inactive || application.applicationState == UIApplicationState.Background) {
// Received the push notification when the app was in the background
PFAnalytics.trackAppOpenedWithRemoteNotificationPayload(userInfo)
// Inspect userInfo for the push notification payload
if let notificationPayloadTypeKey: String = userInfo["someKey"] as? String {
// Do something
}
} else {
// Received the push notification while the app is active
if let notificationPayloadTypeKey: String = userInfo["someKey"] as? String {
// Use NSNotificationCenter to inform your view to reload
NSNotificationCenter.defaultCenter().postNotificationName("loadMessages", object: nil)
}
}
}
然后你只需要在视图控制器中添加一个监听器。在viewDidLoad
内部添加以下内容,只要收到通知,就会调用函数loadMessages
。
NSNotificationCenter.defaultCenter().addObserver(self, selector: "loadMessages", name: "loadMessages", object: nil)
如果您下载the code for Parse's Anypic example project,则可以看到他们如何处理远程通知。