Skip to main content

Sticker Messages

The content input box in the Global IM UIKit chat UI includes a sticker button to expand the sticker panel.

(width=250)

Clicking the button displays the sticker panel, allowing app users to send sticker messages.

(width=250)

Important

By default, Global IM UIKit only provides the sticker display panel. The sticker resources must be supplied by the app to Global IM UIKit.

Adding Sticker Packs

Apps can add custom stickers to the chat UI sticker panel in the following two ways.

Adding Sticker Packs via Local Path

  1. Add a sticker pack JSON file via a local path. The format is as follows:

    {
    "stickerPackage": {
    "packageId": "c60plBGwk2686yv4vmv4H9",
    "icon": "base64Str"
    },
    "stickers": [
    {
    "stickerId": "d1PN1xTZ47p9nfMNWfGpyH",
    "height": 240,
    "width": 240,
    "icon": "base64Str"
    },
    {
    "stickerId": "euV-LiASA9Nax4eeRgVCbW",
    "height": 240,
    "width": 240,
    "icon": "base64Str"
    }
    ]
    }
    tip

    The icon is a base64 string of the thumbnail.

  2. Override the onBindInputPanelComponent method in the ChatFragment to add sticker paths using the addStickerPackagesWithJsonPaths(@NonNull List<String> paths) method of InputPanelComponent.

    public class CustomChatFragment extends ChatFragment {
    @Override
    protected void onBindInputPanelComponent(@NonNull ChatModule module, @NonNull ChatViewModel viewModel) {
    super.onBindInputPanelComponent(module, viewModel);

    // Option 1
    module.getInputPanelComponent().addStickerPackagesWithJsonPaths(new ArrayList<>());
    }
    }

Loading Stickers via StickerDataProvider

Set up the sticker provider.

public class CustomChatFragment extends ChatFragment {
@Override
protected void onBindInputPanelComponent(@NonNull ChatModule module, @NonNull ChatViewModel viewModel) {
super.onBindInputPanelComponent(module, viewModel);
// Option 2
module.getInputPanelComponent().addStickerDataProvider(new StickerDataProvider() {
@NonNull
@Override
public List<StickerPackage> getStickerPackage() {
// Return sticker packs
return new ArrayList<StickerPackage>();
}
});
}
}

Displaying Sticker Messages

By default, stickers are displayed as thumbnails. To display the full-size sticker, you can set up a sticker image provider:

public class CustomChatFragment extends ChatFragment {
@Override
protected void onBindMessageListComponent(@NonNull ChatModule module, @NonNull ChatViewModel viewModel) {
super.onBindMessageListComponent(module, viewModel);
// Display the actual sticker
ConfigCenter.getChatConfig().setStickerViewDataProvider(new StickerViewDataProvider() {
@NonNull
@Override
public String getDisplayStickerLocalUrl(@NonNull String packageId, @NonNull String stickerId) {
// Return the full-size sticker based on packageId and stickerId
return null;
}
});
}
}

Hiding the Sticker Button

The sticker button is distinguished by its class, as shown below:

FunctionClass
Sticker ButtonKeyboardInputAction

Example code to hide the sticker button:

public class CustomInputPanelComponent extends InputPanelComponent{

@NonNull
@Override
protected List<InputAction> beforeCreateRightInputActionView(@NonNull List<InputAction> rightInputActions) {
// Remove the sticker button
Iterator<InputAction> iterator = rightInputActions.iterator();
while (iterator.hasNext()) {
InputAction inputAction = iterator.next();
if (inputAction instanceof KeyboardInputAction) {
iterator.remove();
}
}
return super.beforeCreateRightInputActionView(rightInputActions);
}
}