Group channel read receipt
Users can request read receipts for messages they send. After sending a request, the sender can see how many recipients have read the message.
Send a read receipt response
When a group message is received, respond with a read receipt by calling channel.sendReadReceiptResponse().
Code example
Dart
final channel = GroupChannel('<group-id>');
await channel.sendReadReceiptResponse(
['<message-uid-1>', '<message-uid-2>'],
(error) {
if (error?.isSuccess == true) {
print('Read receipt sent');
}
},
);
Listen for read receipt responses
Register a MessageHandler to receive read receipt events:
Dart
NCEngine.addMessageHandler('group-receipt-handler', MessageHandler(
onMessageReceiptResponse: (event) {
print('Read receipts received: ${event.responses}');
},
));
Get read receipt info
Query how many group members have read specific messages:
Dart
final channel = GroupChannel('<group-id>');
await channel.getMessageReadReceiptInfo(
['<message-uid-1>'],
(receiptInfoList, error) {
if (error == null) {
print('Read receipt info: $receiptInfoList');
}
},
);
Get read receipt users by page
Use BaseChannel.createMessagesReadReceiptUsersQuery() to page through users who have read or not read a specific message.
Dart
final query = BaseChannel.createMessagesReadReceiptUsersQuery(
MessagesReadReceiptUsersQueryParams(
channelIdentifier: ChannelIdentifier(
channelType: ChannelType.group,
channelId: '<group-id>',
),
messageId: '<message-uid-1>',
pageSize: 20,
isAscending: true,
status: MessageReadReceiptStatus.read,
),
);
await query.loadNextPage((result, error) {
if (error == null) {
print('Users: ${result?.data.length}');
print('Total matched: ${result?.totalCount}');
}
});
Get read receipt info by message identifiers
Dart
await BaseChannel.getMessageReadReceiptInfoByIdentifiers(
[
MessageIdentifier(
channelType: ChannelType.group,
channelId: '<group-id>',
messageId: '<message-uid-1>',
),
],
(receiptInfoList, error) {
if (error == null) {
print('Read receipt info: $receiptInfoList');
}
},
);
Get read receipt details for specific users
Dart
final channel = GroupChannel('<group-id>');
await channel.getMessagesReadReceiptByUsers(
'<message-uid-1>',
['user1', 'user2'],
(result, error) {
if (error == null) {
print('Total matched: ${result?.totalCount}');
print('Users: ${result?.users}');
}
},
);