Edit in GitHubLog an issue

Brand Concierge API reference (iOS)

wrap

Wraps a SwiftUI view with the Brand Concierge overlay and optional floating button. Call this once at the app's root to enable the chat overlay across the entire view hierarchy.

Syntax

Copied to your clipboard
static func wrap<Content: View>(
_ content: Content,
surfaces: [String] = [],
title: String? = nil,
subtitle: String? = nil,
hideButton: Bool = false,
handleLink: ((URL) -> Bool)? = nil
) -> some View

Parameters

  • content required - The SwiftUI content to wrap.
  • surfaces - Surface identifiers sent to the Brand Concierge server. Defaults to [].
  • title - Header title text shown at the top of the chat.
  • subtitle - Header subtitle text shown at the top of the chat.
  • hideButton - When true, hides the built-in floating button. Defaults to false.
  • handleLink - Optional callback for link routing. Return true to claim the URL; return false to let the SDK handle it.

Example

Copied to your clipboard
@main
struct MyApp: App {
var body: some Scene {
WindowGroup {
Concierge.wrap(
ContentView(),
surfaces: ["web://example.com/your-surface.html"]
)
}
}
}

show

Opens the chat overlay for a new chat session. Requires the view hierarchy to have been wrapped with Concierge.wrap(...) first.

Syntax

Copied to your clipboard
static func show(
surfaces: [String],
title: String? = nil,
subtitle: String? = nil,
speechCapturer: SpeechCapturing? = nil,
textSpeaker: TextSpeaking? = nil,
handleLink: ((URL) -> Bool)? = nil
)

Parameters

  • surfaces required - Surface identifiers sent to the Brand Concierge server.
  • title - Header title text shown at the top of the chat for this session.
  • subtitle - Header subtitle text shown at the top of the chat for this session.
  • speechCapturer - Custom SpeechCapturing implementation. If nil, a default is created internally.
  • textSpeaker - Custom TextSpeaking implementation. If nil, text-to-speech is disabled.
  • handleLink - Optional callback for link routing. Return true to claim the URL; return false to let the SDK handle it.

Example

Copied to your clipboard
Button("Chat") {
Concierge.show(
surfaces: ["web://example.com/your-surface.html"],
title: "Concierge",
subtitle: "Powered by Adobe"
)
}

hide

Dismisses the currently presented chat overlay.

Syntax

Copied to your clipboard
static func hide()

Example

Copied to your clipboard
Concierge.hide()

present

Embeds the chat UI as a child view controller into an existing UIViewController. Use this for UIKit-based apps.

Syntax

Copied to your clipboard
static func present(
on presentingViewController: UIViewController,
surfaces: [String],
title: String? = nil,
subtitle: String? = nil,
speechCapturer: SpeechCapturing? = nil,
textSpeaker: TextSpeaking? = nil,
handleLink: ((URL) -> Bool)? = nil
)

Parameters

  • on presentingViewController required - The UIViewController that will host the chat UI, filling its view.
  • surfaces required - Surface identifiers sent to the Brand Concierge server.
  • title - Header title text shown at the top of the chat for this session.
  • subtitle - Header subtitle text shown at the top of the chat for this session.
  • speechCapturer - Custom SpeechCapturing implementation. If nil, a default is created internally.
  • textSpeaker - Custom TextSpeaking implementation. If nil, text-to-speech is disabled.
  • handleLink - Optional callback for link routing. Return true to claim the URL; return false to let the SDK handle it.

Example

Copied to your clipboard
import AEPBrandConcierge
final class MyViewController: UIViewController {
@objc private func openChat() {
Concierge.present(
on: self,
surfaces: ["web://example.com/your-surface.html"],
title: "Concierge",
subtitle: "Powered by Adobe"
)
}
}

ConciergeThemeLoader.load

Loads a ConciergeTheme from a JSON file in a bundle. Returns nil if the file cannot be found or parsed.

Syntax

Copied to your clipboard
public static func load(from filename: String, in bundle: Bundle = .main) -> ConciergeTheme?

Parameters

  • filename required - The name of the JSON theme file (without the .json extension).
  • bundle - The bundle to search for the file. Defaults to .main.

Example

Copied to your clipboard
let theme = ConciergeThemeLoader.load(from: "my-theme", in: .main)
?? ConciergeThemeLoader.default()

ConciergeThemeLoader.default

Returns the built-in default ConciergeTheme.

Syntax

Copied to your clipboard
public static func `default`() -> ConciergeTheme

Example

Copied to your clipboard
let theme = ConciergeThemeLoader.default()
  • Privacy
  • Terms of Use
  • Do not sell or share my personal information
  • AdChoices
Copyright © 2026 Adobe. All rights reserved.