ベースコード
ベースコードは、Adobe Experience Platform Web SDKが非同期で読み込まれる間に、コマンドをキューに入れることでブートストラップを有効にします。 ベースコードの実行後、競合状態やライブラリの読み込み完了時のタイミングを心配することなく、configureやsendEventなどのコマンドをすばやく呼び出すことができます。 Web SDKの読み込みが完了すると、キューに入れたコマンドは、先入れ先出し順(キューに入れたのと同じ順序)で実行されます。
キューに登録されている場合でも、コマンドはPromiseを返します。 コマンドがキューに入れられた場合、Web SDKの読み込みが完了したときにコマンドが実行された後、Promiseは解決または拒否します。 Web SDKの読み込みが完了しない場合(例えば、ライブラリの読み込みに失敗した場合)、キューに登録されたPromiseは保留中のままになります。
基本コードの追加
Web SDKを呼び出す可能性のあるスクリプトの前に、<head> タグ内で可能な限り高いベースコードを配置します。
<script>
!function(n,o){o.forEach(function(o){n[o]||((n.__alloyNS=n.__alloyNS||
[]).push(o),n[o]=function(){var u=arguments;return new Promise(
function(i,l){n.setTimeout(function(){n[o].q.push([i,l,u])})})},n[o].q=[])})}
(window,["alloy"]);
</script>
基本コードを追加したら、選択したメソッド(JavaScript ライブラリローダーまたは タグ埋め込みコード )を使用してWeb SDKを読み込みます。 タグベースの実装の場合、ベースコードはWeb SDK タグ拡張機能2.34.0以降でサポートされています。
この基本コードは、次のシナリオでは not が必要です:
- JavaScriptライブラリを同期してロードする場合。 ライブラリを取得して実行する際の同期読み込みブロックの解析。
- タグ拡張機能を使用する場合、Web SDKへのすべての呼び出しは、タグルールまたはアクション内で行われます。 実装がタグライブラリの外部でWeb SDKを参照する場合にのみ、ベースコードを含める必要があります。 ほとんどのタグ実装では、通常、タグライブラリの外部でWeb SDKを呼び出さないため、ほとんどのタグ実装ではベースコードは必要ありません。
例
このコード例のコメントを参照して、コマンドのキューおよび解決方法のタイミングを把握します。 この例は、JavaScript ライブラリとタグ拡張機能の両方に適用されます。
<head>
<script>
// Calls made before the base code runs are not captured (alloy is not yet defined).
// Always make sure that the base code runs before any attempt to call commands.
// alloy("getLibraryInfo").then(console.log).catch(console.error);
</script>
<!-- Base code -->
<script>
!function(n,o){o.forEach(function(o){n[o]||((n.__alloyNS=n.__alloyNS||
[]).push(o),n[o]=function(){var u=arguments;return new Promise(
function(i,l){n.setTimeout(function(){n[o].q.push([i,l,u])})})},n[o].q=[])})}
(window,["alloy"]);
</script>
<!-- Queued command -->
<script>
alloy("getLibraryInfo").then(result => {
console.log("Queued call resolved:", result);
}).catch(console.error);
</script>
<!-- Load the Web SDK using the JavaScript loader -->
<script src="https://cdn1.adoberesources.net/alloy/<VERSION>/alloy.min.js" async></script>
<!-- or the tag extension -->
<!-- <script src=".../launch-<ENV>.min.js" async></script> -->
<!-- Another call (queued if the library is still loading; immediate if it is ready) -->
<script>
alloy("getLibraryInfo").then(result => {
console.log("Immediate call resolved:", result);
}).catch(console.error);
</script>
</head>
SDK インスタンスの名前を変更
ベースコードの最後の行を変更することで、呼び出すグローバル関数の名前を変更できます。 変更:
(window,["alloy"]);
宛先:
(window,["ingot"]);
この変更により、alloyではなくingotを使用してコマンドを呼び出すことができます。
ingot("configure", {
datastreamId: "ebebf826-a01f-4458-8cec-ef61de241c93",
orgId: "ADB3LETTERSANDNUMBERS@AdobeOrg"
});
複数のSDK インスタンス
必要に応じて、ベースコードを使用して、1つのページに複数のSDK インスタンスを設定できます。 詳しくは、複数のWeb SDK インスタンスを使用を参照してください。