タブ アプリのアプリ キャッシュ
アプリ キャッシュを使用すると、アプリのリハイドレート時に使用できる一部のリソースと資産をメモリに保持できるため、Teams 内のアプリの以降の起動時間が短縮されます。
アプリ キャッシュは、次の目的でサポートされています。
範囲 | Desktop | iOS | Android |
---|---|---|---|
サポートされている パブリック開発者プレビューでのみ使用できます |
サポートされている | サポートされている | |
Personal | ✔️ キャッシュの有効期間: 30 分 | ✔️ | ❌ |
チャット | ✔️ キャッシュの有効期間: 30 分 | ✔️ | ❌ |
チャネル | ✔️ キャッシュの有効期間: 30 分 | ✔️ | ❌ |
[会議] タブ | ✔️ キャッシュの有効期間: 30 分 | ✔️ | ❌ |
会議サイド パネルまたは会議内アプリ | ✔️ キャッシュの有効期間: 20 分 | ❌ | ❌ |
アプリのキャッシュを有効にする
アプリのキャッシュを有効にするには、次の手順に従います。
呼び出し
teamsCore.registerBeforeUnloadHandler
とteamsCore.registerOnLoadHandler
API。を使用
contentUrl
してentityId
読み込みハンドラーに渡して、アプリ内の正しいページにルーティングし、アプリnotifySuccess
notifyFailure
の初期化フローが完了したことを Teams クライアントに通知します。- contentUrl: コンテンツ ページ URL を追加します。
- entityId: 一意の識別子を追加します。
リソースを破棄し、ハンドラーで必要なクリーンアップを
beforeUnload
実行した後、コールバックをreadyToUnload
呼び出して、アプリのアンロード フローが完了したことを Teams クライアントに通知します。
アプリのキャッシュをオプトインするアプリの最初の起動のフロー図を次に示します (またはbeforeUnload
、アプリの最初の起動時にを登録load
します)。
キャッシュされたアプリの起動のフロー図を次に示します。
アプリのキャッシュをオプトインすると、ユーザーがウィンドウ内のアプリのさまざまなインスタンスに移動するときに、埋め込みアプリのホストに使用される Web ビューが再利用されます。 アプリのホストに使用される Web ビューは、ユーザーがアプリを離れると非表示になり、ユーザーがアプリに戻ったときに表示されます。
注:
アプリのキャッシュが有効になっていない場合、ユーザーがアプリを起動するたびに Web ビューが再作成されます。
アプリがキャッシュされない理由や、アプリがキャッシュから削除される理由は複数あります。その理由の一部は次のとおりです (ここでの数値は変更される可能性があります)。
- システム メモリの負荷が高い場合、アプリはキャッシュから削除されます。
- キャッシュされたアプリの数が最大キャッシュ サイズを超える場合は、最も古いキャッシュされたアプリがキャッシュから削除されます。
- Teams が通知を送信してから 30 秒以内にアプリからシグナルを
readyToUnload
受信しない場合、アプリはbeforeUnload
キャッシュされません。 - システム メモリが 4 GB 未満の場合、または使用可能なメモリが Windows の場合は 1 GB 未満、Mac では 512 MB の場合、アプリキャッシュは無効になります。
- サイド パネルは、会議でのアプリ キャッシュでサポートされている唯一の frameContext です。
- 招待されたユーザー数が 20 を超える会議では、アプリキャッシュはサポートされていません。
- アプリの読み込みに失敗した場合、アプリはキャッシュされません。
- iOS では、Teams アプリが終了すると、アプリはキャッシュから削除されます。
コード例
次のコード スニペットは、API と teamsCore.registerBeforeUnloadHandler
API のteamsCore.registerOnLoadHandler
例です。
microsoftTeams.teamsCore.registerOnLoadHandler((data) => {
console.log("got load from TEAMS", data.contentUrl, data.entityId);
// use contentUrl to route to correct page
// invoke notifySuccess when ready
app.notifySuccess();
});
microsoftTeams.teamsCore.registerBeforeUnloadHandler((readyToUnload) => {
// dispose resources and then invoke readyToUnload
readyToUnload();
return true;
});
ベスト プラクティス
データまたは Web ビューを iOS と Android にローカルに格納するには、Web ストレージまたはサービス ワーカー機能を実装することをお勧めします。 これにより、以降の起動でアプリの読み込みが速くなります。
制限事項
アプリキャッシュの制限事項を次に示します。
ページ ナビゲーションにクライアント側ルーティングを使用する単一ページ アプリは、アプリのキャッシュのメリットを得ることができます。 アプリ起動のすべてのコンテキストで同じドメインを使用することをお勧めします。
アプリは、、などのイベント
themeChange
focusEnter
を読み込みハンドラーに再登録する必要があります。 Teams クライアントは、キャッシュされたときにアプリに通知を送信しません。 キャッシュされた場合でもアプリに通知が必要な場合は、キャッシュが適切なソリューションではない可能性があります。アプリキャッシュは、Teams デスクトップ クライアントでのみサポートされます。 Teams Web クライアントでは、アプリが読み込みハンドラーを登録した場合でも、シーケンスの完了後にアプリがキャッシュ
unload
から削除されます。と
beforeUnload
ハンドラーをload
起動シーケンスの早い段階で登録します。 ユーザーがアプリを離れる前に Teams クライアントにこれらの登録が表示されない場合、アプリはキャッシュされません。Teams クライアントは、アプリの
loadHandler
シーケンスが完了したunload
後にのみ を呼び出します。 たとえば、ユーザーがアプリのタブ A を起動し、同じアプリのタブ B を起動した場合、タブ A がコールバックを呼び出すまで、タブ B は読み込みシグナルをreadyToUnload
取得しません。アプリはウィンドウごとにキャッシュされます。 アプリキャッシュは、同じウィンドウ内の (タブごとにではなく) アプリごとに行われます。
アプリキャッシュは、会議ステージまたはダイアログ (TeamsJS v1.x ではタスク モジュールと呼ばれます) コンテキストではサポートされていません。これは、タブの上で開くことができるため、同じ Web ビューを使用してタブとダイアログのコンテンツをレンダリングできないためです。
アプリがアプリのキャッシュを
beforeUnload
必要としないが、状態を安全に保存する時間が必要な場合は、ハンドラーのみを登録します (アプリを離れると、アプリのコンテンツがドキュメント オブジェクト モデル (DOM) から突然削除される可能性があるため)。 アプリがイベントにload
登録されていない場合、フローが完了するとunload
DOM から削除されます。このセクションのガイドラインに従って、Teams 会議でアプリをアプリ キャッシュにオンボードします。 会議でのみアプリ キャッシュのサポートを行う場合は、コンテキストが の場合は
load
sidePanel
、 またはbeforeUnload
ハンドラーを登録します。アプリはキャッシュ時にスリープすることが予想されます (最小限のコンピューティングリソースまたはネットワーク リソースを使用し、SDK 要求を最小限に抑えます)。 アプリがキャッシュされると、すべての登録ハンドラーと次の SDK 要求が許可されます。
initialize
notifyappLoaded
notifySuccess
notifyFailure
notifyExpectedFailure
getContext
getAuthToken
readyToUnload
getConfig/getSettings
アプリキャッシュは、 新しい Teams クライアントではサポートされていません。
トラブルシューティング
アプリがキャッシュされていませんか? 後続のナビゲーションでロード ハンドラーが呼び出されないのはなぜですか?
システムと使用可能なメモリ制約が満たされているかどうかを確認します。
キャッシュ時のメモリ 占有領域を減らします。 ハンドラーを
beforeUnload
使用してリソースを破棄します。たとえば、参照の解放や、キャッシュ時に不要な可能性があるイベント リスナーの削除を行います。
コード サンプル
サンプルの名前 | 説明 | Node.js |
---|---|---|
アプリのキャッシュ | 会議のサイド パネルでアプリのキャッシュのしくみを示すサンプル アプリ。 | 表示 |
関連項目
Platform Docs
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示