本ドキュメントは、Brightcove App SDK for iOS のバージョン 2.0 を使って構築したアプリケーションについて説明しています。iPhone アプリケーションを初めて構築する際にダウンロードする参考ドキュメントなど SDK の詳細について知りたい場合は、Brightcove App SDK for iOS の基礎 をご覧ください。
One Planet for iPhone のソースをダウンロードしてください。
以前の記事に記載されている OnePlanet ポータル アプリケーションについては、すでに理解されているかもしれません。この記事では、モバイル ブラウザ Safari から起動する Web ベースのアプリケーションとは対極の関係にある、iPhone および iPod Touch にネイティブなパラレル アプリケーションについて記載しています。便宜上、OnePlanet ネイティブのサンプル アプリケーションを「OnePlanet」と称します。
また Brightcove App SDK for iOS に関する以下のドキュメントについてもご確認ください。
これが OnePlanet の画面です。
OnePlanet は、Brightcove App SDK for iOS および Brightcove Media Read API を使用して開発されました。この SDK は現在開発中で、Brightcove の動画を iPhone や iPad などの iOS デバイスに配信するための独自のネイティブ iOS アプリケーションの作成に使用する、フレームワークを提供しています。Brightcove App SDK for iOS のインストールと使用についての詳細をご覧ください。
お使いのデバイスで OnePlanet を始めるには、以下の 2 つの方法があります。
Xcode でお使いのデバイスに OnePlanet をインストールする前に、開発証明およびプロビジョニング プロファイルをリクエストして受け取る必要があります。これについては、Apple デベロッパ コネクション の iPhone デベロッパ プログラムをご覧ください。
Xcode からのインストールについては、お使いのコンピュータに Xcode と Apple iPhone SDK がすでにインストールされていることが前提となります。Brightcove App SDK for iOS をダウンロードして BrightcoveDemo.Xcodeproj ファイルを開きます。OnePlanet は、お使いのデバイスあるいは Xcode iPhone シミュレータを通して実行できます。お使いのデバイス上で OnePlanet をインストールして実行する場合、デバイスがインターネットに接続されているかを確認してください。インストールするターゲットを選択したら、Build & Go をクリックすると OnePlanet がターゲット上に構築され、インストール後に開始します。
OnePlanet は iTunes Store から入手できます。アプリケーションのダウンロードとインストールが完了したら、デバイスの画面から選択します。
アプリケーションの始動から始まるユーザー シナリオは、OnePlanet の動作を最もよく説明しています。
OnePlanet が始動するとデフォルトで Channels ビューが表示されます。このビューは PlaylistTableViewController.fetchAllPlaylists への呼び出しによって投入されます。この呼び出しは、画面に最大 10 件のプレイリスト BCItemCollection を返します。
チャンネルが選択されると新しい VideoTableViewController が割り当てられて、ナビゲーション コントローラに追加されます。チャンネルの動画をロードするには、VideoTableViewController が loadTableDataFromBrightcoveForPlaylist に呼び出しを行います。
- (void)loadTableDataFromBrightcoveForPlaylist {
// show a 'loading' indicator and then tear down
BrightcoveDemoAppDelegate *delegate = (BrightcoveDemoAppDelegate *)[[UIApplication sharedApplication] delegate];
BCMediaAPI *bc = delegate.bcServices;
NSError *err;
BCPlaylist *playlist = [bc findPlaylistById:self.playlistId videoFields:[NSArray arrayWithObjects:@"id", @"FLVURL", @"thumbnailURL", @"name", @"shortDescription", @"renditions", nil] playlistFields:[NSArray arrayWithObjects:@"name", @"videos", nil] customFields:nil error:&err];
if (!playlist) {
[ErrorHandlerService logMediaAPIError:err];
}
self.videos = playlist.videos;
self.title = playlist.name;
[self.tableView reloadData];
}
BCPlaylist オブジェクトには動画リストが含まれています。
視聴者が Newest Videos ビューを選択すると、VideoTableViewController が割り当てられて、ナビゲーション コントローラに追加されます。VideoTableViewController が initWithNibAndType に対し、listType を RECENT_VIDEOS と指定して呼び出しを行います。initWithNibAndType メソッドでは loadTableDataFromBrightcoveForAllVideos に呼び出しが行われます。
- (void)loadTableDataFromBrightcoveForAllVideos {
//[self showLoaderScreen];
BrightcoveDemoAppDelegate *delegate = (BrightcoveDemoAppDelegate *)[[UIApplication sharedApplication] delegate];
BCMediaAPI *bc = delegate.bcServices;
BCSortOrderType sortOrder;
NSError *err;
BCItemCollection *videoCollection;
if (videoListType == POPULAR) {
sortOrder = BCSortByTypePlaysTrailingWeek;
}
else {
sortOrder = BCSortByTypeModifiedDate;
}
videoCollection = [bc findAllVideos:10 pageNumber:0 sortBy:sortOrder sortOrder:BCSortOrderTypeDESC getItemCount:NO videoFields:[NSArray arrayWithObjects:@"id", @"FLVURL", @"thumbnailURL", @"name", @"shortDescription", @"renditions", nil] customFields:nil error:&err];
if (!videoCollection) {
[ErrorHandlerService logMediaAPIError:err];
}
self.videos = videoCollection.items;
[self.tableView reloadData];
}
loadTableDataFromBrightcoveForAllVideos では、sortBy パラメータが BCSortByTypeModifiedDate に設定され、sortOrder が DESC に設定されます。これらのパラメータで BCMediaAPI.findAllVideos に呼び出しが行われます。動画の BCItemCollection が返されます。最高 10 本の動画が含まれます。
Popular Videos ビューを選択すると、VideoTableViewController が割り当てられて、ナビゲーション コントローラに追加されます。VideoTableViewController が initWithNibAndType に対し、listType を POPULAR と指定して呼び出しを行います。initWithNibAndType メソッドでは loadTableDataFromBrightcoveForAllVideos に呼び出しが行われます。loadTableDataFromBrightcoveForAllVideos では、sortBy パラメータが BCSortByTypePlaysTrailingWeek に設定され、sortOrder が DESC に設定されます。これらのパラメータで BCMediaAPI.findAllVideos に呼び出しが行われます。動画の BCItemCollection が、返されます。最高 10 本の動画が含まれます。
- (void)loadTableDataFromBrightcoveForAllVideos {
//[self showLoaderScreen];
BrightcoveDemoAppDelegate *delegate = (BrightcoveDemoAppDelegate *)
[[UIApplication sharedApplication] delegate];
BCMediaAPI *bc = delegate.bcServices;
BCSortOrderType sortOrder;
NSError *err;
BCItemCollection *videoCollection;
if (videoListType == POPULAR) {
sortOrder = BCSortByTypePlaysTrailingWeek;
}
else {
sortOrder = BCSortByTypeModifiedDate;
}
videoCollection = [bc findAllVideos:10 pageNumber:0 sortBy:sortOrder
sortOrder:BCSortOrderTypeDESC getItemCount:NO
videoFields:[NSArray arrayWithObjects:@"id", @"FLVURL", @"thumbnailURL", @"name",
@"shortDescription", @"renditions", nil] customFields:nil error:&err];
if (!videoCollection) {
[ErrorHandlerService logMediaAPIError:err];
}
self.videos = videoCollection.items;
[self.tableView reloadData];
}
Channel、Newest、Popular ビューのそれぞれの行において、左側ウィンドウに動画のサムネール、右側には動画のタイトルと短い説明が含まれます。これらは VideoTableViewController.tableView メソッドで投入されます。行が選択されると VideoPlayerService.playVideo メソッドが呼び出されて動画の再生を開始します。ローダー画面が表示され、動画のビットが十分ロードされるとネイティブ動画プレーヤにフェードインします。
ビューを BC Wall に切り替えると、BrightcoveWallViewController が割り当てられて、ナビゲーション コントローラに追加されます。指定された listType パラメータ(POPULAR あるいは NEWEST)で Brightcove Media API に呼び出しが行われ、最高 60 本の動画の BCItemCollection が返されます。BC ウォール ビューは、各ページ最大 15 動画、合計 4ページの動画サムネールからなります。
- (id)initWithType:(videoList) pListType {
[super init];
listType = pListType;
return self;
}
スクラバやトランスポート コントロールなどの Player ビューの主な機能は、Brightcove App SDK for iOS の一部ではありませんが、Cocoa Touch メディア プレーヤの中核をなすコンポーネントです。ただし、BCMoviePlayerController ラッパは、 Related Videos および Sharing コントロールに加え、Cocoa Touch メディア プレーヤへのインターフェイスを提供しています。
動画をプレイリストから選択すると、動画詳細ビューが、UINavigationController にプッシュされます。そこで動画を再生または共有することができます。
動画詳細ビューで共有ボタンを選択すると、共有ビューが開いて、電子メールおよび Twitter オプションが表示されます。
[Email] ボタンを選択すると、Apple が提供するアプリ内電子メール ビューが開きます。共有ビューを構成して、外部アプリを開くこともできます。
[Twitter] ボタンを選択すると、OAuth ログイン プロセスが始まり、ログイン後につぶやきを投稿できます。
サポートが必要な場合あるいは質問がある場合は、フォーラムを訪れてください。また、Brightcove iPhone SDK については Twitter (http://twitter.com/bciphonesdk) でもフォローできます。電子メールによるモバイル SDK に関する最新情報や発表の配信に登録することもできます。