# Send emoji reactions

<!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->

> The code on this page works with either the **default UI** or the **custom UI**.

The code on this page works with either the default UI or the custom UI.

Send and receive emoji reactions and feedback with the SDK through the `ZoomSDKReactionController`.

```swift
if let reactionCtrl = ZoomSDK.shared().getMeetingService()?.getReactionController() {

}
```

```objectivec
ZoomSDKReactionController *reactionCtrl = [[[ZoomSDK sharedSDK] getMeetingService] ZoomSDKReactionController *reactionCtrl = [[[ZoomSDK sharedSDK] getMeetingService] getReactionController];
if (reactionCtrl) {

}
```

To send reactions, first check that reactions are supported in the current meeting. Then, use `sendEmojiReaction`.

```swift
if reactionCtrl.isEmojiReactionEnabled() {
    reactionCtrl.send(ZoomSDKEmojiReactionType_Clap)
}
```

```objectivec
if (reactionCtrl.isEmojiReactionEnabled) {
    [reactionCtrl sendEmojiReaction: ZoomSDKEmojiReactionType_Clap];
}
```

## Supported emojis and feedback

The `ZoomSDKEmojiReactionType` enum currently supports only these unicode emojis.

-   `ZoomSDKEmojiReactionType_Clap`
-   `ZoomSDKEmojiReactionType_Thumbsup`
-   `ZoomSDKEmojiReactionType_Heart`
-   `ZoomSDKEmojiReactionType_Joy`
-   `ZoomSDKEmojiReactionType_Openmouth`
-   `ZoomSDKEmojiReactionType_Tada`

Emoji feedback is also supported, but is done through a separate method.

```swift
reactionCtrl.send(ZoomSDKEmojiFeedbackType_Yes)
```

```objectivec
[reactionCtrl sendEmojiFeedback:ZoomSDKEmojiFeedbackType_Yes];
```

These feedback types are supported.

-   `ZoomSDKEmojiFeedbackType_Yes`
-   `ZoomSDKEmojiFeedbackType_No`
-   `ZoomSDKEmojiFeedbackType_SpeedUp`
-   `ZoomSDKEmojiFeedbackType_SlowDown`
-   `ZoomSDKEmojiFeedbackType_Away`

## Get reaction and feedback updates

To get updates related to emoji reaction and feedback, implement the `ZoomSDKReactionControllerDelegate` protocol and set the delegate in `ZoomSDKReactionController`.

```swift
if let reactionCtrl = ZoomSDK.shared().getMeetingService()?.getReactionController() {
    reactionCtrl.delegate = self
}

extension ViewController: ZoomSDKReactionControllerDelegate {
    func onEmojiReactionReceived(_ userid: UInt32, reactionType type: ZoomSDKEmojiReactionType, reactionSkinTone skinTone: ZoomSDKEmojiReactionSkinTone) {

    }

    func onEmojiReactionReceived(inWebinar type: ZoomSDKEmojiReactionType) {

    }

    func onEmojiFeedbackReceived(_ userid: UInt32, emojiFeedbackType type: ZoomSDKEmojiFeedbackType) {

    }

    func onEmojiFeedbackCanceled(_ userid: UInt32) {

    }
}
```

```objectivec
// In your .h file
@interface ZMSDKTestWindow : NSWindowController <ZoomSDKReactionControllerDelegate> {

}

// In your .m file
ZoomSDKReactionController *reactionCtrl = [[[ZoomSDK sharedSDK] getMeetingService] getReactionController];
if (!reactionCtrl) {
    reactionCtrl.delegate = self;
    }
}

- (void) onEmojiReactionReceivedInWebinar:(ZoomSDKEmojiReactionType)type {

}

- (void) onEmojiReactionReceived:(unsigned int)userid reactionType:(ZoomSDKEmojiReactionType)type reactionSkinTone:(ZoomSDKEmojiReactionSkinTone)skinTone {

}

- (void) onEmojiFeedbackReceived:(unsigned int)userid emojiFeedbackType:(ZoomSDKEmojiFeedbackType)type {

}

- (void) onEmojiFeedbackCanceled:(unsigned int)userid {

}
```

These callbacks are triggered when any participant sends a reaction or feedback in a meeting with the user ID of the participant who sent or canceled the reaction or feedback. Additionally, there is a dedicated callback for when reactions are sent by webinar attendees anonymously.

---
