【问题标题】:Parse iOS SDK: How to run continuous query efficientlyParse iOS SDK:如何高效运行连续查询
【发布时间】:2014-07-26 00:49:50
【问题描述】:

场景 = 我有一个允许用户向其他用户发送消息的应用。我还有一个按钮,可以显示用户拥有的新(未读)消息的数量。金额将显示在底部标签栏上的徽章图标上。

我一直在做什么 = 每 5 秒查询一次是否为当前用户发布了新消息。

- (void)queryForMessagesBadgeNumber:(NSTimer *)timer
{
    NSString *currentUserID = [PFUser currentUser][@"userID"];

    PFQuery *badgeQuery = [PFQuery queryWithClassName:@"Message"];
    [badgeQuery whereKey:@"receiverID" equalTo:currentUserID];
    [badgeQuery whereKey:@"wasRead" equalTo:[NSNumber numberWithBool:NO]];
    [badgeQuery countObjectsInBackgroundWithBlock:^(int number, NSError *error)
    {
        if (number == 0)
        {
             NSLog(@"No unread messages");
        }
        else
        {
            [[self.tabBar.items objectAtIndex:2] setBadgeValue:[NSString stringWithFormat:@"%d",number]];
        }
    }];
}

问题 = 这对“每秒请求数”计数非常不利。 Parse 允许 30req/sec 的免费增值服务,并且仅在我的一部手机上,我在此查询中使用了一半。

问题 = 有谁知道我可以在这里做的更有效的方法吗?

【问题讨论】:

  • 哇,当您的用户用完手机上的数据计划时,这也会让他们不开心。为什么不让用户通过使用UIRefreshControl 来开始使用他们的数据呢?
  • 使用推送通知。
  • 您能解释一下使用推送通知是什么意思吗?
  • Google 推送通知,了解它们,使用 Parse 实现它们。收到通知时,您可以刷新数据源。看看Parse Chat 看看代码,我想你可以研究一下它是如何更新数据的。

标签: ios objective-c parse-platform parse-framework


【解决方案1】:

使用推送通知。

当用户向另一个用户发送消息时,您可以让应用程序向接收者发送推送通知。您可以选择是否显示横幅,或者只是更新徽章。

指南位于此处 - Parse Push guide

解析推送对于一定数量的通知也是免费的,但比每 x 秒轮询一次数据库要好得多

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-07
  • 1970-01-01
  • 2015-05-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多