Skip to content

Repository files navigation

Brightcove Player SDK for iOS Samples

Sample applications for the Brightcove Native Player SDKs for iOS and tvOS, organized by capability.

Most samples consume the SDK through Swift Package Manager; the Flutter and ReactNative samples use CocoaPods. Each top-level folder is one capability area (or a host framework) and carries its own README; this page is the index.

Prerequisites

  1. Xcode 15.0+
  2. iOS 14.0+ or tvOS 15.0+ — some samples require a higher target (see the coverage matrix or the sample's README)
  3. CocoaPods 1.11+ — only for the Flutter and ReactNative samples

An Apple Developer Program account is required to run a sample on a physical device. Edit the sample's bundle identifier to make it unique to your organization before provisioning.

Getting started

Open the sample's .xcodeproj in Xcode and build. Swift Package Manager resolves the Brightcove SDK — and, where applicable, the Google IMA and Google Cast packages — automatically on the first build. There is no separate install step. First-build resolution needs network access; Xcode then caches the packages for offline use.

A few samples require an additional third-party SDK that is not distributed through Swift Package Manager (FreeWheel, INVIDI Pulse, or Adobe) and must be added manually; those samples document the extra steps in their own README.

CocoaPods (Flutter and ReactNative samples only)

Note: Brightcove's CocoaPods distribution is deprecated as of SDK 7.2.15 and stops receiving updates once the CocoaPods Trunk becomes read-only (expected late 2026). New integrations should use Swift Package Manager; these two samples remain on CocoaPods until their framework integrations migrate.

Run pod repo update to pull the latest Brightcove podspecs, then follow the sample's README (pod install, open the generated .xcworkspace). For SDK development you can switch between the published SDK and a local build with the BRIGHTCOVE_LOCAL_SDK environment variable, configured in Podfile.common.rb at the repository root:

pod install                              # published SDK (default)
BRIGHTCOVE_LOCAL_SDK=true pod install    # local SDK at ../videocloud_agave
BRIGHTCOVE_LOCAL_SDK=/path/to/sdk pod install   # local SDK at a custom path

Capability coverage

Each capability maps to one bucket folder. A capability available on both platforms ships an -iOS and a -tvOS variant; an iOS-only capability sits directly in its bucket.

Capability iOS / tvOS sample(s)
Basic playback Player/VideoCloudBasicPlayer (iOS), Player/AppleTV-tvOS (tvOS)
Video list / playlist Player/TableViewPlayer
Live / DVR Player/DVRLive
360° video Player/Video360
Audio-only playback Demonstrated within Player/VideoCloudBasicPlayer
Picture-in-Picture Demonstrated within Player/VideoCloudBasicPlayer and SwiftUI/SwiftUIPlayer
Thumbnail scrubbing Demonstrated within SwiftUI/CustomControls
Custom controls PlayerUI/CustomControls (UIKit), SwiftUI/CustomControls (SwiftUI)
Declarative UI SwiftUI/ (three apps)
Captions Captions/ (two apps)
DRM (FairPlay) DRM/BasicFairPlayPlayer
Offline playback Offline/OfflinePlayer
IMA ads IMA/ (iOS + tvOS), SwiftUI/SwiftUIPlayerIMA
DAI DAI/ (iOS + tvOS)
SSAI SSAI/ (iOS + tvOS, plus Server-Side Live + IMA)
FreeWheel FreeWheel/BasicFreeWheelPlayer
Pulse Pulse/ (iOS + tvOS)
Analytics (Omniture / Adobe) Analytics/BasicOmniturePlayer
Casting (Chromecast) Cast/ (two apps)
Vertical video Player/VerticalPlayer
Video preloading Player/VideoPreloading
Co-watching (SharePlay) SharePlay/SharePlayPlayer

The Player and PlayerUI buckets also carry UI samples that refine the above rather than add a new capability: Apple's native AVPlayerViewController controls (Player/NativeControls), runtime control-layout customization (PlayerUI/PlayerUICustomization), and view-strategy composition (PlayerUI/ViewStrategy).

Samples by area

  • PlaybackPlayer/: basic Video Cloud playback, playlists in a table view, live/DVR, 360°/VR, vertical video, preloading, native controls, and a tvOS player.
  • UI CustomizationPlayerUI/: fully custom controls, control-layout customization with VoiceOver/accessibility, and the view strategy.
  • AdvertisingIMA/ (Google Interactive Media Ads), DAI/ (Google Dynamic Ad Insertion), SSAI/ (Brightcove Server-Side Ad Insertion), FreeWheel/, and Pulse/ (INVIDI).
  • DRM & OfflineDRM/ (FairPlay) and Offline/ (downloading and playing HLS, including FairPlay-protected, with or without a network connection).
  • CastingCast/: sending video to a Chromecast with the Google Cast plugin, using the default receiver or Brightcove's CAF receiver.
  • CaptionsCaptions/: sidecar WebVTT subtitles and custom subtitle rendering.
  • AnalyticsAnalytics/: tracking with the Omniture (Adobe) plugin.
  • Declarative UISwiftUI/: hosting the Brightcove player in SwiftUI, with and without ads.
  • Host FrameworksFlutter/ and ReactNative/: embedding the native player in cross-platform apps (CocoaPods).
  • Co-watchingSharePlay/: synchronizing playback across a FaceTime call with Apple's GroupActivities. iOS only.

About Swift

The Swift sample apps are written in Swift 5.

Localization

The Brightcove iOS SDK is localized for English (en), Arabic (ar), German (de), Spanish (es), French (fr), Japanese (ja), Korean (ko), Chinese traditional (zh-hant), and Chinese simplified (zh-hans). These sample projects take advantage of that localization:

  • Player/VideoCloudBasicPlayer
  • Player/AppleTV-tvOS
  • IMA/BasicIMAPlayer-iOS
  • SSAI/BasicSSAIPlayer-iOS

Support

Use the Support Portal or contact your Account Manager. To hear about new SDK releases, subscribe to the Brightcove Native Player SDKs Google Group.

Releases

Packages

Used by

Contributors

Languages