Configuration and Functions
To find the detailed configuration and functions please refer to Bambuser Player API Reference
Button Configurations
Each button type has different modes of operation:
- none → will hide the button.
- event → emits an event to be captured by your event handler.
- auto → uses the SDK's default behavior.
Dismiss Button
| Property Name | Value | Description |
|---|---|---|
dismiss | none | Hides the button, no events emits |
dismiss | event | Emits an event that can be handled by your custom event handler. |
dismiss | minimize | Not applicable in the Mobile SDK. |
Product Button Configs
| Property Name | Value | Description |
|---|---|---|
product | none | Emits an event – implement your own product view logic. |
product | event | Emits an event that can be handled by your custom handler. |
product | auto | Default behavior – opens the product detail modal. |
Checkout Button Configs
| Property Name | Value | Description |
|---|---|---|
checkout | none | Emits an event – implement your own checkout flow. |
checkout | auto | Default behavior – opens the product detail modal. |
ActionCard Button Configs
| Property Name | Value | Description |
|---|---|---|
actionCard | none | Emits an event – handle navigation in your app. |
actionCard | auto | Emits an event – Default behavior – opens configured link in a webview. ⚠️ Recommended: Use none and handle redirection from your app. |
configuration: [
"buttons": [
"dismiss": "none", // "none" | "event" | "auto"
"product": "none", // "none" | "event" | "auto"
"checkout": "none", // "none" | "auto"
"actionCard": "none", // "none" | "auto"
]
]
UI Configurations
⚠️ All UI flags must be nested under a
"ui"dictionary — not at the top level ofconfiguration.
configuration: [
"ui": [
"hideEmojiOverlay": true,
"hideActionBar": false,
"hideShareButton": false,
"hideShareFromTimestampButton": false,
"hideVolumeButton": false,
"hideClosedCaptionsButton": false,
"hidePlaybackRateButton": false,
"hidePromotedShows": false,
]
]
| Property Name | Type | Description |
|---|---|---|
hideActionBar | boolean | Hides the full action bar. No button will be displayed. |
hideCartView | boolean | Hides the cart view in the modal, showing only product listing. |
hideChatOverlay | boolean | Hides the chat overlay. |
hideEmojiOverlay | boolean | Hides the emoji overlay on the player. |
hideProductList | boolean | Hides the product list. |
hideShareButton | boolean | Hides the share button. |
hideShareFromTimestampButton | boolean | Hides the share button with timestamp. |
hideShareView | boolean | Hides the share view. |
hideVolumeButton | boolean | Hides the volume control button. |
hideClosedCaptionsButton | boolean | Hides the closed captions / subtitles button. |
hidePlaybackRateButton | boolean | Hides the playback speed button. |
hidePromotedShows | boolean | Hides the promoted shows carousel inside the player. |
Tracking Configurations
| Property Name | Type | Description |
|---|---|---|
enableTrackingPoint | boolean | Sends all tracking information. You will receive notifications in the onNewEventReceived delegate method. |
Player Behavior Configurations
| Property Name | Type | Default | Description |
|---|---|---|---|
autoplay | boolean | true | Automatically starts playback when the player is presented. The player transitions through .loading then .playing states. When false, call playerView.play() manually to start playback. |
configuration: [
"autoplay": false // Player will not start automatically — call playerView.play() when ready
]
Video Scale Mode
videoScaleMode controls how the video is scaled inside the player view. It is a parameter on BambuserVideoConfiguration, not a key inside the configuration dictionary.
The video's aspect ratio is always preserved. The mode only decides what happens when the player view and the video have different aspect ratios.
The parameter is optional. Leave it out and the player uses .fit, so existing integrations keep their current behavior.
| Value | Default | Description |
|---|---|---|
.fit | ✅ | The whole video fits inside the player view, leaving empty space on the axis where the ratios differ. |
.fill | The video covers the player view and the overflowing axis is cropped. |
let config = BambuserVideoConfiguration(
type: .live(id: "your-show-id"),
events: ["*"],
configuration: ["autoplay": true],
videoScaleMode: .fill
)
No iPhone or iPad screen matches the 9:16 aspect ratio most live shows are recorded in, so a full-screen player using .fit always leaves empty space above and below the video. Use .fill when the video should cover the player view instead.
Full Screen
.fill covers the player view minus any safe area edge the player still respects. To let the video run under the status bar and home indicator, ignore those edges when creating the player view, and make sure your layout gives the player view the full screen.
let playerView = videoPlayer.createPlayerView(
videoConfiguration: config,
ignoredSafeAreaEdges: .init(.all) // or .init(.top), .init(.top, .bottom)
)
Full Configuration Example
let config = BambuserVideoConfiguration(
type: .live(id: "your-show-id"),
events: ["*"],
configuration: [
"buttons": [
"dismiss": "none", // Hides dismiss button, emits event
"product": "none", // Emits event on product tap
],
"ui": [
"hideEmojiOverlay": true,
"hidePlaybackRateButton": false,
"hidePromotedShows": false,
],
"autoplay": true,
"currency": "USD", // Required for product hydration
"locale": "en-US", // Required for product hydration
],
videoScaleMode: .fit // .fit | .fill — how the video is scaled in the player view
)