.NET MAUI アプリケーションをモニターするには、アプリケーションをインストゥルメント化して、.NET MAUI エージェントがモバイルメトリックを収集できるようにする必要があります。

アプリケーションをインストゥルメント化するには、次のセクションを参照してください。

MAUI エージェントサポートの確認

MAUI エージェントは以下をサポートします。

  • プラットフォーム:
    • iOS
    • Android
  • ライブラリ:
    • net6.0-ios(AppDynamics.Agent.MAUI または AppDynamics.Agent バージョン 2022.9.0 以降)
    • net6.0-android(AppDynamics.Agent.MAUI または AppDynamics.Agent バージョン 2022.9.0 以降)
  • .NET バージョン 6 以降

制限事項

MAUI エージェントには、クラッシュデータが報告される対象に次の制限があります。

  • Reported:管理対象のクラッシュ - .NET ランタイムで発生するクラッシュ)。
  • Not reported:ネイティブクラッシュ - Objective-C ランタイムで発生するクラッシュ

MAUI エージェント インストゥルメンテーション パッケージの選択

MAUI エージェントは、.NET MAUI アプリケーションに追加するインストゥルメンテーション パッケージです。アプリケーションのニーズに応じて、次のインストゥルメンテーション パッケージのいずれかを選択します。

  • AppDynamics.Agent.MAUI には、iOS および Android アプリケーションのインストゥルメンテーション、および MAUI UI 要素のインストゥルメンテーションが含まれます。
  • AppDynamics.Agent には iOS および Android アプリケーションのインストゥルメンテーションが含まれますが、MAUI の依存関係はありません。

Maui エージェントパッケージの追加

NuGet ギャラリーからアプリケーションに MAUI エージェントパッケージを追加するには、Visual Studio にパッケージをインストールして使用する手順を参照してください。

アプリケーションへの初期化コードの追加

アプリケーションに初期化コードを追加するには、MauiAppBuilder の MauiProgramCreateMauiApp() 内で UseAppDymamics() を呼び出します。

public static MauiApp CreateMauiApp()
{
    var builder = MauiApp.CreateBuilder();
    builder
        .UseMauiApp<App>()
        .UseAppDynamics();

    return builder.Build();
}
CODE

EUM アプリケーションキーの取得

EUM アプリケーションキーは、エンドユーザーデータを特定のエンドユーザー モニタリング アプリケーションに関連付けるために使用される一意の識別子です。各 .NET MAUI アプリケーションは、通常、1 つの EUM アプリケーションキーに関連付けられます。アプリケーションをモニターするには、EUM アプリケーションキーを MAUI エージェント インストゥルメンテーション パッケージに追加する必要があります。 

コントローラで EUM アプリケーションキーを取得するには、次の手順を実行します。

  1. User Experience に進みます。
  2. [Mobile Apps] タブで、[Add App > Cross Platform] をクリックします。
  3. ステップ 1 で、モバイル アプリケーション グループを選択します。
  4. ステップ 2 で、Xamarin フレームワークを選択します。

[Getting Started Wizard] を完了したが、EUM アプリケーションキーを持っていない場合は、「アプリケーションキーの取得」を参照してください。

(Android のみ)必要なアクセス許可の追加

Android アプリケーションの Properties/AndroidManifest.xml ファイルで、次のアクセス許可を確認します(存在しない場合は追加します)。

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
XML

エージェントの初期化

アプリケーションのタイプに応じて、エージェントを初期化する 2 つのオプションがあります。

  • クロスプラットフォーム アプリケーションの場合:次の初期化コードを App.xaml.cs ファイルに追加します。これは、クロスプラットフォーム アプリケーション(iOS と Android の両方)で使用できます。

    public App()
    {
        InitializeComponent();
        // This initialization code is used by both iOS and Android apps.
        var config = AppDynamics.Agent.AgentConfiguration.Create(<EUM_APP_KEY>);
        AppDynamics.Agent.Instrumentation.InitWithConfiguration(config);
        MainPage = new MainPage();
    }
    C#
  • ネイティブアプリケーションの場合:
    • iOS:アプリケーションの AppDelegate の FinishedLaunching メソッドに次の初期化コードを追加します。

      public class AppDelegate : UIApplicationDelegate
      {
         ...
         public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
         {
             // The two lines below initialize the AppDynamics instrumentation.
             var config = AppDynamics.Agent.AgentConfiguration.Create(<EUM_APP_KEY>);
             AppDynamics.Agent.Instrumentation.InitWithConfiguration(config);
             ...
             return true;
          }
          ...
      }
      CODE
    • Android:アプリケーションの MainActivity OnCreate メソッドの下に次の初期化コードを追加します。

      class MainActivity 
      { 
        protected override void OnCreate(Bundle savedInstanceState) 
        {
          // The two lines below initialize the AppDynamics instrumentation.
          var config = AppDynamics.Agent.AgentConfiguration.Create(<EUM_APP_KEY>);
          AppDynamics.Agent.Instrumentation.InitWithConfiguration(config);
          ...
        }
      }
      CODE

