Typisierungsindikatoren
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.
Übersicht
Dieser Leitfaden behandelt die Indikatoren für die Texteingabe innerhalb einer Konversation.
Bevor Sie beginnen, stellen Sie sicher, dass Sie das SDK zu Ihrer Anwendung hinzugefügt und Sie sind in der Lage ein Gespräch führen.
HINWEIS: Eine Schritt-für-Schritt-Anleitung zur Erstellung einer Chat-Anwendung ist verfügbar hier.
Dieser Leitfaden stützt sich auf die folgenden Concepts:
- Konversation Veranstaltungen -
text:typing:on(Tippen beginnen) undtext:typing:off(hören Sie auf zu tippen) Ereignisse, die bei einer Konversation ausgelöst werden, nachdem Sie ein Mitglied sind
Typisierungsindikatoren
Tippen-Anzeigen werden verwendet, um Gesprächsteilnehmer darüber zu informieren, ob ein Mitglied gerade eine Textnachricht tippt oder nicht.
Senden von Statusereignissen bei der Eingabe
Legen Sie den aktuellen Tippstatus (ein/aus) des Mitglieds fest, wenn es mit dem Tippen einer Textnachricht beginnt oder aufhört:
// call this when a member starts typing
conversation.startTyping();
// call this when a member stops typing
conversation.stopTyping();
// call this when a member starts typing
conversation.startTyping()
// call this when a member stops typing
conversation.stopTyping()
// call this when a member starts typing
conversation.startTyping();
// call this when a member stops typing
conversation.stopTyping();
conversation.sendStartTyping(completionHandler:)
conversation.sendStopTyping(completionHandler:)
// call this when a member starts typing
[conversation sendStartTyping:^(NSError * _Nullable error) completionHandler];
// call this when a member stops typing
[conversation sendStopTyping:^(NSError * _Nullable error) completionHandler];
Hören Sie sich den Zustand der anderen Mitglieder an
Im Folgenden wird auf die von den oben genannten Aufrufen erzeugten Tippereignisse (ein/aus) geachtet:
conversation.on('text:typing:on', (event) => {
console.log(event.user.name + " is typing");
});
conversation.on("text:typing:off", (event) => {
console.log(event.user.name + " stopped typing");
});
// Option 1: Listen for typing events using NexmoTypingEventListener
conversation.addTypingEventListener(typingEventListener)
// or
// Option 2: Listen for typing events using NexmoMessageEventListener
conversation.addMessageEventListener(messageListener)
private val typingEventListener = NexmoTypingEventListener { typingEvent ->
val typingState = if(typingEvent?.state == NexmoTypingState.ON) "typing" else "not typing"
Timber.d("User ${typingEvent.fromMemberId} is $typingState")
}
private val messageListener = object : NexmoMessageEventListener {
override fun onTypingEvent(typingEvent: NexmoTypingEvent) {
val typingState = if(typingEvent.state == NexmoTypingState.ON) "typing" else "not typing"
Log.d("TAG", "User ${typingEvent.fromMemberId} is $typingState")
}
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) {}
}
// Option 1: Listen for typing events using NexmoTypingEventListener
conversation.addTypingEventListener(typingEventListener);
// or
// Option 2: Listen for typing events using NexmoMessageEventListener
conversation.addMessageEventListener(messageListener);
private NexmoTypingEventListener typingEventListener = new NexmoTypingEventListener() {
@Override
public void onTyping(NexmoTypingEvent typingEvent) {
String typingState;
if (typingEvent.getState() == NexmoTypingState.ON) {
typingState = "typing";
} else {
typingState = "not typing";
}
Timber.d("User " + typingEvent.getFromMemberId() + " is " + typingState);
}
};
private NexmoMessageEventListener messageListener = new NexmoMessageEventListener() {
@Override
public void onTypingEvent(@NonNull NexmoTypingEvent typingEvent) {
String typingState;
if (typingEvent.getState() == NexmoTypingState.ON) {
typingState = "typing";
} else {
typingState = "not typing";
}
Log.d("TAG", "User " + typingEvent.getFromMemberId() + " is " + typingState);
}
@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) {}
};
hinzufügen NXMConversationDelegate als Erweiterung zu einer ViewController oder ähnlich, und implementieren conversation(_ conversation: NXMConversation, didReceive event: NXMTextTypingEvent):
Hinweis: Die erste Methode unten ist erforderlich, wenn die NXMConversationDelegate:
extension ViewController: NXMConversationDelegate {
func conversation(_ conversation: NXMConversation, didReceive error: Error) {
NSLog("Conversation error: \(error.localizedDescription)")
}
func conversation(_ conversation: NXMConversation, didReceive event: NXMTextTypingEvent) {
if event.status == .on {
NSLog("Started typing")
} else {
NSLog("Typing ended")
}
}
}
Haben Sie eine ViewControlleroder ähnlich, entsprechen NXMConversationDelegate und umsetzen conversation:didReceiveTypingEvent::
Hinweis: Die erste Methode unten ist erforderlich, wenn die NXMConversationDelegate:
- (void)conversation:(NXMConversation *)conversation didReceive:(NSError *)error {
NSLog(@"Conversation error: %@", error.localizedDescription);
}
- (void)conversation:(NXMConversation *)conversation didReceiveTypingEvent:(NXMTextTypingEvent *)event {
if (event.status == NXMTextTypingEventStatusOn) {
NSLog(@"Started typing");
} else {
NSLog(@"Typing ended");
}
}