> ## Documentation Index
> Fetch the complete documentation index at: https://moengage.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Flutter SDK の概要

> プッシュ通知、アプリ内メッセージ、イベントトラッキングのために MoEngage Flutter SDK の利用を開始します。

# 概要

MoEngage の Flutter SDK を使用すると、Flutter で構築された iOS および Android アプリケーションに MoEngage を統合できます。プッシュ通知、アプリ内メッセージ、カード、ユーザー属性、イベントなど、さまざまな機能を利用できます。

サンプルコードについては、[GitHub リポジトリ](/docs/ja/developer-guide/flutter-sdk/sample-app/flutter-sample-app)を参照してください。この記事では、Flutter で MoEngage の機能を実装する手順について説明します。

<Info>
  MoEngage が Flutter SDK の新しいバージョンをリリースするたびに通知を受け取れるようになりました。詳細については、[MoEngage SDK リリースの購読](/docs/ja/release-notes/sdks/flutter)を参照してください。
</Info>

<Note>
  統合を行う前に、サポートされている SDK バージョンと非推奨のスケジュールについて [SDK 非推奨ポリシー](/docs/ja/developer-guide/sdk-lifecycle-and-policies/sdk-deprecation-policy)を確認してください。
</Note>

# SDK のインストールと初期化

**ステップ 1: インストール**

MoEngage の Flutter SDK をアプリケーションに追加するには、[インストール方法](/docs/ja/developer-guide/flutter-sdk/sdk-integration/sdk-installation/framework-dependency)を参照してください。

**ステップ 2: ネイティブセットアップの完了**\
インストールを完了するためのプラットフォーム固有のネイティブセットアップ手順は、次の記事で説明しています。

* [Android のセットアップ](/docs/ja/developer-guide/flutter-sdk/sdk-integration/sdk-installation/android)
* [iOS のセットアップ](/docs/ja/developer-guide/flutter-sdk/sdk-integration/sdk-installation/ios)
* [Web のセットアップ](/docs/ja/developer-guide/flutter-sdk/sdk-integration/sdk-installation/framework-dependency)

**ステップ 3: フレームワークの初期化**\
[フレームワークの初期化](/docs/ja/developer-guide/flutter-sdk/sdk-integration/sdk-initialization/manual-initialization/framework-initialization)メソッドを呼び出して、MoEngage プラグインのインスタンスを初期化します。

**ステップ 4: プラットフォームの初期化**\
SDK を初期化し、データセンターを設定するためのプラットフォーム固有の手順は、次の記事で説明しています。

* [Android](/docs/ja/developer-guide/flutter-sdk/sdk-integration/sdk-initialization/manual-initialization/android-sdk-initialization)
* [iOS](/docs/ja/developer-guide/flutter-sdk/sdk-integration/sdk-initialization/manual-initialization/ios-sdk-initialization)
* [Web](/docs/ja/developer-guide/flutter-sdk/sdk-integration/sdk-initialization/web-sdk-initialization)

# データトラッキング

データトラッキングにより、アプリはユーザーの行動を監視・分析して、エンゲージメント戦略を最適化できます。データトラッキングでは、ログイン、ログアウト、イベントトラッキングなどのさまざまなユーザーアクションを、データの破損を防ぐ方法でトラッキングします。データトラッキングを実装するには、次の方法を使用します。

