GCKMediaQueue クラス

GCKMediaQueue クラス リファレンス

概要

任意の長さのメディアキューのデータモデル表現です。

このクラスは、メディアキュー UI を駆動するための UITableViewDataSource の実装の基礎として使用できます。

GCKMediaQueueGCKSessionManager イベントをリッスンし、キャスト セッションの開始時に自身を自動的に GCKRemoteMediaClient にアタッチします。GCKRemoteMediaClient からのキュー変更通知をリッスンし、それに応じて内部データモデルを更新します。同様に、GCKRemoteMediaClient を使用してキュー情報をオンデマンドで取得します。

このモデルは、キュー全体のキューアイテム ID のリストを保持します。キャスト セッションにアタッチされるたびに、このリストが自動的に取得されます。また、キューアイテム ID をキーとする GCKMediaQueueItems の LRU キャッシュ(サイズを構成可能)も保持されます。

メソッド itemAtIndex: (GCKMediaQueue) は、指定されたインデックスでキューアイテムを取得するために使用します。GCKMediaQueueItem が現在キャッシュに存在しない場合は、レシーバからそのアイテムを取得するための非同期リクエストが行われ、最終的にはリクエストされたアイテムを受信するとデリゲートに通知されます。

このメソッドが短時間に複数回呼び出された場合、リクエストされたアイテム ID が内部でバッチ処理されるため、ネットワーク リクエストの数を減らすことができます。レシーバーから一度に取得できるキューアイテムの数には上限があるため、GCKMediaQueue は、取得される直近の N 個のアイテム ID のローリング ウィンドウを保持します。そのため、短期間に非常に多くのアイテムがリクエストされた場合は、最後の N 個のアイテムのみが実際には取得されます。この動作により、ユーザーは素早くまたは頻繁にスクロールするアプリの UI で非常に長いキューを効率的に管理できます。

GCKMediaQueue は、キューを直接変更するメソッドを提供していません。このような変更には、(GCKRemoteMediaClient のメソッドを介した)レシーバへの非同期ネットワーク リクエストが含まれ、エラーで失敗する可能性があります。GCKMediaQueue では、レシーバーに存在するキューの表現に一貫性を持たせる必要があるため、ローカルでまだレシーバーに commit されていないデータモデルに変更を加えると、UI の動作が正しく表示されない可能性があります。

委譲プロトコルについては、GCKMediaQueueDelegate をご覧ください。

開始:
4.3.4

NSObject を継承します。

インスタンス メソッドの概要

(instancetype) - init
 
(instancetype) - initWithRemoteMediaClient:
 デフォルトのキャッシュ サイズとデフォルトの最大フェッチ数で新しい GCKMediaQueue を初期化します。その他...
 
(instancetype) - initWithRemoteMediaClient:cacheSize:
 指定されたキャッシュ サイズとデフォルトの最大フェッチ数で新しい GCKMediaQueue を初期化します。その他...
 
(instancetype) - initWithRemoteMediaClient:cacheSize:maxFetchCount:
 指定されたキャッシュ サイズと指定された最大フェッチ数で新しい GCKMediaQueue を初期化します。その他...
 
(void) - addDelegate:
 このオブジェクトの委任のリストに委任を追加します。その他...
 
(void) - removeDelegate:
 このオブジェクトの委任リストから委任を削除します。その他...
 
(nullable GCKMediaQueueItem *) - itemAtIndex:
 キュー内の指定したインデックスにあるメディアキュー アイテムを返します。アイテムが現在キャッシュにない場合はレシーバから取得するよう調整します。その他...
 
(nullable GCKMediaQueueItem *) - itemAtIndex:fetchIfNeeded:
 キュー内の指定したインデックスにあるメディアキュー アイテムを返します。アイテムが現在キャッシュに存在しない場合は、必要に応じてアイテムがレシーバから取得されるように調整します。その他...
 
