【发布时间】: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