6 メッセージの未読既読管理
メッセージの未読数の取得や、特定のメッセージを強制的に既読に変更する実装例をご説明します。
6.1 メッセージの未読数を取得し、タブにバッジを表示したい
メッセージの未読数を取得する場合、PopinfoReceiver クラスのgetUnreadMessagesCounts: メソッドを利用します。
このメソッドの引数はカテゴリ名です。
カテゴリ配信をしていない場合は空文字を指定します。
// バッジを付けたい UITabBarItem を指定する
UITabBarItem *tabBarItem = [self.tabBarController.tabBar.items objectAtIndex:1];
// 未読数を取得する
int number = [[PopinfoReceiver sharedReceiver] getUnreadMessagesCounts:@""];
// 未読がある場合はタブにバッジを付ける
if (number) {
tabBarItem.badgeValue = [NSString stringWithFormat:@"%d", number];
} else {
tabBarItem.badgeValue = nil;
}
// バッジを付けたい UITabBarItem を指定する
let tabBarItem = self.tabBarController?.tabBar.items?[1]
// 未読数を取得する
let number = PopinfoReceiver.shared.getUnreadMessagesCounts("")
// 未読がある場合はタブにバッジを付ける
if number > 0 {
tabBarItem?.badgeValue = "\(number)"
} else {
tabBarItem?.badgeValue = nil
}
6.2 特定のメッセージを強制的に既読に変更したい
特定のメッセージを強制的に既読に変更する場合、PopinfoReceiver クラスのchangeMessageToRead: メソッドを利用します。
このメソッドの引数は、対象とするメッセージ ID です。
ここでは、プッシュ通知到達時に、通知されたメッセージを強制的に既読に変更する例をご紹介します。
以下のように、プッシュ通知が到達した際にコールされる PopinfoReceiver デリゲートメソッド opinfoReceiver: didReceivePopinfoMessage: popup: payload: 内に記述します。
- (void)popinfoReceiver:(PopinfoReceiver *)popinfoReceiver didReceivePopinfoMessage:(NSInteger)messageId popup:(NSString *)popup payload:(NSDictionary *)payload
{
[[PopinfoReceiver sharedReceiver] changeMessageToRead:messageId];
}
func popinfoReceiver(_ popinfoReceiver: PopinfoReceiver, didReceivePopinfoMessage messageId: Int, popup: String, payload: [AnyHashable : Any]) {
PopinfoReceiver.shared.changeMessage(toRead: messageId)
}