概要
コンテナを開くためのヘルパークラス。
これは、タイムアウトをサポートする呼び出し元用の openContainerById:callback: (TAGManager) メソッドのラッパーです。
次のサンプルでは、コンテナが読み込まれるまで最大 0.1 秒待ってから、デフォルトのコンテナに戻します。
NSTimeInterval timeout = 0.1;
TagManager *tagManager = [TagManager instance];
TAGContainerFuture *future =
[TAGContainerOpener openContainerWithId:@"GTM-XXXX"
tagManager:tagManager
openType:kTAGOpenTypePreferNonDefault
timeout:&timeout];
TAGContainer *container = [future get];
呼び出し元がコンテナが利用可能になったときに非同期で通知を受け取りたいが、タイムアウトを 0.5 秒に手動で指定する場合は、呼び出し元は TAGContainerOpenerNotifier をサブクラス化して openContainerWithId:tagManager:openType:timeout:notifier: (TAGContainerOpener) を呼び出し、タイムアウトを 0.5 に設定して、container handleAvailable: (TAGContainerOpenerNotifier-p) に実装を追加する必要があります。
静的パブリック メンバー関数 | |
| (id< TAGContainerFuture >) | + openContainerWithId:tagManager:openType:timeout: |
コンテナが読み込まれるまで最大 timeout 秒待機し(指定された openType に応じて、デフォルトまたは最新ではありません)、TAGContainerFuture を返します。 | |
| (void) | + openContainerWithId:tagManager:openType:timeout:notifier: |
コンテナが読み込まれるまで最大 timeout 秒待機し(指定された openType に応じて、デフォルトまたは最新ではありません)、コンテナが利用可能になったら Notifier を呼び出します。 | |
| (NSTimeInterval) | + defaultTimeout |
| コンテナをリクエストする際のデフォルトのタイムアウトを返します。 | |
メンバー関数のドキュメント
| + (id<TAGContainerFuture>) openContainerWithId: | (NSString *) | containerId | |
| tagManager: | (TAGManager *) | tagManager | |
| openType: | (TAGOpenType) | openType | |
| timeout: | (NSTimeInterval *) | タイムアウト | |
コンテナが読み込まれるまで最大 timeout 秒待機し(指定された openType に応じて、デフォルトまたは最新ではありません)、TAGContainerFuture を返します。
オープンタイプが kTAGOpenTypePreferNonDefault の場合、デフォルト以外の(保存またはネットワークから取得)コンテナが読み込まれ、次のいずれかが発生するとすぐに TAGContainerFuture のブロックが解除されます。
- 保存されたコンテナが読み込まれます。
- 保存されたコンテナがない場合、ネットワーク コンテナが読み込まれるか、ネットワーク エラーが発生した場合に行われます。
- タイマーが期限切れになります
ネットワーク エラーが発生した場合やタイマーの期限が切れた場合、get (TAGContainerFuture-p) はデフォルトのコンテナを返すことがあります。
オープンタイプが kTAGOpenTypePreferFresh の場合、新しい(保存またはネットワークから取得)コンテナが読み込まれ、次のいずれかが発生するとすぐに TAGContainerFuture のブロックが解除されます。
- 読み込まれた新しいコンテナが読み込まれます。
- 保存されたコンテナがない場合や保存されたコンテナが古くなっている場合は、ネットワーク コンテナが読み込まれるか、ネットワーク エラーが発生しました。
- タイマーが期限切れになります
ネットワーク エラーが発生したり、タイマーが期限切れになったりした場合は、get (TAGContainerFuture-p) にデフォルトのコンテナまたは古い保存済みコンテナが含まれることがあります。
指定された containerId で openContainer メソッドの 1 つを 2 回目に呼び出すと、TAGContainerFuture が返され、その get (TAGContainerFuture-p) は最初の呼び出しと同じコンテナを返します。
- パラメータ:
-
containerId 読み込むコンテナの ID。 tagManager コンテナを取得するための TAGManager。 timeout 保存済みストアからコンテナを読み込むのを待機する最大秒数。nil の場合、defaultTimeout が使用されます。 openType コンテナを開く方法。
- 戻り値:
- 最大で
timeoutまで待機し、利用可能になった時点でコンテナを返す TAGContainerFuture。
| + (void) openContainerWithId: | (NSString *) | containerId | |
| tagManager: | (TAGManager *) | tagManager | |
| openType: | (TAGOpenType) | openType | |
| timeout: | (NSTimeInterval *) | タイムアウト | |
| Notifier: | (id< TAGContainerOpenerNotifier >) | 通知者 | |
コンテナが読み込まれるまで最大 timeout 秒待機し(指定された openType に応じて、デフォルトまたは最新ではありません)、コンテナが利用可能になったら Notifier を呼び出します。
オープンタイプが kTAGOpenTypePreferNonDefault の場合、デフォルト以外の(保存またはネットワークから取得)コンテナが読み込まれ、Notifier に渡されます。次のいずれかが発生するとすぐに Notifier が呼び出されます。
- 保存されたコンテナが読み込まれます。
- 保存されたコンテナがない場合、ネットワーク コンテナが読み込まれるか、ネットワーク エラーが発生した場合に行われます。
- タイマーが期限切れになります
ネットワーク エラーが発生するか、タイマーが期限切れになると、Notifier に渡されるコンテナがデフォルトのコンテナになります。
オープンタイプが kTAGOpenTypePreferFresh の場合、新しい(保存またはネットワークから取得)コンテナが読み込まれ、Notifier に渡されます。次のいずれかが発生するとすぐに Notifier が呼び出されます。
- 読み込まれた新しいコンテナが読み込まれます。
- 保存されたコンテナがない場合や保存されたコンテナが古くなっている場合は、ネットワーク コンテナが読み込まれるか、ネットワーク エラーが発生しました。
- タイマーが期限切れになります
ネットワーク エラーが発生したり、タイマーが期限切れになったりすると、Notifier に渡されるコンテナにデフォルトのコンテナや、古い保存済みコンテナが含まれることがあります。
指定された containerId を使用して、いずれかの openContainer メソッドを再度呼び出すと、前の呼び出しで返されたコンテナが利用可能になり次第、Notifier に渡されます。
- パラメータ:
-
containerId 読み込むコンテナの ID。 tagManager コンテナの取得に使用される TAGManager。 openType コンテナを開く方法。 timeout 保存済みストアからコンテナを読み込むのを待機する最大秒数。nil の場合、defaultTimeout が使用されます。 Notifier コンテナが使用可能になると呼び出されるオプションの Notifier。使用可能な場合、新しいコンテナで呼び出され、タイムアウトの前に読み込まれます。新規でないコンテナで呼び出されます。Notifier は別のスレッドから呼び出すことができます。
| +(NSTimeInterval)defaultTimeout |
コンテナをリクエストする際のデフォルトのタイムアウトを返します。
- 戻り値:
- デフォルトのタイムアウト(秒単位)。