ios - 让服务器后端告诉 iOS 应用程序更新数据

标签 ios ruby-on-rails apple-push-notifications

我目前有一个运行线程(通过 NSTimer)的 iOS 应用程序,该线程每 10 秒轮询 rails 服务器上的后端 ruby​​ 以更新 UITableView。这样做的原因是 tableview 应该在 iPad 上始终打开,以便它可以反射(reflect)服务器数据的变化。

我的问题是 - 有更好的方法吗?我可以使用 Apple 推送通知系统告诉我的应用程序从服务器更新它的数据而不向用户显示通知吗? (我过去曾使用 Android GCM 告诉应用程序更新而不显示通知,但我不确定 Apple 是否允许这样做)如果是这样,怎么做?

是否有另一种解决方案来通知我的 iOS 应用在服务器发生变化时更新数据?

最佳答案

从 iOS7 开始,您可以像 Android GCM 一样向您的应用程序发送静默的 oush 消息。您需要做的就是将以下键值对与您的负载一起发送:

aps =     {
    "content-available" = 1;
};

通过这样做,推送消息不会显示在横幅或警报中,您可以在应用委托(delegate)中收到消息时更新您的表格 View :

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { 
    // update your application
}

关于ios - 让服务器后端告诉 iOS 应用程序更新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25609651/

相关文章:

ios - 仅支持带摄像头的 iOS 设备的兼容性例程

ios - AFHTTPRequestOperationManager 没有响应

ios - Urban Airship : Error "Failed to associate named user with status: 403"

ios - 在没有网络连接的情况下处理 APNS 推送 token

ios - 在 XCTests (UITests) 中测试通知

iOS - 旋转时使用动态单元格高度重绘 TableViewCells

ios - 如何在 XCode 7 中的 UITests 持续时间后执行 .tap()?

ruby-on-rails - Rails 4 ActiveRecord,如果记录存在,则使用id,否则创建一个新记录

ruby-on-rails - 我如何猴子修补在 Bundler 中管理的 gem?

ruby-on-rails - 如何使用 Sidekiq 每 2 秒发送一次请求?