* **インストール/アップデートの区別 -** 新規インストールとアップデートを個別にトラッキングするには、この[記事](/docs/ja/developer-guide/flutter-sdk/data-tracking/install-update-differentiation)の方法を参照してください。
* **ログイン、ログアウトのトラッキングと一意の ID の設定** - データの破損を防ぐため、ユーザーのログインとログアウトを処理する際には、次の記事に記載されている手順に従うことが重要です。
  * [ログインのトラッキングとユーザー ID の設定](/docs/ja/developer-guide/flutter-sdk/data-tracking/setting-unique-id-for-sdk-versions-below-920)
  * [ログアウトのトラッキング](/docs/ja/developer-guide/flutter-sdk/data-tracking/setting-unique-id-for-sdk-versions-below-920)
  * [ユーザー属性の一意の ID の更新](/docs/ja/developer-guide/flutter-sdk/data-tracking/setting-unique-id-for-sdk-versions-below-920)\
    \
    アプリの各ユーザーに一意の ID を用意することが不可欠です。この ID は setUniqueId() を使用して MoEngage SDK に渡すことができます。この一意の ID により、複数のインストールやプラットフォームをまたいでユーザーを正しく識別し、統合されたビューを提供できます。

    ユーザーがアプリからログアウトしたら、logout() を呼び出して新しいユーザーの作成を開始することが重要です。この手順は、新しいユーザーが行った後続のアクティビティが、以前にログインしていたユーザーに誤って帰属され、ユーザーデータが歪むことを防ぐために必要です。
* **ユーザー属性のトラッキング** - ユーザープロファイルで利用可能なカスタム属性を設定するには、[こちらの記事](/docs/ja/developer-guide/flutter-sdk/data-tracking/tracking-user-attributes-and-user-identity)の方法を参照してください。
* **イベントのトラッキング** - イベントのトラッキングとは、ユーザーのアクションを、そのアクションを説明するプロパティとともに記録することです。カスタムイベントをトラッキングするには、[こちらの記事](/docs/ja/developer-guide/flutter-sdk/data-tracking/tracking-events)の方法を参照してください。
* **広告識別子トラッキングの有効化（Android のみ）** - MoEngage SDK は、パーソナライズされたコンテンツを配信するためにデバイス ID（永続的なデバイス識別子）を使用してユーザーを一意に識別し、アプリが許可している場合はこれを AAID に関連付けます。これにより、プッシュ通知を送信できるデバイスを正確に識別し、ユーザーの再インストールを長期にわたってトラッキングできます。ユーザーの同意を得た後に AAID のトラッキングを有効化するには、[こちらの記事](/docs/ja/developer-guide/android-sdk/data-tracking/basic/enable-advertising-identifier-tracking)の方法を参照してください。

# プッシュ通知

プッシュキャンペーンは、アプリまたは Web サイトの通知を通じてユーザーをターゲットにします。必要な機能に応じて、以下の統合手順に従ってプッシュ通知を統合してください。

## 基本セットアップ - Android

MoEngage を使用して Android デバイスでプッシュ通知を有効にするには、このセクションで説明する基本セットアップに従ってください。

* **MoEngage ダッシュボードでの FCM セットアップ -** FCM 認証は、Android デバイスにインストールされたアプリにプッシュ通知を送信できるようにするための方法です。MoEngage が Firebase サービスにアクセスできるよう認証するには、[こちらの記事](/docs/ja/developer-guide/android-sdk/push/basic/fcm-authentication)に記載されている方法を使用してください。
* **プッシュ通知のメタデータの追加 -** [こちらの記事](/docs/ja/developer-guide/android-sdk/push/basic/push-configuration)の方法を使用して、スモールアイコンとラージアイコンの drawable、およびプッシュ通知を処理するためのその他のオプションを設定します。
* **Android 通知のランタイム権限** - アプリケーションが Android 13 で実行されている場合、ユーザーに通知を表示するには、アプリケーションがユーザーに通知権限をリクエストする必要があります。権限リクエストを処理するには、[こちらの記事](/docs/ja/developer-guide/flutter-sdk/push/basic/android-notification-runtime-permissions)の方法を参照してください。
* **プッシュの登録と受信** - Flutter アプリケーションでプッシュ通知を使用するには、Firebase を設定する必要があります。要件に応じて、以下のいずれかの方法を参照してプッシュの登録と受信を有効にしてください。

