Reçus délivrés et vus
Product deprecation notice
Effective April 30th, 2026, Vonage In-App Messaging will no longer be available. Access for new users will be closed, and the service will be discontinued for all existing users.
If you have any questions regarding this product’s discontinuation, please contact your account manager or our support team.
Vue d'ensemble
Ce guide couvre les reçus délivrés et vus dans le cadre d'une conversation.
Avant de commencer, assurez-vous que ajouter le SDK à votre application et vous êtes en mesure de créer une conversation.
NOTE: A step-by-step tutorial to build a chat application is available here.
Ce guide s'appuie sur les concepts suivants :
Événements de conversation :
message:deliveredles événements qui se déclenchent sur une conversation, une fois que vous êtes membremessage:seenles événements qui se déclenchent sur une conversation, une fois que vous êtes membre
Définir l'état du message comme délivré
Il existe une méthode qui permet de définir un Message à l'état "livré". L'extrait de code suivant définit le statut d'un message comme étant remis dès qu'un événement de message se produit dans la conversation.
override fun onMessageEvent(messageEvent: NexmoMessageEvent) {
messageEvent.markAsDelivered(object: NexmoRequestListener<Void> {
override fun onError(error: NexmoApiError) {}
override fun onSuccess(result: Void?) {}
})
}
public void onMessageEvent(@NonNull NexmoMessageEvent messageEvent) {
messageEvent.markAsDelivered(new NexmoRequestListener() {
@Override
public void onError(@NonNull NexmoApiError error) { ... }
@Override
public void onSuccess(@Nullable Object result) { ... }
});
}
if conversation.myMember?.memberUuid != event.fromMemberId {
conversation.sendMarkDeliveredMessage(event.uuid, completionHandler: nil)
}
if (conversation.myMember.memberUuid != event.fromMemberId) {
[conversation sendMarkDeliveredMessage:event.uuid completionHandler:nil];
}
Message délivré Accusé de réception
Vous êtes déjà membre d'une conversation, message:delivered seront reçus lorsque Message sont livrés dans le contexte de la conversation en cours :
private val messageListener = object : NexmoMessageEventListener {
override fun onTypingEvent(typingEvent: NexmoTypingEvent) {}
override fun onAttachmentEvent(attachmentEvent: NexmoAttachmentEvent) {}
override fun onTextEvent(textEvent: NexmoTextEvent) {}
override fun onSeenReceipt(seenEvent: NexmoSeenEvent) {}
override fun onEventDeleted(deletedEvent: NexmoDeletedEvent) {}
override fun onDeliveredReceipt(deliveredEvent: NexmoDeliveredEvent) {
val userName = deliveredEvent.getEmbeddedInfo.user.name
Log.d("TAG", "Event ${deliveredEvent.initialEventId()} delivered to User $userName")
}
}
conversation.addMessageEventListener(messageListener)
private NexmoMessageEventListener messageListener = new NexmoMessageEventListener() {
@Override
public void onTextEvent(@NonNull NexmoTextEvent textEvent) {}
@Override
public void onAttachmentEvent(@NonNull NexmoAttachmentEvent attachmentEvent) {}
@Override
public void onEventDeleted(@NonNull NexmoDeletedEvent deletedEvent) {}
@Override
public void onSeenReceipt(@NonNull NexmoSeenEvent seenEvent) {}
@Override
public void onDeliveredReceipt(@NonNull NexmoDeliveredEvent deliveredEvent) {
String userName = deliveredEvent.getEmbeddedInfo().getUser().getName();
Log.d("TAG", "Event " + deliveredEvent.initialEventId() + "delivered to User " + userName);
}
@Override
public void onTypingEvent(@NonNull NexmoTypingEvent typingEvent) {}
};
conversation.addMessageEventListener(messageListener);
Add NXMConversationDelegate as an extension to a ViewController or similar, and implement conversation(_ conversation: NXMConversation, didReceive event: NXMMessageStatusEvent):
Note: The first method below is required when implementing NXMConversationDelegate:
extension ViewController: NXMConversationDelegate {
func conversation(_ conversation: NXMConversation, didReceive error: Error) {
NSLog("Conversation error: \(error.localizedDescription)")
}
func conversation(_ conversation: NXMConversation, didReceive event: NXMMessageStatusEvent) {
if event.status == .delivered {
NSLog("Received delivered event: \(event.referenceEventUuid)")
}
}
}
Have a ViewController, or similar, conform to NXMConversationDelegate and implement conversation:didReceiveMessageStatusEvent::
Note: The first method below is required when implementing NXMConversationDelegate:
- (void)conversation:(NXMConversation *)conversation didReceive:(NSError *)error {
NSLog(@"Conversation error: %@", error.localizedDescription);
}
- (void)conversation:(NXMConversation *)conversation didReceiveMessageStatusEvent:(NXMMessageStatusEvent *)event {
if (event.status == NXMMessageStatusTypeDelivered) {
NSLog(@"Received delivered event: %li", (long)event.referenceEventUuid);
}
}
Régler le statut du message sur Vu
Il existe une méthode qui permet de définir un Message à "vu". L'extrait de code suivant fait passer le statut d'un message à "vu" dès qu'un événement de message se produit dans la conversation.
override fun onMessageEvent(messageEvent: NexmoMessageEvent) {
messageEvent.markAsSeen(object: NexmoRequestListener<Void> {
override fun onError(error: NexmoApiError) {...}
override fun onSuccess(result: Void?) {...}
})
}
public void onMessageEvent(@NonNull NexmoMessageEvent messageEvent) {
messageEvent.markAsSeen(new NexmoRequestListener() {
@Override
public void onError(@NonNull NexmoApiError error) { ... }
@Override
public void onSuccess(@Nullable Object result) { ... }
});
}
if conversation.myMember?.memberUuid != event.fromMemberId {
conversation.sendMarkSeenMessage(event.uuid, completionHandler: nil)
}
if (conversation.myMember.memberUuid != event.fromMemberId) {
[conversation sendMarkSeenMessage:event.uuid completionHandler:nil];
}
Message vu Réception
Vous êtes déjà membre d'une conversation, message:seen seront reçus lorsque Message sont replacés dans le contexte de la conversation en cours :
private val messageListener = object : NexmoMessageEventListener {
override fun onTypingEvent(typingEvent: NexmoTypingEvent) {}
override fun onAttachmentEvent(attachmentEvent: NexmoAttachmentEvent) {}
override fun onTextEvent(textEvent: NexmoTextEvent) {}
override fun onSeenReceipt(seenEvent: NexmoSeenEvent) {
val userName = seenEvent.getEmbeddedInfo.user.name
Log.d("TAG", "Event ${seenEvent.initialEventId()} seen by User $userName")
}
override fun onEventDeleted(deletedEvent: NexmoDeletedEvent) {}
override fun onDeliveredReceipt(deliveredEvent: NexmoDeliveredEvent) {}
}
conversation.addMessageEventListener(messageListener)
private NexmoMessageEventListener messageListener = new NexmoMessageEventListener() {
@Override
public void onTextEvent(@NonNull NexmoTextEvent textEvent) {}
@Override
public void onAttachmentEvent(@NonNull NexmoAttachmentEvent attachmentEvent) {}
@Override
public void onEventDeleted(@NonNull NexmoDeletedEvent deletedEvent) {}
@Override
public void onSeenReceipt(@NonNull NexmoSeenEvent seenEvent) {
String userName = seenEvent.getEmbeddedInfo().getUser().getName();
Log.d("TAG", "Event " + seenEvent.initialEventId() + "seen by User " + userName);
}
@Override
public void onDeliveredReceipt(@NonNull NexmoDeliveredEvent deliveredEvent) {}
@Override
public void onTypingEvent(@NonNull NexmoTypingEvent typingEvent) {}
};
conversation.addMessageEventListener(messageListener);
Add NXMConversationDelegate as an extension to a ViewController or similar, and implement conversation(_ conversation: NXMConversation, didReceive event: NXMMessageStatusEvent):
Note: The first method below is required when implementing NXMConversationDelegate:
extension ViewController: NXMConversationDelegate {
func conversation(_ conversation: NXMConversation, didReceive error: Error) {
NSLog("Conversation error: \(error.localizedDescription)")
}
func conversation(_ conversation: NXMConversation, didReceive event: NXMMessageStatusEvent) {
if event.status == .seen {
NSLog("Received seen event: \(event.referenceEventUuid)")
}
}
}
Have a ViewController, or similar, conform to NXMConversationDelegate and implement conversation:didReceiveMessageStatusEvent::
Note: The first method below is required when implementing NXMConversationDelegate:
- (void)conversation:(NXMConversation *)conversation didReceive:(NSError *)error {
NSLog(@"Conversation error: %@", error.localizedDescription);
}
- (void)conversation:(NXMConversation *)conversation didReceiveMessageStatusEvent:(NXMMessageStatusEvent *)event {
if (event.status == NXMMessageStatusTypeSeen) {
NSLog(@"Received seen event: %li", (long)event.referenceEventUuid);
}
}