概要
この例では、 Brightcove 再生 API から返された動画を再生します。これは、Video Cloud ライブラリからコンテンツを取得するための最新かつ推奨される API です。
このオプションでは、ポリシーキーが必要です。ポリシーキーに慣れていない場合は、「ポリシー API の概要」を参照してください。
はじめに
この例では、ビデオファイルの内部配列からビデオを再生します。
以下の手順に従って、iOS 用 Brightcove Player SDK を使用するアプリプロジェクトのセットアップについて理解を深めます。次の各について、完全なコードを表示できます。
このサンプルを試すには、次の 2 つの方法があります。
サンプルをダウンロードする
実験のためにXcodeプロジェクト全体をダウンロードしてください。
- iOS 用ネイティブ SDK サンプルをローカルシステムに複製またはダウンロードします。
- プレーヤー/ビデオCloudBasicPlayer/Swift サンプルアプリに移動します。
pod install
コマンドを実行します。- 新しく作成したワークスペースを開いて実行します。
詳細については、ネイティブ SDK for iOS/tvOS 用のサンプルアプリの実行を参照してください。
このガイドの手順に従ってアプリを構築する
以下の手順に従って、tvOS 用 Brightcove Player SDK を使用するアプリプロジェクトのセットアップについて理解を深めます。次の各について、完全なコードを表示できます。
プロジェクトを作成する
Xcodeでプロジェクトを設定します。次に、プロジェクトへの依存関係とともに SDK を追加します。
Xcodeプロジェクトをセットアップする
アプリ用の新しい Xcode プロジェクトを作成します。
-
Xcodeで新しいiOSプロジェクトの作成を開始します。[ 新しい Xcode プロジェクトを作成する ] を選択します。
-
新しいプロジェクトの iOS とシングルビューアプリケーションを選択します。[ 次へ ] を選択します。
-
プロジェクト情報を次のように設定します。
- 製品名:シンプルなビデオ再生
- チーム:なし
[チーム] フィールドはオプションです。App Storeでアプリを配布する場合は、Apple開発者プログラムを通じて所属するチームを選択する必要があります。コード署名にはチーム名が必要です。この例では、[なし] を選択します。
- 組織名:あなたの会社名
- 組織識別子: com.example-company
これにより、製品名がアプリストアで一意になります。 - 言語:スウィフト
- ユーザーインターフェース:ストーリーボード
この例では、ストーリーボードインタフェースを使用しています。
-
プロジェクトを保存する場所を選択し、プロジェクトを作成します。
- 今すぐプロジェクトを閉じてください ( はい、閉じてください。これは重要です! )
SDK とその依存関係をプロジェクトに追加する
SDK とその依存関係をプロジェクトに追加する最も簡単な方法は、CocoaPods を使用することです。
CocoaPods は、プロジェクトにライブラリを追加する依存関係マネージャです。必須ではありませんが、インストールが簡単になります。CocoaPods をインストールするには、 CocoaPods サイトの手順を参照してください。
-
プロジェクトフォルダに、 Podfile (ファイル拡張子なし) というプレーンテキストファイルを作成します。
-
テキストエディタを使用して、Podfile に次のコード行を追加して保存します。このコードは次のことを行います。
- 1 行目:Brightcoveポッドスペックの GitHub の場所を指します。
- 3行目:静的ライブラリの代わりにフレームワークを使用するように Pod を設定します。
- 5行目:iOS プラットフォームのバージョンを定義します。
-
7~9行目:Brightcoveのネイティブプレーヤー SDK をインストールします。
- iOS 用 Brightcove ネイティブ SDK の概要ドキュメントから、現在のネイティブ SDK バージョンを取得します。
'6.7.10'
値を現在の SDK バージョン番号に置き換えます。-
依存関係の管理の詳細については、「 CocoaPods を使用して依存関係を管理する方法」を参照してください。
source 'https://github.com/brightcove/BrightcoveSpecs.git' use_frameworks! platform :ios, '11.0' # (or whatever version you want) target 'Simple-Video-Playback' do pod 'Brightcove-Player-Core', '6.7.10' end
-
ターミナルセッションを開き、シンプルビデオ再生の Xcode プロジェクトフォルダーに移動します。
-
ターミナルセッションで、コマンド
pod install
を選択し、 Return キーを押して実行します。
CocoaPods が Pod の互換性のあるバージョンが見つからない場合、または最新バージョンでない場合は、ターミナルアプリで以下を実行してみてください。
pod update
ターミナルに、Brightcove Player SDK がプロジェクトに追加されたことを示す一連のメッセージが表示されます。
-
pod install
コマンドは、.xcworkspace
プロジェクトのファイルを作成します。この時点から、を開く必要がありますSimple-Video-Playback.xcworkspace Xcodeのファイル、いいえ NS Simple-Video-Playback.xcodeproj ファイル。
動画アプリをコーディングする
簡単なビデオ再生アプリのコードを作成します。
- Xcodeで、単純なビデオ再生.xcWorkspaceファイルを開きます。
アプリのオーディオ動作を設定する
オーディオセッションは、アプリレベルでオーディオの動作を処理します。AvaudioSessionクラスの詳細については、こちらをご覧ください。
このサンプルでは、再生カテゴリを使用します。これにより、画面がロックされ、Ring/Silent スイッチがサイレントに設定されている場合でも、オーディオが再生されます。動画を再生しているので、 MoviePlayback モードを使用します。それを簡単に保つために、我々は、アプリケーションデリゲートにこのコードを配置します。
-
プロジェクトで、アプリケーションデリゲートファイル ( AppDelegate.swift ) を開きます。
-
didFinishLaunchingWithOptions
関数で、オーディオセッションカテゴリを設定するコードを追加します。AVFoundation
フレームワークをインポートしてください。-
私たちはそれが期待したときにオーディオが再生されるようにするために、以下のコードが必要です。たとえば、このコードを設定しないと、ミュートスイッチがオンになったときにビデオが聞こえません。
// // AppDelegate.swift // Simple-Video-Playback // // Copyright © 2018 Brightcove. All rights reserved. // import UIKit import AVFoundation @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. var categoryError :NSError? var success: Bool do { try AVAudioSession.sharedInstance().setCategory(.playback, mode: .moviePlayback, options: .duckOthers) success = true } catch let error as NSError { categoryError = error success = false } if !success { print("AppDelegate Debug - Error setting AVAudioSession category. Because of this, there may be no sound. \(categoryError!)") } return true } func applicationWillResignActive(_ application: UIApplication) { // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. } func applicationDidEnterBackground(_ application: UIApplication) { // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. } func applicationWillEnterForeground(_ application: UIApplication) { // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. } func applicationDidBecomeActive(_ application: UIApplication) { // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. } func applicationWillTerminate(_ application: UIApplication) { // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. } }
-
ビューコントローラを構築する
View Controller クラスを更新して、Brightcove カタログサービスから動画を再生します。
-
プロジェクトで、ビューコントローラーファイル ( ViewController.swift ) を開きます。
ネイティブ SDK のインポート
iOS 用 Brightcove ネイティブプレーヤー SDK は Objective-C で書かれていますが、フレームワークモジュールを Swift プロジェクトにインポートするだけです。
-
import
既存のディレクティブの下に以下を追加して、Brightcove ネイティブプレーヤー SDK をインポートします。import BrightcovePlayerSDK
あなたの価値でプロジェクトをカスタマイズする
Video Cloud アカウントにアクセスするための値を追加します。
この例では、 Brightcove 再生 API から返された動画を再生します。これは、Video Cloud ライブラリからコンテンツを取得するための最新かつ推奨される API です。ポリシーキーに慣れていない場合は、「ポリシー API の概要」を参照してください。
-
import
ディレクティブの下に、次の値を追加します。- 12行目です:Brightcove再生 API ポリシーキーを定義します
- 13行目:ビデオクラウドアカウント ID を定義します
-
14行目:ビデオクラウドビデオ ID を定義します
// ** Customize these values with your own account information ** let kViewControllerPlaybackServicePolicyKey = "your policy key" let kViewControllerAccountID = "your account id" let kViewControllerVideoID = "your video id"
クラスデリゲートを設定する
これにより、アプリはビデオ再生イベントとプレーヤーコントロールイベントをリッスンし、応答することができます。
-
ビューコントローラクラスを次のように更新します。
class ViewController: UIViewController, BCOVPlaybackControllerDelegate {
定数を宣言してビューを設定する
-
ViewController
クラスに、以下を追加します。- 16行目です:共有マネージャを初期化します。
BCOVPlayerSDKManager
このクラスは、SDK エコシステム内に他のオブジェクトを作成できるシングルトンです。 - 17行目:定数を定義し、アカウント ID とポリシーキーを使用して Brightcove プレイバックサービスを初期化します。
BCOVPlaybackService
クラスは、再生 API からデータを取得するための非同期メソッドを提供します。 - 18行目線:再生コントローラの定数を定義します。
BCOVPlaybackController
には、再生機能を制御するメソッドがあります。 -
19行目:ビューの変数を定義します。
class ViewController: UIViewController, BCOVPlaybackControllerDelegate { let sharedSDKManager = BCOVPlayerSDKManager.shared() let playbackService = BCOVPlaybackService(accountId: kViewControllerAccountID, policyKey: kViewControllerPlaybackServicePolicyKey) let playbackController :BCOVPlaybackController @IBOutlet weak var videoContainerView: UIView!
- 16行目です:共有マネージャを初期化します。
init 関数を作成する
- 前のステップのコードの下に、
init()
次のように関数を作成します。- 23行目です:共有マネージャを使用して再生コントローラを作成します。
-
27行目です:オプション:Video Cloud アカウント ID を分析に送信します。これは、
BCOVVideo
クラスをオーバーライドするか、Brightcove Playback サービスまたはカタログを使用しない場合にのみ必要です。 -
29-31 行:デリゲートを設定し、自動アドバンスと自動再生機能をオンにします。
required init?(coder aDecoder: NSCoder) { playbackController = (sharedSDKManager?.createPlaybackController())! super.init(coder: aDecoder) playbackController.analytics.account = kViewControllerAccountID // Optional playbackController.delegate = self playbackController.isAutoAdvance = true playbackController.isAutoPlay = true }
プレーヤーを設定する
-
viewDidLoad()
関数で、次を追加します。- 39行目:標準の VOD レイアウトを使用して、Brightcoveプレーヤーコントロールを作成および設定します。
- 44行目線:プレーヤービューをメインビューのサブビューとして追加します。
- 45行目線:自動サイズ変更マスクをオフにします。
- 46〜51行目は次のとおりです。自動レイアウトを使用して、プレーヤービューの動的拘束を定義します。
- 54行目線:プレーヤービューを再生コントローラに関連付けます。
-
56行目です:
requestContentFromPlaybackService
関数を呼び出します。この関数は次のステップで定義します。
override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. // Set up our player view. Create with a standard VOD layout. guard let playerView = BCOVPUIPlayerView(playbackController: self.playbackController, options: nil, controlsView: BCOVPUIBasicControlView.withVODLayout()) else { return } // Install in the container view and match its size. self.videoContainerView.addSubview(playerView) playerView.translatesAutoresizingMaskIntoConstraints = false NSLayoutConstraint.activate([ playerView.topAnchor.constraint(equalTo: self.videoContainerView.topAnchor), playerView.rightAnchor.constraint(equalTo: self.videoContainerView.rightAnchor), playerView.leftAnchor.constraint(equalTo: self.videoContainerView.leftAnchor), playerView.bottomAnchor.constraint(equalTo: self.videoContainerView.bottomAnchor) ]) // Associate the playerView with the playback controller. playerView.playbackController = playbackController requestContentFromPlaybackService() }
Brightcoveライブラリからコンテンツをリクエストする
ビデオコンテンツを再生するには、カタログサービスからプレイリストをリクエストします
-
viewDidLoad()
関数の下に、requestContentFromPlaybackService()
次のような名前の関数を作成します。- 60行目線:指定されたビデオ ID に基づいて、再生 API からビデオオブジェクトを返します。
- 63号線:再生コントローラにビデオを追加します。
-
65行線:プレイリストが返されなかった場合、エラーメッセージを書き込みます。
func requestContentFromPlaybackService() { playbackService?.findVideo(withVideoID: kViewControllerVideoID, parameters: nil) { (video: BCOVVideo?, jsonResponse: [AnyHashable: Any]?, error: Error?) -> Void in if let v = video { self.playbackController.setVideos([v] as NSArray) } else { print("ViewController Debug - Error retrieving video: \(error?.localizedDescription ?? "unknown error")") } } }
コードを見る
これで、ビューコントローラが完成しました。ここに完全なコードがあります:
//
// ViewController.swift
// VideoCloudBasicPlayer
//
// Copyright © 2018 Brightcove, Inc. All rights reserved.
//
import UIKit
import BrightcovePlayerSDK
let kViewControllerPlaybackServicePolicyKey = "your policy key"
let kViewControllerAccountID = "your account id"
let kViewControllerVideoID = "your video id"
class ViewController: UIViewController, BCOVPlaybackControllerDelegate {
let sharedSDKManager = BCOVPlayerSDKManager.shared()
let playbackService = BCOVPlaybackService(accountId: kViewControllerAccountID, policyKey: kViewControllerPlaybackServicePolicyKey)
let playbackController :BCOVPlaybackController
@IBOutlet weak var videoContainerView: UIView!
required init?(coder aDecoder: NSCoder) {
playbackController = (sharedSDKManager?.createPlaybackController())!
super.init(coder: aDecoder)
playbackController.analytics.account = kViewControllerAccountID // Optional
playbackController.delegate = self
playbackController.isAutoAdvance = true
playbackController.isAutoPlay = true
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
// Set up our player view. Create with a standard VOD layout.
guard let playerView = BCOVPUIPlayerView(playbackController: self.playbackController, options: nil, controlsView: BCOVPUIBasicControlView.withVODLayout()) else {
return
}
// Install in the container view and match its size.
self.videoContainerView.addSubview(playerView)
playerView.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
playerView.topAnchor.constraint(equalTo: self.videoContainerView.topAnchor),
playerView.rightAnchor.constraint(equalTo: self.videoContainerView.rightAnchor),
playerView.leftAnchor.constraint(equalTo: self.videoContainerView.leftAnchor),
playerView.bottomAnchor.constraint(equalTo: self.videoContainerView.bottomAnchor)
])
// Associate the playerView with the playback controller.
playerView.playbackController = playbackController
requestContentFromPlaybackService()
}
func requestContentFromPlaybackService() {
playbackService?.findVideo(withVideoID: kViewControllerVideoID, parameters: nil) { (video: BCOVVideo?, jsonResponse: [AnyHashable: Any]?, error: Error?) -> Void in
if let v = video {
self.playbackController.setVideos([v] as NSArray)
} else {
print("ViewController Debug - Error retrieving video: \(error?.localizedDescription ?? "unknown error")")
}
}
}
}
ネイティブ SDK のインポート
iOS 用 Brightcove ネイティブプレーヤー SDK は Obj-C で書かれていますが、フレームワークモジュールを Swift プロジェクトにインポートするだけです。
-
import
既存のディレクティブの下に以下を追加して、Brightcove ネイティブプレーヤー SDK をインポートします。import BrightcovePlayerSDK
あなたの価値でプロジェクトをカスタマイズする
アカウント ID の値を設定します。この値は後の手順でBrightcoveに送信されます。
-
#import
ディレクティブの下に、Brightcoveのアカウント ID に独自の値を追加します。これは、アプリを Brightcove に登録するために使用されます。let kViewControllerAccountID = "your account id" // For Brightcove registration
クラスのデリゲートを設定する
これにより、アプリはビデオ再生イベントとプレーヤーコントロールイベントをリッスンし、応答することができます。
-
ビューコントローラクラスを次のように更新します。
class ViewController: UIViewController, BCOVPlaybackControllerDelegate {
定数を宣言してビューを設定する
-
ViewController
クラスに、以下を追加します。- 14行目:共有マネージャを初期化します。
BCOVPlayerSDKManager
このクラスは、SDK エコシステム内に他のオブジェクトを作成できるシングルトンです。 - 15行目です:再生コントローラの定数を定義します。
BCOVPlaybackController
には、再生機能を制御するメソッドがあります。 -
16行目です:ビューの変数を定義します。
class ViewController: UIViewController, BCOVPlaybackControllerDelegate { let sharedSDKManager = BCOVPlayerSDKManager.shared() let playbackController :BCOVPlaybackController @IBOutlet weak var videoContainerView: UIView!
- 14行目:共有マネージャを初期化します。
init 関数を作成する
- 前のステップのコードの下に、
init()
次のように関数を作成します。- 20行目です:共有マネージャを使用して再生コントローラを作成します。
-
25行目です:動画クラウドパブリッシャー ID を Brightcove アナリティクスに送信し、アプリを登録します。
-
28-30行目は次のとおりです。デリゲートを設定し、自動アドバンスと自動再生機能をオンにします。
required init?(coder aDecoder: NSCoder) { // Create the Brightcove playback controller playbackController = (sharedSDKManager?.createPlaybackController())! super.init(coder: aDecoder) // Register your app with Brightcove playbackController.analytics.account = kViewControllerAccountID // Configure the player playbackController.delegate = self playbackController.isAutoAdvance = true playbackController.isAutoPlay = true }
プレーヤーを設定する
-
viewDidLoad()
関数で、次を追加します。- 38-40行目は次のとおりです。URL パスを使用してビデオソースの配列を作成します。
- 43-45行線:再生コントローラのビューを設定します。
- 48行目です:プレーヤービューをメインビューのサブビューとして追加します。
- 49号線:自動サイズ変更マスクをオフにします。
- 50~55行目です:自動レイアウトを使用して、プレーヤービューの動的拘束を定義します。
- 58行線:プレーヤービューを再生コントローラに関連付けます。
- 61号線:コントローラの再生キューにビデオ配列を追加します。
-
62行目:最初のビデオの再生を開始します。
override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. // Create an array of videos var videoArray = [AnyObject]() videoArray = [videoWithURL(url: NSURL(string: "https://solutions.brightcove.com/bcls/assets/videos/Great_Horned_Owl.mp4")!), videoWithURL(url: NSURL(string: "https://solutions.brightcove.com/bcls/assets/videos/Great_Blue_Heron.mp4")!)] // Set up the player view with a standard VOD layout. guard let playerView = BCOVPUIPlayerView(playbackController: self.playbackController, options: nil, controlsView: BCOVPUIBasicControlView.withVODLayout()) else { return } // Install the container view and match its size. self.videoContainerView.addSubview(playerView) playerView.translatesAutoresizingMaskIntoConstraints = false NSLayoutConstraint.activate([ playerView.topAnchor.constraint(equalTo: self.videoContainerView.topAnchor), playerView.rightAnchor.constraint(equalTo: self.videoContainerView.rightAnchor), playerView.leftAnchor.constraint(equalTo: self.videoContainerView.leftAnchor), playerView.bottomAnchor.constraint(equalTo: self.videoContainerView.bottomAnchor) ]) // Associate the playerView with the playback controller. playerView.playbackController = playbackController // Load the video array into the player and start video playback playbackController.setVideos(videoArray as NSArray) playbackController.play(); }
動画ソースの配信方法を設定する
-
viewDidLoad()
関数の下に、BCOVSources
動画に属する配信方法を設定する関数を作成します。func videoWithURL(url: NSURL) -> BCOVVideo { // Set the delivery method for BCOVSources that belong to a video let source:BCOVSource = BCOVSource(url: url as URL, deliveryMethod: kBCOVSourceDeliveryHLS, properties: nil) let video = BCOVVideo.init(source: source, cuePoints: BCOVCuePointCollection.init(array: []), properties: [NSObject:AnyObject]()) return video! }
コードを見る
これで、ビューコントローラが完成しました。ここに完全なコードがあります:
//
// ViewController.swift
// Simple-Video-Playback for Brightcove Player Customers
//
// Copyright © 2018 Brightcove. All rights reserved.
//
import UIKit
import BrightcovePlayerSDK
let kViewControllerAccountID = "your account id" // For Brightcove registration
class ViewController: UIViewController, BCOVPlaybackControllerDelegate {
let sharedSDKManager = BCOVPlayerSDKManager.shared()
let playbackController :BCOVPlaybackController
@IBOutlet weak var videoContainerView: UIView!
required init?(coder aDecoder: NSCoder) {
// Create the Brightcove playback controller
playbackController = (sharedSDKManager?.createPlaybackController())!
super.init(coder: aDecoder)
// Register your app with Brightcove
playbackController.analytics.account = kViewControllerAccountID
// Configure the player
playbackController.delegate = self
playbackController.isAutoAdvance = true
playbackController.isAutoPlay = true
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
// Create an array of videos
var videoArray = [AnyObject]()
videoArray = [videoWithURL(url: NSURL(string: "https://solutions.brightcove.com/bcls/assets/videos/Great_Horned_Owl.mp4")!),
videoWithURL(url: NSURL(string: "https://solutions.brightcove.com/bcls/assets/videos/Great_Blue_Heron.mp4")!)]
// Set up the player view with a standard VOD layout.
guard let playerView = BCOVPUIPlayerView(playbackController: self.playbackController, options: nil, controlsView: BCOVPUIBasicControlView.withVODLayout()) else {
return
}
// Install in the container view and match its size.
self.videoContainerView.addSubview(playerView)
playerView.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
playerView.topAnchor.constraint(equalTo: self.videoContainerView.topAnchor),
playerView.rightAnchor.constraint(equalTo: self.videoContainerView.rightAnchor),
playerView.leftAnchor.constraint(equalTo: self.videoContainerView.leftAnchor),
playerView.bottomAnchor.constraint(equalTo: self.videoContainerView.bottomAnchor)
])
// Associate the playerView with the playback controller.
playerView.playbackController = playbackController
// Load the video array into the player and start video playback
playbackController.setVideos(videoArray as NSArray)
playbackController.play();
}
func videoWithURL(url: NSURL) -> BCOVVideo {
// Set the delivery method for BCOVSources that belong to a video
let source:BCOVSource = BCOVSource(url: url as URL, deliveryMethod: kBCOVSourceDeliveryHLS, properties: nil)
let video = BCOVVideo.init(source: source, cuePoints: BCOVCuePointCollection.init(array: []), properties: [NSObject:AnyObject]())
return video!
}
}
ストーリーボードビューを接続する
接続しますMain.storyboard
で表示videoContainerView
プロパティ。
-
Xcodeで、
Main.storyboard
ファイルを開きます。 -
コンパニオンビューで、ビューコントローラシーンを展開し、[ ビューコントローラ ] メニューを展開し、 View オブジェクトを公開します。
-
[ 右側にエディタを追加] アイコンを選択して、ストーリーボードビューにアシスタントエディタを追加します。
-
アシスタントエディターで、
ViewController.swift
ファイルを開きます。 -
@IBOutlet
の隣にある開いた円を選択しvideoContainerView
、それを Viewオブジェクトにドラッグしてこれらのコンポーネントを接続します。
メディアセキュリティの管理
アプリトランスポートセキュリティ (ATS) は、アプリと Web サービスの間の安全な接続を強制します。Apple の iOS 9 SDK のリリースで、 App Transport Security (ATS) と呼ばれる新機能が追加されました。
-
アプリには、次のいずれかの状況が適用されます。
-
デフォルトでは、iOS 用 Brightcove ネイティブ SDK はソース選択ポリシーを使用して HTTP ソース上で HTTPS を選択するため、ATS を有効にしてアプリを構築できます。
それで、あなたはあなたのアプリを実行する準備ができています。
-
リモートアセットで HTTP ソースではなく HTTPS を使用する場合は、ATS を有効にしてアプリを構築できます。
それで、あなたはあなたのアプリを実行する準備ができています。
-
HTTP ソースを使用している場合や、アプリで他の HTTP 呼び出しがある場合、次のエラーメッセージが表示されることがあります。
App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.
つまり、ATS は有効ですが、システムが ATS 要件を満たすように構成されていません。この状況を修正するには、アプリトランスポートセキュリティ (ATS) を使用する」ドキュメントを参照してください。
-
アプリを実行する
アプリは、iPhone、iPad、またはiOSシミュレータでビルドして実行する準備ができました。プレイリストから動画を再生できるはずです。
アプリは、iPhone、iPad、またはiOSシミュレータでビルドして実行する準備ができました。配列で定義されているビデオを再生できるはずです。