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.
- Xcode 15.0+
- iOS 14.0+ or tvOS 15.0+ — some samples require a higher target (see the coverage matrix or the sample's README)
- CocoaPods 1.11+ — only for the
FlutterandReactNativesamples
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.
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.
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 pathEach 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).
- Playback —
Player/: basic Video Cloud playback, playlists in a table view, live/DVR, 360°/VR, vertical video, preloading, native controls, and a tvOS player. - UI Customization —
PlayerUI/: fully custom controls, control-layout customization with VoiceOver/accessibility, and the view strategy. - Advertising —
IMA/(Google Interactive Media Ads),DAI/(Google Dynamic Ad Insertion),SSAI/(Brightcove Server-Side Ad Insertion),FreeWheel/, andPulse/(INVIDI). - DRM & Offline —
DRM/(FairPlay) andOffline/(downloading and playing HLS, including FairPlay-protected, with or without a network connection). - Casting —
Cast/: sending video to a Chromecast with the Google Cast plugin, using the default receiver or Brightcove's CAF receiver. - Captions —
Captions/: sidecar WebVTT subtitles and custom subtitle rendering. - Analytics —
Analytics/: tracking with the Omniture (Adobe) plugin. - Declarative UI —
SwiftUI/: hosting the Brightcove player in SwiftUI, with and without ads. - Host Frameworks —
Flutter/andReactNative/: embedding the native player in cross-platform apps (CocoaPods). - Co-watching —
SharePlay/: synchronizing playback across a FaceTime call with Apple's GroupActivities. iOS only.
The Swift sample apps are written in Swift 5.
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/VideoCloudBasicPlayerPlayer/AppleTV-tvOSIMA/BasicIMAPlayer-iOSSSAI/BasicSSAIPlayer-iOS
Use the Support Portal or contact your Account Manager. To hear about new SDK releases, subscribe to the Brightcove Native Player SDKs Google Group.