NoaInformationDownloadCallbacks
Informationのダウンロードに関連するイベントを設定します。
NoaInformationDownloadCallbacksを継承したクラスをNoaInformationに引き渡すことで、ダウンロードに関連するイベントをカスタマイズできます。
オーバーライド可能な要素
Methods
| メソッド名 | 説明 |
|---|---|
| OnBeforeConversion(downloadInfo) | ダウンロード対象のデータを文字列に変換する前に実行するメソッドです。 引数と返り値はどちらもタブ名とシステム項目のグループリストを保持するIReadOnlyDictionary<InformationTabType, IReadOnlyList<InformationGroup>>です。 値を編集して返した場合はNOA DebuggerのJSON変換処理に反映します。 |
| OnBeforeDownload(info) | NoaDownloadCallbacks.OnBeforeDownload(info)を参照してください。 |
| OnAfterDownload(info, status) | NoaDownloadCallbacks.OnAfterDownload(info, status)を参照してください。 |
Properties
| プロパティ名 | 説明 |
|---|---|
| IsAllowBaseDownload | NoaDownloadCallbacks.IsAllowBaseDownloadを参照してください。 |
関連する型
INoaInformationDownloadCallbacks
NoaInformationDownloadCallbacks.OnBeforeConversionは、このインターフェースで定義しています。
カスタムクラスで複数のコールバックの定義を集約したい場合や、既存のカスタムクラスを継承しつつコールバック機能を追加したい場合は、NoaInformationDownloadCallbacksクラスの代わりにこのインターフェースを利用することで実現できます。
InformationGroup
NoaInformationDownloadCallbacksのOnBeforeConversionメソッドで使用する、システム情報のグループを表すクラスです。
読み取り専用のグループ名と、グループ内のプロパティ(キーと値のペア)を保持します。
| プロパティ名 | 説明 |
|---|---|
| Name | 読み取り専用のグループ名です。 |
| KeyValues | システム項目名と値のペアを保持する読み取り専用のDictionaryです。 |
InformationTabType
NoaInformationDownloadCallbacksのOnBeforeConversionメソッドで使用する、Informationタブの種類を表す列挙型です。
| 要素名 | 説明 |
|---|---|
| App | Appタブを表します。 |
| Device | Deviceタブを表します。 |
| Custom | Customタブを表します。 |
NoaInformationDownloadInfo
NoaInformationDownloadCallbacksのOnBeforeConversionメソッドで使用する、Informationダウンロード情報を表す構造体です。
InformationTabTypeをキーとし、各タブに含まれるグループのリストを値として保持します。
| プロパティ名 | 説明 |
|---|---|
| InformationGroups | タブタイプとInformationGroupのリストのペアを保持する読み取り専用のDictionaryです。 |
サンプルコード
#if NOA_DEBUGGER
using NoaDebugger;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
// NOA DebuggerのInformationダウンロード処理前後にイベントを実行する場合の例(クラス利用)
public class ExampleInformationDownloader : NoaInformationDownloadCallbacks
{
public override NoaInformationDownloadInfo OnBeforeConversion(NoaInformationDownloadInfo downloadInfo)
{
// "App"タブのグループ件数をログ出力
if (downloadInfo.InformationGroups.TryGetValue(InformationTabType.App, out var appGroups))
{
Debug.Log($"Information download. App group count: {appGroups.Count}");
foreach (var group in appGroups)
{
Debug.Log($"Group: {group.Name}");
foreach (var kvp in group.KeyValues)
{
Debug.Log($" {kvp.Key}: {kvp.Value}");
}
}
}
// Customタブをダウンロード対象外にする例
return new NoaInformationDownloadInfo(
downloadInfo.InformationGroups.Where(kvp => kvp.Key != InformationTabType.Custom)
);
}
// 継承元のINoaDownloadCallbacksのメソッドも使用可能
public override NoaDownloadInfo OnBeforeDownload(NoaDownloadInfo info)
{
info.FileName = $"Sample-{info.FileName}";
return info;
}
public override void OnAfterDownload(NoaDownloadInfo info, NoaDownloadStatus status)
{
Debug.Log($"Download finished with status: {status}");
}
}
// 複数の機能で共通処理を実装したい場合の例(インターフェース利用)
public class ExampleCommonDownloader : INoaDownloadCallbacks
{
// IsAllowBaseDownloadをtrueに設定することでNOA Debuggerのダウンロード処理を許可
public bool IsAllowBaseDownload => true;
public NoaDownloadInfo OnBeforeDownload(NoaDownloadInfo info)
{
Debug.Log($"Download file name: {info.FileName}");
return info;
}
public void OnAfterDownload(NoaDownloadInfo info, NoaDownloadStatus status)
{
Debug.Log($"Download finished with status: {status}");
}
}
public class ExampleDerivedInformationDownloader : ExampleCommonDownloader, INoaInformationDownloadCallbacks
{
public NoaInformationDownloadInfo OnBeforeConversion(NoaInformationDownloadInfo downloadInfo)
{
// 特定のグループ内のプロパティを除外する例
var modifiedGroups = new Dictionary<InformationTabType, IReadOnlyList<InformationGroup>>();
foreach (var tabKvp in downloadInfo.InformationGroups)
{
var modifiedGroupsList = new List<InformationGroup>();
foreach (var group in tabKvp.Value)
{
// "Test"を含むキーを除外して新しいDictionaryを作成
var filteredKeyValues = group.KeyValues
.Where(kvp => !kvp.Key.Contains("Test"))
.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
// 新しいInformationGroupを作成
var modifiedGroup = new InformationGroup(group.Name, filteredKeyValues);
modifiedGroupsList.Add(modifiedGroup);
}
modifiedGroups[tabKvp.Key] = modifiedGroupsList;
}
return new NoaInformationDownloadInfo(modifiedGroups);
}
}
#endif