(GCKMediaQueueItemID- itemIDAtIndex:
 キュー内の指定されたインデックスにあるアイテムのアイテム ID を返します。その他...
 
(NSInteger) - indexOfItemWithID:
 キュー内のキューアイテムのインデックスを検索します。その他...
 
(void) - reload
 キューを再読み込みします。その他...
 
(void) - clear
 キューを消去し、すべての要素を削除してキャッシュをフラッシュします。その他...
 

プロパティの概要

NSUInteger itemCount
 現在キューにあるアイテムの数。その他...
 
NSUInteger cacheSize
 キャッシュ サイズ。その他...
 
NSUInteger cachedItemCount
 現在キャッシュ内にあるキュー アイテムの数。その他...
 

メソッドの詳細

- (instancetype) initWithRemoteMediaClient: (GCKRemoteMediaClient *)  remoteMediaClient

デフォルトのキャッシュ サイズとデフォルトの最大フェッチ数で新しい GCKMediaQueue を初期化します。

- (instancetype) initWithRemoteMediaClient: (GCKRemoteMediaClient *)  remoteMediaClient
cacheSize: (NSUInteger)  cacheSize 

指定されたキャッシュ サイズとデフォルトの最大フェッチ数で新しい GCKMediaQueue を初期化します。

Parameters
cacheSizeThe cache size. Must be nonzero.
- (instancetype) initWithRemoteMediaClient: (GCKRemoteMediaClient *)  remoteMediaClient
cacheSize: (NSUInteger)  cacheSize
maxFetchCount: (NSUInteger)  maxFetchCount 

指定されたキャッシュ サイズと指定された最大フェッチ数で新しい GCKMediaQueue を初期化します。

Parameters
cacheSizeThe cache size. Must be nonzero.
maxFetchCountThe maxiumum fetch count with minimum being 1.
- (void) addDelegate: (id< GCKMediaQueueDelegate >)  delegate

このオブジェクトの委任のリストに委任を追加します。

Parameters
delegateThe delegate to add. The delegate will be retained until removeDelegate: is called.
- (void) removeDelegate: (id< GCKMediaQueueDelegate >)  delegate

このオブジェクトの委任リストから委任を削除します。

Parameters
delegateThe delegate to remove.
- (nullable GCKMediaQueueItem *) itemAtIndex: (NSUInteger)  index

キュー内の指定したインデックスにあるメディアキュー アイテムを返します。アイテムが現在キャッシュにない場合はレシーバから取得するよう調整します。

Parameters
indexThe index of the item to fetch.
戻り値
指定されたインデックスのアイテム。アイテムが現在キャッシュ内にないが非同期で取得される場合は nil
- (nullable GCKMediaQueueItem *) itemAtIndex: (NSUInteger)  index
fetchIfNeeded: (BOOL)  fetch 

キュー内の指定したインデックスにあるメディアキュー アイテムを返します。アイテムが現在キャッシュに存在しない場合は、必要に応じてアイテムがレシーバから取得されるように調整します。

Parameters
indexThe index of the item to fetch.
fetchWhether the item should be fetched from the receiver if it is not currently in the cache.
戻り値
指定されたインデックスのアイテム。アイテムが現在キャッシュ内にない場合は nil
- (GCKMediaQueueItemID) itemIDAtIndex: (NSUInteger)  index

キュー内の指定されたインデックスにあるアイテムのアイテム ID を返します。

戻り値
指定されたインデックスのアイテム ID。インデックスが無効な場合は kGCKMediaQueueInvalidItemID。
- (NSInteger) indexOfItemWithID: (GCKMediaQueueItemID itemID

キュー内のキューアイテムのインデックスを検索します。

Parameters
itemIDThe queue item ID.
戻り値
キュー内のアイテムのインデックス(基となる位置)。該当するアイテムがキューにない場合は NSNotFound です。
- (void) reload

キューを再読み込みします。

キャッシュがフラッシュされ、アイテム ID リストがレシーバーから再取得されます。

- (void) clear

キューを消去し、すべての要素を削除してキャッシュをフラッシュします。

物件の詳細

- (NSUInteger) itemCount
readnonatomicassign

現在キューにあるアイテムの数。

- (NSUInteger) cacheSize
readnonatomicassign

キャッシュ サイズ。

- (NSUInteger) cachedItemCount
readnonatomicassign

現在キャッシュ内にあるキュー アイテムの数。