ブライトコーブは、次の iOS バージョンの最新パブリック リリースで最新の iOS SDK のアクティブなサポートを提供します。
ブライトコーブは、次の iOS バージョンのパッシブ サポートを提供します。
Core SDK は、アラビア語 (ar)、英語 (en)、フランス語 (fr)、ドイツ語 (de)、日本語 (ja)、韓国語 (ko)、スペイン語 (es)、簡体字中国語 (zh-Hans)、繁体字中国語にローカライズされています。中国語 (zh-Hant)。ローカライズのメリットを得るには、アプリも同じ言語とロケールにローカライズする必要があります。詳細については、「カスタム ローカリゼーション」セクションを参照してください。
すべての SDK コンポーネント (コア フレームワークとプラグイン フレームワーク) は、同じバージョン番号でリリースされます。単一のコンポーネントをアップグレードする場合は、すべてのコンポーネントを同じバージョンにアップグレードします。
Apple Silicon M1 上の Xcode 12 およびユニバーサル フレームワーク (.framework) を使用するプロジェクトの場合、arm64 シミュレーター用のプロジェクトをビルドするとビルド エラーが返されます。
*ld: building for iOS Simulator, but linking in dylib built for iOS, file for architecture arm64*
arm64 シミュレーター用にビルドするには、アプリケーション ターゲットの [ビルド設定] タブにAny iOS Simulator SDK
の [除外アーキテクチャ] ビルド設定にarm64
が追加されていることを確認してください。
Brightcove Player SDK のリリース 6.10.0 では、XCFrameworks をサポートするためのコアと各プラグインのサブスペックが追加されています。各サブスペックのデフォルト値は/XCFramework
です。
ポッドスペック名 | サブスペック名 |
---|---|
ブライトコーブ プレーヤー コア | Brightcove-Player-コア/フレームワーク Brightcove-Player-Core/XCFramework |
Brightcove-Player-DAI | Brightcove-Player-DAI/フレームワーク Brightcove-Player-DAI/XCFramework |
ブライトコーブ プレーヤー フリーホイール | Brightcove-Player-FreeWheel/フレームワーク Brightcove-Player-FreeWheel/XCFramework |
Brightcove-Player-GoogleCast | Brightcove-Player-GoogleCast/フレームワーク Brightcove-Player-GoogleCast/XCFramework |
ブライトコーブ プレーヤー-IMA | Brightcove-Player-IMA/フレームワーク Brightcove-Player-IMA/XCFramework |
Brightcove-Player-Omniture | Brightcove-Player-Omniture/フレームワーク Brightcove-Player-Omniture/XCFramework |
ブライトコーブ プレーヤー パルス | Brightcove-Player-Pulse/フレームワーク Brightcove-Player-Pulse/XCFramework |
ブライトコーブ プレーヤー SSAI | Brightcove-Player-SSAI/フレームワーク Brightcove-Player-SSAI/XCFramework |
Brightcove-Player-OpenMeasurement | - |
Brightcove Player SDK のリリース 6.12.0 では、 Brightcove-Player-FreeWheel
およびBrightcove-Player-Omniture
ポッドスペックが更新され、 BrightcovePlayerSDK
の動的バージョンがインストールされます。
ポッドスペック名 | フレームワークの種類 | 依存 |
---|---|---|
ブライトコーブ プレーヤー コア | 動的 | - |
Brightcove-Player-DAI (6.12.7 以降で利用可能) | 動的 | ブライトコーブ プレーヤー コア |
ブライトコーブ プレーヤー フリーホイール | 動的 | iOS 用 Brightcove-Player-Core、 tvOS 用 Brightcove-Player-Core |
Brightcove-Player-GoogleCast | 静的 | ブライトコーブ プレーヤー コア |
ブライトコーブ プレーヤー-IMA | 動的 | ブライトコーブ プレーヤー コア |
Brightcove-Player-Omniture | 動的 | ブライトコーブ プレーヤー コア |
ブライトコーブ プレーヤー パルス | 動的 | ブライトコーブ プレーヤー コア |
ブライトコーブ プレーヤー SSAI | 動的 | Brightcove プレーヤー コア、 Brightcove-Player-OpenMeasurement (オープン測定のみ) |
Brightcove-Player-OpenMeasurement (6.10.0 以降で利用可能) | 動的 | - |
FairPlay で保護されたビデオのサポートは、コアのBrightcovePlayerSDKフレームワークに統合されています。 Brightcove Native Player SDK での FairPlay の使用の詳細については、FairPlay ガイドを参照してください。
サイドカー字幕のサポートは、コアのBrightcovePlayerSDKフレームワークに統合されています。 Brightcove Native Player SDK でのサイドカー字幕の使用の詳細については、サイドカー字幕ガイドを参照してください。
リリース 6.0.0 以降、Brightcove Native Player SDK を使用すると、FairPlay 暗号化で保護されたビデオを含む HLS ビデオをダウンロードして、オンラインまたはオフラインで後で再生できるようになります。詳細については、アプリ開発者ガイドを参照してください。
FairPlay を使用したビデオのダウンロードとオフライン再生に関する iOS アプリ開発者ガイド
Brightcove Player SDK は、iOS および tvOS 用のインストール パッケージを、Frameworks および XCFrameworks としてパッケージ化された動的ライブラリとして提供します。導入は iOS 12.0 以降でサポートされています。
CocoaPods を使用して、Brightcove Player SDK をプロジェクトに追加できます。最新のBrightcove-Player-Core
ポッドスペックはここで見つけることができます。 podspec は iOS と tvOS の両方をサポートします。
プロジェクトで Brightcove CocoaPods を使用する場合は、 source 'https://github.com/brightcove/BrightcoveSpecs.git'
を Podfile の先頭に追加します。
名前。
source ' https://github.com/CocoaPods/Specs '
source ' https://github.com/brightcove/BrightcoveSpecs.git '
platform :ios, ' 12.0 '
use_frameworks !
target ' MyVideoPlayer ' do
pod ' Brightcove-Player-Core '
end
フレームワークは、 /Framework
サブ仕様をポッドに追加することでインストールできます。
source ' https://github.com/CocoaPods/Specs '
source ' https://github.com/brightcove/BrightcoveSpecs.git '
platform :ios, ' 12.0 '
use_frameworks !
target ' MyVideoPlayer ' do
pod ' Brightcove-Player-Core/Framework '
end
インストールを更新するときは、CococaPods マスター リポジトリを更新するのと同じように、BrightcoveSpecs リポジトリのローカル コピーを更新して、最新の podspecs をローカルに入手することをお勧めします。通常、ターミナルでpod update
実行すると、これは自動的に行われます。あるいは、 pod repo update
を使用して明示的に更新することもできます。
Brightcove Player SDK をプロジェクトに手動で追加するには:
BrightcovePlayerSDK.framework
またはBrightcovePlayerSDK.xcframework
をプロジェクトに追加します。必ずターゲット、iOS または tvOS に対応するバージョンを使用してください。BrightcovePlayerSDK.framework
/ BrightcovePlayerSDK.xcframework
bash ${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/BrightcovePlayerSDK.framework/strip-frameworks.sh
を使用して、「スクリプトの実行」フェーズを追加します。 「インストール時のみスクリプトを実行する」にチェックを入れます。これにより、不要なアーキテクチャがビルドから削除されます。これは、App Store への申請にとって重要です。 XCFramework を使用する場合、この手順は必要なくなりました。bash ${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/BrightcovePlayerSDK.framework/strip-frameworks.sh
を使用して [スクリプトの実行] フェーズを追加します。 「インストール時のみスクリプトを実行する」にチェックを入れます。これにより、不要なアーキテクチャがビルドから削除されます。これは、App Store への申請にとって重要です。arm64
Any iOS Simulator SDK
の「除外アーキテクチャ」ビルド設定に追加されていることを確認してください。参考までに、最新リリースを見つけてダウンロードするのに役立つすべての SDK コンポーネントと対応する URL を以下に示します。
成分 | URL |
---|---|
Brightcove プレーヤー コア | https://github.com/brightcove/brightcove-player-sdk-ios/tags |
Brightcove-Player-DAI | https://github.com/brightcove/brightcove-player-sdk-ios-dai/tags |
ブライトコーブ プレーヤー フリーホイール | https://github.com/brightcove/brightcove-player-sdk-ios-fw/tags |
Brightcove-Player-GoogleCast | https://github.com/brightcove/brightcove-player-sdk-ios-googlecast/tags |
ブライトコーブ プレーヤー-IMA | https://github.com/brightcove/brightcove-player-sdk-ios-ima/tags |
Brightcove-Player-Omniture | https://github.com/brightcove/brightcove-player-sdk-ios-omniture/tags |
ブライトコーブ プレーヤー パルス | https://github.com/brightcove/brightcove-player-sdk-ios-pulse/tags |
ブライトコーブ プレーヤー SSAI | https://github.com/brightcove/brightcove-player-sdk-ios-ssai/tags |
Swift Package Manager を使用して Brightcove Player SDK をプロジェクトに追加するには:
https://github.com/brightcove/brightcove-player-sdk-ios.git
と入力します。注: Swift Package Manager では動的 XCFramework のみがサポートされています。
iOS 用 Brightcove Player SDK は、以下を使用してインポートできます。
import BrightcovePlayerSDK;
iOS 用 Brightcove Player SDK を使用してビデオを再生する:
// ** Customize these values with your own account information **
let kAccountId = " ... "
let kPolicyKey = " ... "
let kVideoId = " ... "
let sdkManager = BCOVPlayerSDKManager . sharedManager ( )
let playbackController = sdkManager . createPlaybackController ( )
self . playbackController = playbackController // store this to a strong property
view . addSubview ( playbackController . view )
let playbackService = BCOVPlaybackService ( withAccountId : kAccountId ,
policyKey : kPolicyKey )
let configuration = [
BCOVPlaybackService . ConfigurationKeyAssetID : kVideoId
]
playbackService . findVideo ( withConfiguration : configuration ,
queryParameters : nil ) { ( video : BCOVVideo ? ,
jsonResponse : Any ? ,
error : Error ? ) in
if let video {
self . playbackController ? . setVideos ( [ video ] )
self . playbackController ? . play ( )
}
}
メソッドの終了時にコントローラーが自動的に解放されないようにする必要があります。これを行う一般的な方法は、コントローラへの参照を強いインスタンス変数に保存することです。
バージョン 5.1.0 以降、Brightcove PlayerUI は Core SDK フレームワークに完全に統合されています。 PlayerUI は、再生と広告のための完全な機能を備えたコントロールのセットをすぐに提供します。
PlayerUI はセットアップが簡単で、SSAI、Pulse、FreeWheel の広告コントロールを表示し、独自のレイアウトを作成してカスタマイズできます。
PlayerUI コントロールを設定するには、以下のガイドラインに従ってください。
UIViewController にプロパティを作成して、BCOVPUIPlayerView を追跡します。 BCOVPUIPlayerView には、再生コントローラーのビューとコントロール ビューの両方が含まれます。
// PlayerUI's Player View
var playerView : BCOVPUIPlayerView ?
BCOVPUIBasicControlView を作成してから、BCOVPUIPlayerView を作成します。ここで、Playback Controller (およびそれによって再生されるすべてのビデオ) をコントロールに関連付けます。
// Create and configure Control View.
let controlView = BCOVPUIBasicControlView . withVODLayout ( )
playerView = BCOVPUIPlayerView ( playbackController : self . playbackController , options : nil )
// Add BCOVPUIPlayerView to your video view.
if let playerView {
videoView . addSubview ( playerView )
}
プレーヤー ビューのレイアウトを設定する必要があります。これは、自動レイアウトまたは古い Springs & Struts アプローチを使用して行うことができます。
サイズ変更時にレイアウト ( videoView
) のビデオ コンテナーと一致するようにプレーヤー ビューを設定します。
playerView . frame = videoView . bounds
playerView . autoresizingMask = [ . flexibleHeight , . flexibleWidth ]
BCOVPUIPlayerView のtranslatesAutoresizingMaskIntoConstraints
false
に設定します。
playerView . translatesAutoresizingMaskIntoConstraints = false
次に、レイアウトの制約を追加します。 BCOVPUIPlayerView の上、右、左、下のアンカーをvideoView
のアンカーと同じに設定します。
NSLayoutConstraint . activate ( [
playerView . topAnchor . constraint ( equalTo : videoView . topAnchor ) ,
playerView . rightAnchor . constraint ( equalTo : videoView . rightAnchor ) ,
playerView . bottomAnchor . constraint ( equalTo : videoView . bottomAnchor ) ,
playerView . leftAnchor . constraint ( equalTo : videoView . leftAnchor )
] )
BCOVPUIPlayerViewOptions
クラスを使用すると、初期化時に一部の BCOVPlayerUI 動作をカスタマイズできます。以下をカスタマイズできます。
jumpBackInterval
ジャンプバック ボタンが押されたときにプレーヤーが戻るまでの秒数。
hideControlsInterval
最後のタッチ イベントからコントロールが非表示になるまでの時間 (秒単位)。
hideControlsAnimationDuration
コントロールがアニメーション化されて非表示になるまでにかかる時間 (秒単位)。
showControlsAnimationDuration
コントロールがアニメーション化されて表示されるまでにかかる時間 (秒)。
learnMoreButtonBrowserStyle
広告上の [詳細] ボタンをタップすると、リンク先リンクが外部ブラウザ (デフォルト設定) に表示されるか内部ブラウザに表示されるかを決定する設定。
presentingViewController
他のビュー コントローラー (クローズド キャプション選択ビュー コントローラーなど) を表示するために使用する UIViewController サブクラス。
automaticControlTypeSelection
BCOVPUIPlayerView
メディア タイプに基づいてBCOVPUIBasicControlView
タイプを自動的に選択するかどうか。この値がtrue
に設定されている場合、 BCOVPUIPlayerView
イニシャライザに渡されるBCOVPUIBasicControlView
プロパティは無視されます。
ビデオ + オーディオ ストリーム
basicControlViewWithVODLayout
を使用します。basicControlViewWithLiveLayout
を使用します。basicControlViewWithLiveDVRLayout
を使用します。音声のみのストリーム
basicControlViewWithAODLayout
を使用します。basicControlViewWithLiveAudioLayout
を使用します。basicControlViewWithLiveDVRAudioLayout
を使用します。注: automaticControlTypeSelection
、BCOVPlayerUI によって提供されるレイアウトからレイアウトを選択するため、カスタム コントロールとレイアウトは上書きされます。 automaticControlTypeSelection
とプレーヤー UI のカスタマイズには互換性がありません。
オプションは次の方法で設定できます。
let manager = BCOVPlayerSDKManager . sharedManager ( )
let playbackController = manager . createPlaybackController ( )
let options = BCOVPUIPlayerViewOptions ( )
options . jumpBackInterval = 5
let playerView = BCOVPUIPlayerView ( playbackController : playbackController ,
options : options )
さまざまなタイプのビデオをサポートするために、3 つのレイアウトが提供されています。
BCOVPUIControlLayout basicVODControlLayout
一般的なオンデマンド ビデオ ストリームの基本レイアウトです。
BCOVPUIControlLayout basicLiveControlLayout
ライブビデオ用のレイアウトです。
BCOVPUIControlLayout basicLiveDVRControlLayout
DVR コントロールを備えたライブ ビデオ ストリームのレイアウトです。
通常、 BCOVPUIPlayerView
作成後すぐに新しいレイアウトを設定しますが、いつでも新しいレイアウトを設定することもできます。たとえば、次のように新しい VOD レイアウトを設定できます。
playerView ? . controlsView . layout = BCOVPUIControlLayout . basicVOD ( )
デフォルトのレイアウトに加えて、独自の設計で新しいBCOVPUIControlLayout
インスタンス化することで、高度にカスタマイズした独自のレイアウトを作成できます。ただし、 automaticControlTypeSelection
BCOVPlayerUI によって提供されるレイアウトからレイアウトを選択するため、カスタム コントロールとレイアウトは上書きされることに注意してください。 automaticControlTypeSelection
とプレーヤー UI のカスタマイズには互換性がありません。
まず、 BCOVPUIBasicControlView layoutViewWithControlFromTag:width:elasticity:
を使用して、レイアウトに含めるコントロールを作成します。各コントロールは、コントロールの間隔を決定するBCOVPUILayoutView
にパッケージ化されています。
各レイアウト ビューのwidth
デフォルトの幅 (コントロールの種類に基づく) に設定することも、独自の幅を指定することもできます。
elasticity
引数を使用して、コントロールを含むレイアウト ビューの幅をコントロール バーを満たすためにどの程度変更するかを決定します。
ここでは、さまざまな基本コントロールの作成例を示します。
// Create various standard layout views
// Standard play/pause button
let playbackLayoutView = BCOVPUIBasicControlView . layoutViewWithControl ( from : BCOVPUIViewTag . buttonPlayback ,
width : kBCOVPUILayoutUseDefaultValue ,
elasticity : 0.0 )
// Standard jump back button
let jumpBackButtonLayoutView = BCOVPUIBasicControlView . layoutViewWithControl ( from : BCOVPUIViewTag . buttonJumpBack ,
width : kBCOVPUILayoutUseDefaultValue ,
elasticity : 0.0 )
// Current time indicator
let currentTimeLayoutView = BCOVPUIBasicControlView . layoutViewWithControl ( from : BCOVPUIViewTag . labelCurrentTime ,
width : kBCOVPUILayoutUseDefaultValue
elasticity : 0.0 )
// Time separator - typically the '/' character
let timeSeparatorLayoutView = BCOVPUIBasicControlView . layoutViewWithControl ( from : BCOVPUIViewTag . labelTimeSeparator ,
width : kBCOVPUILayoutUseDefaultValue ,
elasticity : 0.0 )
// Video duration label
let durationLayoutView = BCOVPUIBasicControlView . layoutViewWithControl ( from : BCOVPUIViewTag . labelDuration ,
width : kBCOVPUILayoutUseDefaultValue ,
elasticity : 0.0 )
// Slider bar used for seeking through the video
// The elasticity is set to 1 so that it can resize to fill available space
let progressLayoutView = BCOVPUIBasicControlView . layoutViewWithControl ( from : BCOVPUIViewTag . sliderProgress ,
width : kBCOVPUILayoutUseDefaultValue ,
elasticity : 1.0 )
// Closed caption button
// This button is initially hidden ('removed'), and will be shown
// if closed captions or audio tracks are available.
let closedCaptionLayoutView = BCOVPUIBasicControlView . layoutViewWithControl ( from : BCOVPUIViewTag . buttonClosedCaption ,
width : kBCOVPUILayoutUseDefaultValue ,
elasticity : 0.0 )
closedCaptionLayoutView ? . isRemoved = true
// The full-screen button
let screenModeLayoutView = BCOVPUIBasicControlView . layoutViewWithControl ( from : BCOVPUIViewTag . buttonScreenMode ,
width : kBCOVPUILayoutUseDefaultValue ,
elasticity : 0.0 )
// AirPlay button
// This button is initially hidden ('removed'), and will be shown
// if AirPlay devices are available.
let externalRouteLayoutView = BCOVPUIBasicControlView . layoutViewWithControl ( from : BCOVPUIViewTag . viewExternalRoute ,
width : kBCOVPUILayoutUseDefaultValue ,
elasticity : 0.0 )
externalRouteLayoutView ? . isRemoved = true
// Empty view - used as a spacer
let spacerLayoutView1 = BCOVPUIBasicControlView . layoutViewWithControl ( from : BCOVPUIViewTag . viewEmpty ,
width : 1.0 ,
elasticity : 1.0 )
// Empty view - used as a spacer
let spacerLayoutView2 = BCOVPUIBasicControlView . layoutViewWithControl ( from : BCOVPUIViewTag . viewEmpty ,
width : 1.0 ,
elasticity : 1.0 )
// Empty view - will have a custom UIImageView added as a subview
let logoLayoutView1 = BCOVPUIBasicControlView . layoutViewWithControl ( from : BCOVPUIViewTag . viewEmpty ,
width : 88.0 ,
elasticity : 1.0 )
// Empty view - will have a custom UIImageView added as a subview
let logoLayoutView2 = BCOVPUIBasicControlView . layoutViewWithControl ( from : BCOVPUIViewTag . viewEmpty ,
width : 36.0 ,
elasticity : 1.0 )
空のレイアウト ビューを作成して、そこに独自のビュー (ロゴ、コントロール、何もないなど) を配置することもできることに注意してください。このコードは、上で作成した logoLayoutView1 内にUIImage
ロゴを配置する方法を示しています。
// Create logo image inside an image view for display in control bar.
let logoImage1 = UIImage ( named : " myLogo " )
let logoImageView1 = UIImageView ( image : logoImage1 )
logoImageView1 . autoresizingMask = [ . flexibleWidth , . flexibleHeight ]
logoImageView1 . contentMode = . scaleAspectFit
logoImageView1 . frame = logoLayoutView1 . frame
// Add image view to our empty layout view.
logoLayoutView1 . addSubview ( logoImageView1 )
レイアウト ビューにはさまざまなコントロールがパッケージ化されているため、それらは配列に並べられ、それぞれが 1 行のコントロール、つまりコントロール バーを表します。縦向きと横向きで異なるレイアウトを使用できるため、通常は 2 つの異なるコントロール バー配列を設定することになります。
横向きの標準レイアウトでは、コントロールは 1 つの配列に配置され、その配列はコントロールのセット全体を表す別の配列に格納されます。
let standardLayoutLine1 = [
playbackLayoutView ,
jumpBackButtonLayoutView ,
currentTimeLayoutView ,
timeSeparatorLayoutView ,
durationLayoutView ,
progressLayoutView ,
spacerLayoutView1 ,
logoLayoutView1 ,
spacerLayoutView2 ,
closedCaptionLayoutView ,
screenModeLayoutView ,
externalRouteLayoutView
]
let standardLayoutLines = [ standardLayoutLine1 ]
縦向きのコンパクトなレイアウトでは、コントロールの 2 つの配列が各行に 1 つずつ作成されます。これらの配列は、コンパクトなレイアウトを表す別の配列にパッケージ化されます。
各レイアウトのほとんどのコントロールにまったく同じオブジェクトが使用されていることに注意してください。これが完了し、縦向きと横向きを切り替えると、オブジェクトはスムーズなアニメーションを使用して新しい位置に移動します。
let compactLayoutLine1 = [
currentTimeLayoutView ,
progressLayoutView ,
durationLayoutView
]
let compactLayoutLine2 = [
playbackLayoutView ,
jumpBackButtonLayoutView ,
spacerLayoutView1 ,
closedCaptionLayoutView ,
screenModeLayoutView ,
externalRouteLayoutView ,
logoLayoutView2
]
let compactLayoutLines = [
compactLayoutLine1 ,
compactLayoutLine2
]
最後に、2 つのレイアウト構成 (1 つは全幅用、もう 1 つはコンパクト幅用) があるため、新しいBCOVPUIControlLayout
オブジェクトを作成し、プレーヤーのコントロール ビューに設定できます。
let customLayout = BCOVPUIControlLayout . init ( standardControls : standardLayoutLines ,
compactControls : compactLayoutLines )
playerView ? . controlsView . layout = customLayout
頻繁に表示または非表示にする必要があるコントロールがある場合は、そのコントロールのレイアウト ビューでremoved
プロパティを設定できます。コントロールを変更したら、playerView の controlView でsetNeedsLayout
を呼び出します。
logoLayoutView1 ? . isRemoved = true
playerView ? . controlsView . setNeedsLayout ( )
いくつかの一般的なBCOVPUIControlLayout
プロパティをカスタマイズすることもできます。
controlBarHeight
コントロールの各行のサイズを設定します。horizontalItemSpacing
各コントロール バーの各BCOVPUILayoutView
間の間隔を設定します。compactLayoutMaximumWidth
どのコントロールのセットが使用されるかが決まります。コントロール ビューがcompactLayoutMaximumWidth
より小さい場合は、コンパクト コントロール セットが使用され、それ以外の場合は標準コントロールが使用されます。表示されるコントロールのセットを変更するには、新しいBCOVPUIControlLayout
作成してインストールする必要があります。新しいコントロールはいつでもインストールできます。
PlayerUI カスタマイズのその他の例については、BrightcoveOS GitHub リポジトリの PlayerUI フォルダーにあるサンプル コードを参照してください。
https://github.com/BrightcoveOS/ios-player-samples
Brightcove Native Player SDK には、Apple TV の tvOS で再生するためのコントロールが組み込まれています。 Brightcove Native Player SDK での組み込み TV プレーヤー UI の使用の詳細については、TV プレーヤー ガイドを参照してください。
BCOVPlaybackController
のsetAllowsExternalPlayback
プロパティをtrue
に設定して、AirPlay 機能を有効にします。 AirPlay デバイスがネットワーク上で見つかった場合、AirPlay ボタンが再生コントロールに表示されます。
現在、IMA は AirPlay をサポートする唯一の広告プラグインであり、プレロール広告やポストロール広告を使用する場合にのみサポートされます。 Pulse、SSAI、または FreeWheel 広告プラグインで AirPlay を使用すると、予期しない動作が発生する可能性があります。
AirPlay 2 もサポートし、オーディオ出力に複数のデバイスを選択できるようにしたい場合は、いくつかの追加作業を行う必要があります。まず、 routeSharingPolicy
を設定できるように AVAudioSession を構成する必要があります。例えば:
do {
try AVAudioSession . sharedInstance ( ) . setCategory ( . playback , mode : . moviePlayback , policy : . longFormVideo )
} catch {
print ( " Error setting AVAudioSession category " )
}
また、 MPRemoteCommandCenter
経由で少なくとも 1 つの再生コマンドを設定する必要があります。少なくとも、 pauseCommand
とplayCommand
両方を設定する必要があります。例えば:
let center = MPRemoteCommandCenter . shared ( )
center . pauseCommand . addTarget { _ in
playbackController . pause ( )