(オプション)オンプレミス EUM サーバーへのポイント

オンプレミス EUM サーバーを使用するには、EUM アプリケーションキーを使用してインストゥルメンテーションを初期化するときに、オンプレミス EUM サーバーに URL を渡します。

var config = AppDynamics.Agent.AgentConfiguration.Create(<EUM_APP_KEY>);
config.CollectorURL = <COLLECTOR_URL:PORT>;
AppDynamics.Agent.Instrumentation.InitWithConfiguration(config);
CODE

地域ごとのオンプレミス EUM サーバー URL のリストについては、https://docs.appdynamics.com/paa/saas-domains-and-ip-ranges を参照してください。

アプリケーションの構築

Visual Studio からアプリケーションを実行して構築します。開始ウィザードから、アプリケーションが接続され、インストゥルメンテーションが検証されていることがわかります。

(iOS のみ)追加の引数の追加

iOS アプリケーションの場合、ランタイムエラーを回避するために、simulator 構成に追加の MtouchExtraArgs --registrar:static を追加する必要があります。これは、すでに物理デバイスのデフォルトです。MAUI プロジェクトに次の引数を追加します。

<PropertyGroup Condition="$(TargetFramework.Contains('-ios'))">
    <MTouchExtraArgs>--registrar:static</MTouchExtraArgs>
</PropertyGroup>
C#

(オプション)自動インストゥルメンテーションの有効化

MAUI エージェントを設定すると、固有のインストゥルメンテーション コードをプロジェクトに自動的に挿入できます。AppDynamics.Agent.AutoInstrument.Fody という名前の別のベータ版 NuGet パッケージを使用して実現できます。

自動インストゥルメンテーションにより、次のことが可能になります。

  1. HttpClient または Refit ネットワークリクエストを自動的にトラッキング
  2. MAUI ページを自動的にトラッキング
  3. MAUI UI 要素を自動的にトラッキング

Automatic Instrumentation パッケージのセットアップ

自動インストゥルメンテーション パッケージ AppDynamics.Agent.AutoInstrument.Fody を設定する前に、上記のエージェント インストゥルメンテーションの設定を完了し、プロジェクトに AppDynamics.Agent または AppDynamics.Agent.MAUI パッケージを追加していることを確認してください。 

  1. AppDynamics.Agent.AutoInstrument.Fody パッケージを追加します。 

    AppDynamics.Agent.AutoInstrument.Fody ベータ版パッケージをインストールするには、[Include prereleases] オプションをオンにして、このバージョンが表示されるようにします。

     

  2. ソリューションを構築します。

    ソリューションを構築すると、次の 2 つのファイルが自動的に生成されます。

    • FodyWeavers.xml
    • FodyWeavers.xsd 

    これらのファイルはソース管理にチェックインする必要があります。 

    上記のファイルが自動的に生成されない場合は、次の内容を持つ FodyWeavers.xml という名前の新しいファイルを手動で作成する必要があります。

    <Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
      <AppDynamics.Agent.AutoInstrument/>
    </Weavers>
    C#

    プロジェクトですでに Fody が使用されている場合、これらのファイルはすでにそこにあり、AppDynamics.Agent.AutoInstrument ウィーバを含むように FodyWeavers.xml ファイルを更新するだけで済みます。 

    次に例を示します。

    <Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
      ... Existing weavers ...
      <AppDynamics.Agent.AutoInstrument/>
    </Weavers>
    C#

(オプション)インストゥルメンテーションのカスタマイズ

MAUI SDK を使用して、MAUI エージェントのインストゥルメンテーションをさらにカスタマイズできます。SDK には追加のクラスがあり、収集して Splunk AppDynamics に報告できるアプリケーションデータの種類を拡張できます。「MAUI インストゥルメンテーションのカスタマイズ」を参照してください。