场景= 我有一个允许用户向其他用户发送消息的应用程序。我还有一个按钮,可以显示用户拥有的新(未读)消息的数量。金额将显示在底部标签栏上的徽章图标上。
我一直在做什么= 如果为当前用户发布了新消息,则每 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 的免费增值服务,并且仅在我的一部手机上,我在此查询中使用了一半。
问题=有谁知道我可以在这里做的更有效的方法吗?