Partager via


Personnaliser les boutons

Pour implémenter des actions personnalisées ou modifier la disposition actuelle des boutons, vous pouvez interagir avec l’API de la bibliothèque d’interface utilisateur native. Cette API implique la définition de configurations de bouton personnalisées, en spécifiant les actions et en gérant les actions actuelles de la barre de boutons. L’API fournit des méthodes pour ajouter des actions personnalisées et supprimer des boutons existants, qui sont tous accessibles via des appels de fonction simples.

Cette fonctionnalité offre un haut degré de personnalisation et veille à ce que l’interface utilisateur reste cohérent et uniforme avec la conception générale de l’application.

Prérequis

Paramétrage de la fonctionnalité

Supprimer des boutons

CallCompositeCallScreenControlBarOptions, offre la flexibilité nécessaire pour personnaliser des boutons en supprimant des boutons spécifiques, tels que les contrôles audio, de microphone et de caméra. Cette API vous permet de personnaliser l’interface utilisateur en fonction de ses exigences d’application spécifiques et de la conception de l’expérience utilisateur. Définissez simplement visible ou enabled sur false pour CallCompositeButtonViewData afin de masquer ou désactiver le bouton.

Capture d'écran montrant l'expérience de la suppression des boutons dans la bibliothèque d'interface utilisateur.

val controlBarOptions = CallCompositeCallScreenControlBarOptions()

val cameraButton = CallCompositeButtonViewData()
    .setVisible(false)

controlBarOptions.setCameraButton(cameraButton)

val callScreenOptions = CallCompositeCallScreenOptions()
    .setControlBarOptions(controlBarOptions)

val localOptions = CallCompositeLocalOptions()
    .setCallScreenOptions(callScreenOptions)

val callComposite = CallCompositeBuilder()
    .build()

callComposite.launch(context, locator, localOptions)

Le bouton peut être mis à jour après le lancement de l’appel composite.

cameraButton.setVisible(true)

Ajouter des actions personnalisées

Call composite utilise des icônes Fluent UI. Vous pouvez télécharger les icônes directement à partir du référentiel GitHub Fluent UI et les incorporer dans votre projet, le cas échéant. Cette approche assure une cohérence visuelle sur tous les éléments de l’interface utilisateur, ce qui améliorer l’expérience utilisateur globale.

Capture d'écran montrant l'expérience lorsque vous ajoutez un nouveau bouton dans la bibliothèque de l'interface utilisateur.


// Custom header button
val headerCustomButton =
    CallCompositeCustomButtonViewData(
        "headerCustomButton",
        R.drawable.my_header_button_icon,
        "My header button",
        fun(it: CallCompositeCustomButtonClickEvent) {
            // process my button onClick
        }
    )

val headerOptions = CallCompositeCallScreenHeaderViewData()
    .setCustomButtons(listOf(headerCustomButton))

// Custom control bar button
val controlBarOptions = CallCompositeCallScreenControlBarOptions()

controlBarOptions.setCustomButtons(
    listOf(
        CallCompositeCustomButtonViewData(
            "customButtonId",
            R.drawable.my_button_image,
            "My button",
            fun(it: CallCompositeCustomButtonClickEvent) {
                // Process my button onClick
            },
        )
    )
)

val callScreenOptions = CallCompositeCallScreenOptions()
    .setHeaderViewData(headerOptions)
    .setControlBarOptions(controlBarOptions)

val localOptions = CallCompositeLocalOptions()
    .setCallScreenOptions(callScreenOptions)

val callComposite = CallCompositeBuilder()
    .build()

callComposite.launch(context, locator, localOptions)

Comme pour les boutons fournis par Call composite, les boutons personnalisés peuvent être mis à jour après le lancement.

customButton.setVisible(true)

Supprimer ou désactiver des boutons

CallScreenControlBarOptions, offre la flexibilité nécessaire pour personnaliser des boutons en supprimant des boutons spécifiques, tels que les contrôles audio, de microphone et de caméra. Cette API vous permet de personnaliser l’interface utilisateur en fonction de ses exigences d’application spécifiques et de la conception de l’expérience utilisateur. Définissez simplement visible ou enabled sur false pour ButtonViewData afin de masquer ou désactiver le bouton.

Capture d'écran montrant l'expérience de la suppression des boutons dans la bibliothèque d'interface utilisateur.

let cameraButton = ButtonViewData(visible: false)

let callScreenControlBarOptions = CallScreenControlBarOptions(
    cameraButton: cameraButton
)

let callScreenOptions = CallScreenOptions(controlBarOptions: callScreenControlBarOptions)
let localOptions = LocalOptions(callScreenOptions: callScreenOptions)

let callComposite = CallComposite(credential: credential)
callComposite.launch(locator: .roomCall(roomId: "..."), localOptions: localOptions)

Le bouton peut être mis à jour après le lancement de l’appel composite.

cameraButton.visible = true

Ajouter des actions personnalisées

Call composite utilise des icônes Fluent UI. Vous pouvez télécharger les icônes directement à partir du référentiel GitHub Fluent UI et les incorporer dans votre projet, le cas échéant. Cette approche assure une cohérence visuelle sur tous les éléments de l’interface utilisateur, ce qui améliorer l’expérience utilisateur globale.

Capture d'écran montrant l'expérience lorsque vous ajoutez un nouveau bouton dans la bibliothèque de l'interface utilisateur.

// Custom header button
let headerCustomButton = CustomButtonViewData(image: UIImage(named: "...")!,
                                              title: "My header button") {_ in
    // Process my button onClick
}
let callScreenHeaderViewData = CallScreenHeaderViewData(
    customButtons: [headerCustomButton]
)

// Custom control bar button
let customButton = CustomButtonViewData(image: UIImage(named: "...")!,
                                        title: "My button") {_ in
    // Process my button onClick
}

let callScreenControlBarOptions = CallScreenControlBarOptions(
    customButtons: [customButton]
)

let callScreenOptions = CallScreenOptions(
    controlBarOptions: callScreenControlBarOptions, headerViewData: callScreenHeaderViewData)

let localOptions = LocalOptions(callScreenOptions: callScreenOptions)

let callComposite = CallComposite(credential: credential)
callComposite.launch(locator: .roomCall(roomId: "..."), localOptions: localOptions)

Comme pour les boutons fournis par Call composite, les boutons personnalisés peuvent être mis à jour après le lancement.

customButton.enabled = true

Étapes suivantes