> ## 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.

# React Native SDK の概要

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

# 概要

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

サンプルコードを確認するには、[GitHub リポジトリ](https://github.com/moengage/React-Native)を参照してください。この記事では、React Native で MoEngage の機能を実装する手順について説明します。

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

<Note>
  統合する前に、サポート対象の SDK バージョンと非推奨のタイムラインについて [SDK 非推奨ポリシー](/docs/ja/developer-guide/sdk-lifecycle-and-policies/sdk-deprecation-policy)を確認してください。
</Note>

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

MoEngage SDK を管理する方法は 2 つあります。MoEngage Expo Plugin を使用する方法と、ネイティブレイヤーを直接設定する方法です。

Expo Plugin を使用すると、ネイティブコードを記述せずに多くの SDK 機能を設定できます。詳細については、[MoEngage Expo Plugin のドキュメント](/docs/ja/developer-guide/react-native-sdk/sdk-integration/expo/installation)を参照してください。 \
ネイティブレイヤーを管理して SDK を設定するには、以下の手順に従います。

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

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

**ステップ 2: ネイティブ Android のセットアップを完了する**

* インストールを完了するための Android ネイティブのセットアップガイドラインは、こちらの[記事](/docs/ja/developer-guide/react-native-sdk/sdk-integration/react-native/sdk-installation/android)で説明しています。
* iOS では追加の手順は必要ありません。初期化（ステップ 3）に進んでください。

**ステップ 3: フレームワークの初期化**\
こちらの[記事](/docs/ja/developer-guide/react-native-sdk/sdk-integration/react-native/sdk-initialization/manual-initialization/framework-initialization)で説明されているメソッドを呼び出して、MoEngage プラグインのインスタンスを初期化します。

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

* [Android](/docs/ja/developer-guide/react-native-sdk/sdk-integration/react-native/sdk-initialization/manual-initialization/android)
* [iOS](/docs/ja/developer-guide/react-native-sdk/sdk-integration/react-native/sdk-initialization/manual-initialization/ios)

# データトラッキング

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

* **インストール/アップデートの区別** - 新規インストールとアップデートを別々にトラッキングするには、こちらの[記事](/docs/ja/developer-guide/react-native-sdk/data-tracking/install-update)の方法を参照してください。
* **ログイン、ログアウトのトラッキングと Unique ID の設定** - データの破損を防ぐために、ユーザーのログインとログアウトを処理する際は、以下の記事で説明されている手順に従うことが非常に重要です。
  * [ログインのトラッキングとユーザー ID の設定](/docs/ja/developer-guide/react-native-sdk/data-tracking/setting-unique-id-for-sdk-versions-below-1120#login-user)
  * [ログアウトのトラッキング](/docs/ja/developer-guide/react-native-sdk/data-tracking/setting-unique-id-for-sdk-versions-below-1120#logout-user)
  * [ユーザー属性 Unique ID の更新](/docs/ja/developer-guide/react-native-sdk/data-tracking/setting-unique-id-for-sdk-versions-below-1120) アプリの各ユーザーに一意の ID を持たせることが不可欠です。この ID は setUserUniqueID() を使用して MoEngage SDK に渡すことができます。この一意の ID により、複数のインストールやプラットフォームにわたってユーザーを正しく識別し、統合されたビューを提供できます。ユーザーがアプリからログアウトしたら、logout() を呼び出して新しいユーザーの作成を開始することが重要です。この手順は、新しいユーザーが行うその後のアクティビティが、以前ログインしていたユーザーに誤って紐付けられ、ユーザーデータが歪むことを防ぐために必要です。
* **ユーザー属性のトラッキング** - ユーザープロファイルで利用可能なカスタム属性を設定するには、[こちらの記事](/docs/ja/developer-guide/react-native-sdk/data-tracking/setting-unique-id-for-sdk-versions-below-1120)の方法を参照してください。
* **イベントのトラッキング** - イベントのトラッキングとは、ユーザーのアクションを、そのアクションを説明するプロパティとともに記録することです。カスタムイベントをトラッキングするには、[こちらの記事](/docs/ja/developer-guide/react-native-sdk/data-tracking/tracking-events)の方法を参照してください。
* **広告識別子トラッキングの有効化（Android のみ）** - MoEngage SDK は、パーソナライズされたコンテンツを配信するためにデバイス ID（永続的なデバイス識別子）を使用してユーザーを一意に識別し、アプリで許可されている場合はこれを AAID に関連付けます。これにより、プッシュ通知を送信できるデバイスを正確に識別し、ユーザーの再インストールを長期にわたってトラッキングできます。ユーザーの同意を得た後に AAID のトラッキングを有効にするには、[こちらの記事](/docs/ja/developer-guide/react-native-sdk/data-tracking/enable-advertising-identifier-tracking)の方法を参照してください。

# プッシュ通知

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

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

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

* **MoEngage ダッシュボードでの FCM セットアップ -** FCM 認証は、Android デバイスにインストールされたアプリへのプッシュ通知の送信を有効にするための方法です。[こちらの記事](/docs/ja/developer-guide/android-sdk/push/basic/fcm-authentication)に記載されている方法を使用して、MoEngage が Firebase サービスにアクセスできるよう認証してください。
* **プッシュ通知用のメタデータの追加 -** [こちらの記事](/docs/ja/developer-guide/components-for-sdk/push-notification/android-push-configuration-for-hybrid-applications#adding-metadata-for-push-notification)で説明されている方法を使用して、スモールアイコンとラージアイコンの drawable や、プッシュ通知を処理するためのその他のオプションを設定します。
* **Android 通知のランタイム権限** - アプリケーションが Android 13 で実行されている場合、ユーザーに通知を表示するには、ユーザーに通知権限をリクエストする必要があります。権限リクエストを処理するには、[こちらの記事](/docs/ja/developer-guide/react-native-sdk/push/basic/android-notification-runtime-permissions)で説明されている方法を参照してください。
* **プッシュの登録と受信** - React Native アプリケーションでプッシュ通知を使用するには、Firebase を設定する必要があります。Firebase の設定手順は、統合方法によって異なります。ベストプラクティスが適切に組み込まれているため、MoEngage はプッシュの処理を MoEngage SDK に任せることをお勧めします。アプリレベルでプッシュを処理することも可能です。いずれの場合も、該当する以下のセクションを確認し、統合手順を完了してください。

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

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

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

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

  <Tab title="Android ネイティブでプッシュを処理する">
    **MoEngage の登録をオプトアウトする方法**\
    MoEngage SDK はプッシュトークンの登録を試みます。アプリケーション側でプッシュを処理するため、[こちらの記事](/docs/ja/developer-guide/android-sdk/push/basic/push-token-registration-and-display#how-to-opt-out-of-moengage-push-token-registration)の方法を使用して、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#passing-the-push-payload-to-the-moengage-sdk)の方法を使用して、デバイスにプッシュ通知を表示します。
  </Tab>

  <Tab title="React Native でプッシュを処理する（非推奨）">
    <Warning>
      MoEngage は、プッシュペイロードを MoEngage SDK に渡す際に、React-Native/Javascript API ではなく Android ネイティブ API を使用することをお勧めします。アプリケーションが強制終了されている場合や、通知が高優先度で送信されていない場合、React-Native エンジンが初期化されないことがあります。
    </Warning>

    * [MoEngage SDK へのプッシュトークンの受け渡し](/docs/ja/developer-guide/react-native-sdk/push/basic/android-push-configuration#passing-push-token)
    * [MoEngage SDK へのプッシュペイロードの受け渡し](/docs/ja/developer-guide/react-native-sdk/push/basic/android-push-configuration#passing-push-payload)
    * [コールバックとカスタマイズ](/docs/ja/developer-guide/react-native-sdk/push/basic/android-push-configuration#customizing-push-notification)

    **通知クリック時のコールバック -** MoEngage の React Native プラグインでは、[こちらの記事](/docs/ja/developer-guide/react-native-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#choose-a-notification-registration-method)の手順に従ってください。

    **プッシュ通知受信時のコールバックメソッド**\
    Swizzling が有効な場合、追加の設定は必要ありません。
  </Tab>

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

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

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

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

これで、React Native でのプッシュ通知の基本セットアップは完了です。

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

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

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

* [Android](/docs/ja/developer-guide/android-sdk/push/optional/push-templates#sdk-installation)
* [iOS](/docs/ja/developer-guide/ios-sdk/push/optional/push-templates#1-create-a-notification-content-extension)

## Push Amp+（Android のみ、任意）

通知の約 25～30% は、OEM（Original Equipment Manufacturer）デバイスの問題により配信されていません。この問題に対処してリテンション率を向上させるために、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（Android のみ、任意）

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

## 通知センター

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

## 位置情報トリガー通知（任意）

位置情報トリガー通知を使用すると、定義したジオフェンスへのユーザーの進入、退出、滞在をトリガーとしてオーディエンスにメッセージを送信できます。位置情報トリガーをセットアップするには、[こちらの記事](/docs/ja/developer-guide/react-native-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#push-display-for-non-moengage-payloads-optional)の方法を参照してください。
* **コールバックとカスタマイズ** - 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)で説明されている方法を使用して、通知のインプレッションとケースをトラッキングできます。

# アプリ内メッセージ

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

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

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

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

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

**アプリ内メッセージの表示**\
画面に InApp キャンペーンを表示するには、[こちら](https://moengage-sdk-docs.mintlify.app/developer-guide/react-native-sdk/in-app-messages/inapp-nativ#installing-android-dependency)のメソッドを呼び出します。アプリ内ポップアップは、showInApp() メソッドが呼び出された場所にのみ表示されます。

**画面の向きの変更への対応**\
アプリ内メッセージは、縦向きモードと横向きモードの両方でサポートされています。SDK がアプリ内メッセージの表示を処理できるよう、デバイスの向きが変わったときに SDK に通知する必要があります。画面の向きの変更に対応するには、[こちらの記事](developer-guide/react-native-sdk/in-app-messages/inapp-nativ#handling-orientation-change)を参照してください。

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

* [セルフハンドルキャンペーンの取得](/docs/ja/developer-guide/react-native-sdk/in-app-messages/inapp-nativ#self-handled-inapps)
* [セルフハンドルのアプリ内メッセージの統計のトラッキング](/docs/ja/developer-guide/react-native-sdk/in-app-messages/inapp-nativ#tracking-statistics)

## InApp コールバック

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

# カード

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

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