<Tabs>
  <Tab title="MoEngage にプッシュを処理させる（推奨）">
    **メッセージングサービスの追加**\
    MoEngage SDK が通知を表示するには、マニフェストファイルにメッセージングサービスを追加する必要があります。[こちら](/docs/ja/developer-guide/android-sdk/push/basic/push-token-registration-and-display)のドキュメントを参照してください。

    **トークン登録時のコールバック（オプション）**\
    新しいトークンが登録されたとき、またはトークンが更新されたときにオプションのコールバックを受け取るには、[こちら](/docs/ja/developer-guide/android-sdk/push/basic/push-token-registration-and-display)の方法を参照してください。

    **通知クリック時のコールバック**

    プッシュがクリックされたときにコールバックを受け取り、リダイレクトをカスタム処理するには、[こちらの記事](/docs/ja/developer-guide/android-sdk/push/advanced/callbacks-and-customisation)の方法を使用してください。
  </Tab>

  <Tab title="Android ネイティブでプッシュを処理する">
    **MoEngage の登録をオプトアウトする方法**\
    MoEngage SDK はプッシュトークンの登録を試みます。アプリケーション側でプッシュを処理する場合は、[こちらの記事](/docs/ja/developer-guide/android-sdk/push/basic/push-token-registration-and-display)の方法を使用して、SDK のトークン登録をオプトアウトする必要があります。

    **プッシュトークンを MoEngage SDK に渡す** - FCM からプッシュトークンを受信した後、[こちらの記事](/docs/ja/developer-guide/android-sdk/push/basic/push-token-registration-and-display)の方法を使用してプッシュトークンを MoEngage SDK に渡し、MoEngage プラットフォームに設定します。

    **プッシュペイロードを MoEngage SDK に渡す** - アプリでプッシュペイロードを受信した後、[こちらの記事](/docs/ja/developer-guide/android-sdk/push/basic/push-token-registration-and-display)の方法を使用してデバイスにプッシュ通知を送信します。
  </Tab>

  <Tab title="Flutter でプッシュを処理する（非推奨）">
    <Warning>
      プッシュペイロードを MoEngage SDK に渡す際は、Flutter/Dart API ではなく Android ネイティブ API を使用することをお勧めします。アプリケーションが強制終了状態にある場合、Flutter Engine が初期化されない可能性があり、プッシュの到達率や配信率の低下につながります。
    </Warning>

    * [プッシュトークンを MoEngage SDK に渡す](/docs/ja/developer-guide/flutter-sdk/push/basic/android-push-configuration#passing-push-token)
    * [プッシュペイロードを MoEngage SDK に渡す](/docs/ja/developer-guide/flutter-sdk/push/basic/android-push-configuration#basic-setup)
    * [コールバックとカスタマイズ](/docs/ja/developer-guide/flutter-sdk/push/basic/android-push-configuration#customizing-push-notification)

    **通知クリック時のコールバック -** MoEngage の Flutter プラグインは、[こちらの記事](/docs/ja/developer-guide/flutter-sdk/push/basic/push-callback)の方法で、プッシュクリック時のコールバックをオプションで提供します。
  </Tab>
</Tabs>

## 基本セットアップ - iOS

MoEngage を使用して iOS デバイスでプッシュ通知を有効にするには、このセクションで説明する基本セットアップに従ってください。

* **MoEngage ダッシュボードでの APNS セットアップ**\
  APNS 認証は、Android デバイスにインストールされたアプリにプッシュ通知を送信できるようにするための方法です。MoEngage ダッシュボードで APNS をセットアップするには、次のいずれかのオプションを使用できます。
  * [APNS 認証キー（推奨）](/docs/ja/developer-guide/ios-sdk/push/basic/apns-authentication-key)
  * [APNS 証明書/PEM ファイル](/docs/ja/developer-guide/ios-sdk/push/basic/apns-certificate-pem-file-legacy)
* **アプリターゲットの実装** - [こちらの記事](/docs/ja/developer-guide/ios-sdk/push/basic/ios-push-integration-tutorial)に記載されている手順に従って、アプリターゲットに変更を加え、通知を有効にします。
* **SDK に App Group ID を提供する** - [こちらの記事](/docs/ja/developer-guide/ios-sdk/push/basic/ios-push-integration-tutorial)の方法を使用して、App Group ID を MoEngage SDK に渡します。
* **プッシュの登録と受信**

<Tabs>
  <Tab title="Swizzling あり">
    MoEngage SDK では、プッシュ通知に関連するすべてのコールバックを取得するために AppDelegate クラスを swizzle しており、UserNotificationCenter のデリゲートメソッドにもメソッド swizzling を適用しています。これは SDK の統合を容易にするためです。

    **プッシュ通知の登録**\
    登録を開始するには、[こちらの記事](/docs/ja/developer-guide/ios-sdk/push/basic/ios-push-integration-tutorial)の手順に従ってください。

    **プッシュ通知受信時のコールバックメソッド**\
    プッシュ通知の受信時にアプリが受け取るコールバックについては、[こちらの記事](/docs/ja/developer-guide/ios-sdk/push/basic/ios-push-integration-tutorial)に記載されています。Swizzling が有効な場合、追加の設定は不要です。
  </Tab>

  <Tab title="Swizzling なし">
    swizzling を使用したくない場合は、アプリの Info.plist ファイルに MoEngageAppDelegateProxyEnabled フラグを追加してブール値 NO に設定することで無効にでき、その後以下の手順に従います。

    **プッシュ通知の登録 -** [こちらの記事](/docs/ja/developer-guide/ios-sdk/push/basic/ios-push-integration-tutorial)の手順に従って登録を開始し、[こちらのセクション](/docs/ja/developer-guide/ios-sdk/push/basic/ios-push-integration-tutorial)の手順に従って登録コールバック用の各 MoEngage SDK メソッドを呼び出します。

    **プッシュ通知受信時のコールバックメソッド -** Swizzling が無効な場合は、[こちらの記事](/docs/ja/developer-guide/ios-sdk/push/basic/ios-push-integration-tutorial)の説明に従って、通知受信時のコールバックで MoEngage SDK メソッドの呼び出しを含めてください。
  </Tab>
</Tabs>

* **バッジリセットの無効化**\
  デフォルトでは、SDK はアプリの起動ごとに通知バッジ数を 0 に設定し、これによりデバイスの通知センターの通知もクリアされます。アプリの起動後も通知を保持したい場合は、[こちらのセクション](/docs/ja/developer-guide/ios-sdk/push/advanced/custom-notification-handling)のメソッドを呼び出してバッジリセットを無効にしてください。
* **通知のカスタムサウンド**\
  アプリの通知にカスタム音をオプションで設定するには、[こちらのセクション](/docs/ja/developer-guide/ios-sdk/push/advanced/custom-notification-handling)の方法に従ってください。
* **Notification Service Extension ターゲットの実装**\
  Notification Service Extension を使用すると、システムがユーザーに通知を配信する前に、MoEngage SDK が通知の内容をカスタマイズできます。これにより、通知へのメディアの追加、受信トレイのサポート、配信された通知のバッジ数の更新、通知インプレッションのトラッキングが可能になります。Notification Service Extension をセットアップするには、[こちらの記事](/docs/ja/developer-guide/ios-sdk/push/basic/ios-push-integration-tutorial)の手順に従ってください。
* **通知アクション**\
  アクション可能な通知を使用すると、標準の iOS プッシュ通知にカスタムアクションボタンを追加できます。通知にカスタムアクションを追加し、通知で実行されたアクションをトラッキングするには、[こちらの記事](/docs/ja/developer-guide/ios-sdk/push/basic/actionable-notifications)に記載されている手順に従ってください。

以上で、Flutter におけるプッシュ通知の基本セットアップは完了です。

## プッシュテンプレート

プッシュテンプレートを使用すると、コーディングなしで数分のうちに美しい通知を作成できます。ダッシュボードでテンプレートを使用してキャンペーンを作成する方法については、[こちらの記事](/docs/ja/developer-guide/ios-sdk/push/optional/push-templates)を参照してください。

プッシュテンプレートを有効にするには、プラットフォーム固有のドキュメントに従ってください。

* [Android](/docs/ja/developer-guide/android-sdk/push/optional/push-templates)
* [iOS](/docs/ja/developer-guide/ios-sdk/push/optional/push-templates)

## Push Amp+

通知のかなりの割合（約 25～30%）は、OEM（相手先ブランド製造業者）デバイスの問題により配信されていません。この問題に対処し、リテンション率を向上させるため、MoEngage は通知を受信できていない可能性のある顧客にリーチする Push Amplification+ を開発しました。また、MoEngage は OEM と提携してこれらの問題に対処し、通知が確実に配信されるようにしています。アプリケーションへの追加の負担を最小限に抑えるため、OEM ごとに個別のソフトウェア開発キット（SDK）を開発しました。アプリケーション固有のニーズとデバイスシェアに基づいて、関連する SDK を選択して統合できます。各 OEM 固有のサービスのドキュメントを参照し、最適なプッシュ通知配信のために適切なものをアプリケーションに統合してください。

### サポートされている統合

* [HMS Push Kit](/docs/ja/developer-guide/android-sdk/push/optional/push-amp-plus/configuring-hms-push-kit)

## Push Amplification

Push Amplification は、Firebase Cloud Messaging（FCM）がプッシュ通知の配信に失敗した場合のフォールバックメカニズムとして機能します。[Push Amplification](/docs/ja/developer-guide/android-sdk/push/optional/push-amplification) をセットアップするには、こちらの方法に従ってください。

## 通知センター

通知センターにはプッシュ通知の履歴が表示され、エンドユーザーがスクロールして見逃した通知を確認できるオプションを提供できます。MoEngage は、完全にカスタマイズ可能なデフォルト UI を備えたすぐに使える受信トレイのサポートを提供しており、独自の通知センターを構築するオプションも提供しています。詳細については、[通知センター](/docs/ja/developer-guide/flutter-sdk/push/optional/notification-center)を参照してください。

## 位置情報トリガー通知

位置情報トリガー通知を使用すると、定義されたジオフェンスへのユーザーの進入、退出、滞在をトリガーとしてオーディエンスにメッセージを送信できます。位置情報トリガーをセットアップするには、[こちらの記事](/docs/ja/developer-guide/flutter-sdk/push/optional/location-triggered)の方法に従ってください。

## デバイストリガー通知

デバイストリガー通知を使用すると、デバイス上の任意のアクティビティに基づいてローカルでトリガーされるメッセージをオーディエンスに送信できます。メッセージのオフライン配信もサポートされています。

デバイストリガー通知を有効にするには、次のプラットフォーム固有の記事を参照してください。

* [Android](/docs/ja/developer-guide/android-sdk/push/optional/device-triggered)
* [iOS](/docs/ja/developer-guide/ios-sdk/push/optional/real-time-triggers)

## Android の高度なユースケース

高度なユースケース向けに、次のオプションを利用できます。

* **MoEngage 以外のペイロード** - MoEngage プラットフォーム以外のサーバーからプッシュペイロードを受信した場合にオプションのコールバックを受け取るには、[こちら](/docs/ja/developer-guide/android-sdk/push/basic/push-token-registration-and-display)の方法を参照してください。
* **コールバックとカスタマイズ** - MoEngage SDK では、クライアントアプリケーションが通知の表示をオプションでカスタマイズし、通知の動作を拡張/カスタマイズできます。次のような機能を利用するには、[こちら](/docs/ja/developer-guide/android-sdk/push/advanced/callbacks-and-customisation)に記載されている方法を参照してください。
  * 通知をユーザーに表示するかどうかの制御
  * 通知受信時のコールバック
  * 通知クリック時のコールバック
  * 通知クリア時のコールバック
  * アクションボタンクリック時のカスタムアクション
  * **アプリケーションによるプッシュ表示の処理（Android）** - アプリケーションがクライアント側でプッシュの表示を処理する必要がある場合は、[こちらの記事](/docs/ja/developer-guide/android-sdk/push/advanced/push-display-handled-by-application)で説明している方法を使用して、通知のインプレッションやケースをトラッキングできます。

# In-App

MoEngage のアプリ内キャンペーンは、ユーザーがアプリを使用している間にメッセージを表示することでユーザーをターゲットにします。アプリ内の特定の画面や、ユーザーがアプリ内で実行した特定のアクションに対して、コンテキストに応じた情報を提供し、クロスセル/アップセルを促進するのに効果的です。

基本セットアップ - Flutter にアプリ内通知をインストールするには、次のプラットフォーム固有の方法を使用します。

* [Android](/docs/ja/developer-guide/flutter-sdk/in-app-messages/inapp-nativ)
* iOS（iOS ではインストールは不要です）

## アプリ内メッセージの表示

MoEngage のすぐに使える UI を使用してアプリ内メッセージを表示するか、セルフハンドル InApp を使用して MoEngage からのペイロードでアプリケーションの UI を構築できます。

**InApp の表示**\
画面上に InApp キャンペーンを表示するには、[こちら](/docs/ja/developer-guide/flutter-sdk/in-app-messages/inapp-nativ)のメソッドを呼び出します。アプリ内ポップアップは、showInApp() メソッドが呼び出された場所にのみ表示されます。

**画面の向きの変更への対応**\
InApp は縦向きと横向きの両方のモードでサポートされています。これには 2 つの方法があります。

* [アプリの Android ネイティブ部分に API 呼び出しを追加する](/docs/ja/developer-guide/flutter-sdk/in-app-messages/inapp-nativ)
* [MoEngage プラグインの onOrientationChanged() を呼び出す](/docs/ja/developer-guide/flutter-sdk/in-app-messages/inapp-nativ)

**セルフハンドル InApp**\
セルフハンドル InApp は、SDK によってアプリケーションに配信されるメッセージであり、アプリケーションは SDK から配信されたペイロードを使用して UI を構築します。セルフハンドル InApp を取得するには、[こちらの記事](/docs/ja/developer-guide/flutter-sdk/in-app-messages/inapp-nativ)を参照してください。

* [セルフハンドルキャンペーンの取得](/docs/ja/developer-guide/flutter-sdk/in-app-messages/inapp-nativ)
* [セルフハンドル InApp の統計のトラッキング](/docs/ja/developer-guide/android-sdk/in-app-messages/in-app-nativ#tracking-statistics-for-self-handled-in-apps)

## InApp コールバック

オプションとして、InApp の表示、InApp のクリック、InApp の閉じる操作、およびセルフハンドル InApp の利用可能イベントに対するコールバックを提供しています。[こちらの記事](/docs/ja/developer-guide/flutter-sdk/in-app-messages/inapp-nativ#inapp-callbacks)の方法を使用して、コールバックを登録できます。

# カード

MoEngage のカードキャンペーンを使用すると、カスタマージャーニーの中で、永続的かつ非侵入型のメッセージでユーザーとやり取りできます。セルフハンドルカードは、SDK によってアプリケーションに配信されるメッセージペイロードであり、アプリケーションは配信されたペイロードを使用して UI を構築します。

Flutter でセルフハンドルカードを実装するには、[こちらの記事](/docs/ja/developer-guide/flutter-sdk/cards/self-handled-cards)を参照してください。

<Info>
  カードは現在、Web プラットフォームではサポートされていません。
</Info>
