場景 =我有一個應用程序,允許用戶向其他用戶發送消息。我還有一個按鈕,可以顯示用戶擁有的新數量(未讀)消息。金額將顯示在底部標籤欄上的徽章圖標上。解析iOS SDK:如何高效地運行連續查詢
我一直在做什麼 =如果當前用戶發佈新消息,則每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]];
}
}];
}
問題 =這是非常繁重的「請求每秒」計數。解析允許30req /秒的免費增值,只用我的一個電話,我用這個查詢的一半。
問題 =有沒有人知道更有效的方法,我可以實現我在這裏做的事情?
哇,這也將會使你的用戶在手機上使用數據計劃時不高興。爲什麼不讓用戶通過使用「UIRefreshControl」來啓動他們的數據使用呢? – klcjr89
使用推送通知。 – Fosco
你可以用推送通知來解釋你的意思嗎? –