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

# Huawei Unity SDKセットアップ

> HuaweiデバイスでのUnity向けSDKセットアップガイド

## 概要

このガイドでは、Huawei AppGalleryで配布されるUnityアプリケーションにOneSignalプッシュ通知を統合する方法を説明します。

アプリがHuawei AppGalleryで配布されている場合にのみ、これらの手順に従ってください。

***

## 要件

* [Android Studio](https://developer.android.com/studio)
* 「Huawei App Gallery」がインストールされたHuaweiデバイス
* 構成されたOneSignal AppとPlatform

***

### OneSignalアプリとプラットフォームを設定

サポートするプラットフォーム（Apple（APNs）、Google（FCM）、Huawei（HMS）、Amazon（ADM））でOneSignalアプリを設定します。

<Note>
  組織がすでにOneSignalアカウントを持っている場合は、組織への[招待をリクエスト](/docs/ja/manage-team-members)してください。それ以外の場合は、[無料アカウントにサインアップ](https://onesignal.com)して開始してください。
</Note>

<Accordion title="セットアップのステップバイステップ手順" icon="circle-chevron-down">
  <Steps>
    <Step title="アプリを作成または選択">
      **New App/Website** をクリックして新しいアプリを作成するか、**Settings > Push & In-App** で既存のアプリにプラットフォームを追加します。設定するプラットフォームを選択し、**Next: Configure Your Platform** をクリックします。

      <Frame caption="最初のOneSignalアプリ、組織、チャネルのセットアップ。">
        <img src="https://mintcdn.com/onesignal/BK2J-grzBpDdh8NC/images/dashboard/new-app-org-channel.png?fit=max&auto=format&n=BK2J-grzBpDdh8NC&q=85&s=ee0045484152ed15095f619344aa0564" alt="組織名、アプリ名、チャネル選択を含む新しいアプリセットアップフローを表示するOneSignalダッシュボード" width="2592" height="1904" data-path="images/dashboard/new-app-org-channel.png" />
      </Frame>
    </Step>

    <Step title="プラットフォーム認証情報を設定">
      プラットフォームの認証情報を入力します：

      * **Android**：[Firebase認証情報をセットアップ](/docs/ja/android-firebase-credentials)
      * **iOS**：[p8トークン（推奨）](/docs/ja/ios-p8-token-based-connection-to-apns)または[p12証明書](/docs/ja/ios-p12-generate-certificates)
      * **Amazon**：[APIキーを生成](/docs/ja/generate-an-amazon-api-key)
      * **Huawei**：[OneSignalを承認](/docs/ja/authorize-onesignal-to-send-huawei-push)

      認証情報を入力した後、**Save & Continue** をクリックします。
    </Step>

    <Step title="App IDを保存してSDKをインストール">
      **App ID** は最終画面に表示されます。コピーして保存してください — SDKを初期化するときに必要です。SDKプラットフォームを選択し、セットアップガイドに従います。

      <Frame caption="App IDを保存して追加のチームメンバーを招待します。">
        <img src="https://mintcdn.com/onesignal/VypVshrFHTBZfEma/images/dashboard/app-id-and-team-invite.png?fit=max&auto=format&n=VypVshrFHTBZfEma&q=85&s=e1e2aab6cca7c4aa6b9a76eff362d5af" alt="セットアップ後のApp IDとチーム招待オプションを表示するOneSignalダッシュボード" width="2592" height="1904" data-path="images/dashboard/app-id-and-team-invite.png" />
      </Frame>
    </Step>
  </Steps>
</Accordion>

***

## セットアップ

### 1. OneSignal SDKをセットアップする

<Card title="OneSignal Unity SDKセットアップ" href="./unity-sdk-setup" arrow={true}>
  OneSignal Unity SDKセットアップガイドに従って、SDKをアプリに実装します。
  Huawei AppGalleryにリリースされるアプリビルドにはFirebase/Googleのセットアップは必要ありません。
</Card>

### 2. Huawei構成

[Huawei Platform Setup on OneSignal](https://developer.huawei.com/consumer/en/doc/HMS-Plugin-Guides-V1/preparedevenv-0000001050155838-V1)

Huawei構成ファイル（agconnect-services.json）*[AppGallery Connect Project List](https://developer.huawei.com/consumer/en/service/josp/agc/index.html#/myProject)からアプリを選択します。*「agconnect-services.json」ボタンをクリックして、このファイルをダウンロードします。

<Frame>
  <img src="https://mintcdn.com/onesignal/56ctKxZSV4m5VEkn/images/docs/b4f866d-Huawei_AppGallery_Connect_ProjectSettings_Download_agconnect-services.json_file.png?fit=max&auto=format&n=56ctKxZSV4m5VEkn&q=85&s=0d2a452e3c007ce4a63fa3ed50204a32" width="1262" height="696" data-path="images/docs/b4f866d-Huawei_AppGallery_Connect_ProjectSettings_Download_agconnect-services.json_file.png" />
</Frame>

これをAssets/Plugins/Android/OneSignalConfig内に配置します

<Frame>
  <img src="https://mintcdn.com/onesignal/4HyuQPBpu-4xjmQC/images/docs/cdd2b5d-Screen_Shot_2020-08-13_at_15.15.03.png?fit=max&auto=format&n=4HyuQPBpu-4xjmQC&q=85&s=53cbcc07759a4e37a28b2a910f735f6b" width="676" height="226" data-path="images/docs/cdd2b5d-Screen_Shot_2020-08-13_at_15.15.03.png" />
</Frame>

### 3. 署名証明書フィンガープリントの生成

<Info>
  別のHuaweiサービス用にHuaweiのダッシュボードにSHA-256証明書フィンガープリントをすでに追加している場合は、このステップをスキップできます。
</Info>

[Generating a Signing Certificate Fingerprint](https://developer.huawei.com/consumer/en/doc/development/HMS-Guides/Preparations#h2-1575707383351)に従ってください

### 4. Huawei gradleプラグインと依存関係を追加する

<Accordion title="Unity 2019.3以降">
  **4a.1** File -> Build Settings -> Player Settings -> Android -> Publishing Settingsに移動し、Custom Main Gradle Templateの下をクリックします。これによりmainTemplate.gradleが作成されます。

  <Frame>
    <img src="https://mintcdn.com/onesignal/KSCNwSpBCNSQ8xdF/images/docs/feb8b80-Screen_Shot_2020-08-17_at_12.13.36.png?fit=max&auto=format&n=KSCNwSpBCNSQ8xdF&q=85&s=8b64809973e1921c456c35b2e2f2f8c4" width="578" height="402" data-path="images/docs/feb8b80-Screen_Shot_2020-08-17_at_12.13.36.png" />
  </Frame>

  **4a.2** mainTemplate.gradleでコメント`// GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN`を削除します

  * `dependencies`の下に`implementation 'com.huawei.hms:push:6.3.0.304'`を追加します

  <Frame>
    <img src="https://mintcdn.com/onesignal/6v_cVPknFpo5qSVB/images/docs/0c5dc0e-Screen_Shot_2020-08-17_at_13.19.35.png?fit=max&auto=format&n=6v_cVPknFpo5qSVB&q=85&s=e917461a25e572daae32c6e10970240a" width="930" height="144" data-path="images/docs/0c5dc0e-Screen_Shot_2020-08-17_at_13.19.35.png" />
  </Frame>

  **4a.3** 次の内容でAssets/Plugins/Android/settingsTemplate.gradleという名前の新しいファイルを作成します。

  <CodeGroup>
    ```groovy Unity 2019.3+ theme={null}
    import java.nio.file.Files

    // This file contents should be placed at Assets/Plugins/Android/settingsTemplate.gradle
    // This works around Unity's 2019.3 bug where their root build.gradle is placing buildscript under allprojects
    // On it's own it doesn't create issues however doing so means including a buildscript block in any sub projects
    //   such as "unityLibrary" which is generated from the template Assets/Plugins/Android/mainTemplate.gradle does not work.
    // It results in a build error of "Configuration with name 'compileClasspath' not found." on a lint task.
    // Normally adding "lintOptions { abortOnError false }" bypasses any lint task errors however
    //   either due to a bug with the Android Gradle plugin or an order of operations this does seem to be applying in this case.
    // Until Unity fixes their root build.gradle we will need to keep using this file to enable any additional Gradle plugins.

    static void enableJetifier(Project project) {
        project.ext['android.useAndroidX'] = true
        project.ext['android.enableJetifier'] = true
    }

    static void addBuildscript(Project project) {
        project.buildscript {
            repositories {
                maven { url 'https://plugins.gradle.org/m2/' } // Gradle Plugin Portal
                maven { url 'http://developer.huawei.com/repo/' }
            }
            dependencies {
                classpath 'com.huawei.agconnect:agcp:1.6.5.300'
            }
        }
    }

    static void applyPlugins(Project project) {
        // Only apply to the :app project. (Unity calls this :launcher)
        if (project.name != 'launcher')
            return

        project.afterEvaluate {
            it.apply plugin: 'com.huawei.agconnect'
        }
    }

    static void copyHMSFile(Project project) {
        // Only apply to the :app project. (Unity calls this :launcher)
        if (project.name != 'launcher')
            return

        def newFile = new File("${project.rootDir}/launcher/agconnect-services.json")

        if (newFile.exists())
            return

        def file = new File("${project.rootDir}/unityLibrary/OneSignalConfig/agconnect-services.json")
        Files.copy(file.toPath(), newFile.toPath())
    }

    gradle.rootProject {
        it.afterEvaluate {
            it.allprojects {
                // Since Unity 2019.3 enabling Jetifier via mainTemplate.gradle is no longer working
                // Enabling it for all gradle projects here.
                enableJetifier(it)

                addBuildscript(it)
                applyPlugins(it)
                copyHMSFile(it)
            }
        }
    }

    // Per Unity's docs /*/*INCLUDES/*/* should be at the bottom.
    // https://docs.unity3d.com/Manual/android-gradle-overview.html

    // However it seem to have left out this include line
    include ':launcher', ':unityLibrary'
    **INCLUDES**
    ```
  </CodeGroup>
</Accordion>

<Accordion title="Unity 2019.2以前">
  **4b.1** File -> Build Settings -> Player Settings -> Android -> Publishing Settingsに移動し、Custom Gradle Templateの下をクリックします。これによりmainTemplate.gradleが作成されます。

  <Frame>
    <img src="https://mintcdn.com/onesignal/tc0EvmtSSX56SX0c/images/docs/977ae43-Screen_Shot_2020-08-17_at_13.05.04.png?fit=max&auto=format&n=tc0EvmtSSX56SX0c&q=85&s=b8ffd719a6feb1d3ddc670f8000649f1" width="580" height="206" data-path="images/docs/977ae43-Screen_Shot_2020-08-17_at_13.05.04.png" />
  </Frame>

  **4b.2** mainTemplate.gradleでコメント`// GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN`を削除します

  * `buildscript { repositories }`の下に`maven { url 'http://developer.huawei.com/repo/' }`を追加します
  * `buildscript { dependencies }`の下に`classpath 'com.huawei.agconnect:agcp:1.6.5.300'`を追加します
  * `allprojects { repositories }`の下に`maven { url 'http://developer.huawei.com/repo/' }`を追加します

  <Frame>
    <img src="https://mintcdn.com/onesignal/6v_cVPknFpo5qSVB/images/docs/06edc1d-Screen_Shot_2020-08-17_at_13.18.25.png?fit=max&auto=format&n=6v_cVPknFpo5qSVB&q=85&s=63ea1065efc0f701b89c0e04704aedfd" width="914" height="874" data-path="images/docs/06edc1d-Screen_Shot_2020-08-17_at_13.18.25.png" />
  </Frame>

  これらの依存関係を追加した後、`allprojects {}`の下に以下を追加します

  <CodeGroup>
    ```groovy Unity 2019.2 theme={null}
    allprojects {
      ...
    }

    task copyReport(type: Copy) {
        from file("$projectDir/OneSignalConfig/agconnect-services.json")
        into file("$projectDir")
    }

    allprojects {
        afterEvaluate {
            for (def task in it.tasks)
                if (task != rootProject.tasks.copyReport)
                    task.dependsOn rootProject.tasks.copyReport
        }
    }
    ```
  </CodeGroup>

  `dependencies`の下に`implementation 'com.huawei.hms:push:6.3.0.304'`を追加します

  <Frame>
    <img src="https://mintcdn.com/onesignal/9_Q1FZLh6C0BFLq-/images/docs/be361e2-Screen_Shot_2020-08-17_at_13.19.35.png?fit=max&auto=format&n=9_Q1FZLh6C0BFLq-&q=85&s=c664f85d1c4adeedbe14664a0b8e0ead" width="930" height="144" data-path="images/docs/be361e2-Screen_Shot_2020-08-17_at_13.19.35.png" />
  </Frame>

  ファイルの一番下に`apply plugin: 'com.huawei.agconnect'`を追加します
</Accordion>

***

## 追加の構成手順

### Huawei位置情報サービスの構成（オプション）

mainTemplate.gradleの`dependencies`の下に`implementation 'com.huawei.hms:location:<HUAWEI HMS VERSION #>`を追加します

<Frame>
  <img src="https://mintcdn.com/onesignal/YOTSrtBSoqdrJ37A/images/docs/508f81e-Screen_Shot_2020-08-17_at_12.25.07.png?fit=max&auto=format&n=YOTSrtBSoqdrJ37A&q=85&s=1fa4236a63442b3e902117885f1007da" width="914" height="182" data-path="images/docs/508f81e-Screen_Shot_2020-08-17_at_12.25.07.png" />
</Frame>

まだ追加していない場合は、AndroidManifest.xmlに位置情報パーミッションも追加してください

<CodeGroup>
  ```xml AndroidManifest.xml theme={null}
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
  ```
</CodeGroup>

***

## Huaweiトラブルシューティング

テスト中は、[OneSignal setLogLevelメソッド](./mobile-sdk-reference#setloglevel)をVERBOSEに設定したままにしてください。

ログをチェックして、スローされているエラーと[Huawei Common Error Codes](https://developer.huawei.com/consumer/en/doc/development/HMS-2-References/hmssdk_huaweipush_api_reference_errorcode)を確認してください。

<Accordion title="6003エラー">
  OneSignal SDKでHuawei `pushToken`を登録する際に`6003`エラーを回避するために、デバッグまたはリリースキーストア署名を作成する必要がある場合があります（正しいアプリビルドパス、`debug`または`release`を選択）。[「Configure a Signature」セクション](https://developer.huawei.com/consumer/en/doc/HMS-Guides/Preparations#h2-1584707362385)を参照してください
</Accordion>

<Accordion title="notification_types: -28">
  これは、プッシュに必要なクラスがHMSからアプリに欠けていることを意味します。`build.gradle`に`com.huawei.hms:push`を含めるだけで、この特定のエラーは発生しなくなります。ただし、積極的なProguardまたはR8設定がある場合、これが問題を引き起こす可能性があります。これが問題の根本原因であるかどうかを確認するために、`minifyEnabled`を一時的にオフにすることをお勧めします。

  また、他のHMSライブラリのメジャーリリースバージョンを混在させないでください。4または5のいずれかから始めてください。3から5の混在は、他のエラーを引き起こします。
</Accordion>

<Accordion title="Huaweiプッシュトークンの取得エラー">
  ```
  E/OneSignal: HMS ApiException getting Huawei push token!
      com.huawei.hms.common.ApiException: -5: Core error
  ```

  ProguardまたはR8ルールが適切にセットアップされていることを確認してください。一時的に無効にして、関連しているかどうかを確認できます。ProguardまたはR8を無効にした後に問題が修正された場合は、このガイドに従って再度オンにできます。[「Configure a Signature」セクション](https://developer.huawei.com/consumer/en/doc/HMS-Guides/Preparations#h2-1584707362385)を参照してください
</Accordion>

## OneSignal SDK統合のテスト

このガイドでは、プッシュ通知、サブスクリプション登録、アプリ内メッセージをテストして、OneSignal SDK統合が正しく機能していることを確認する方法を説明します。

### モバイルサブスクリプションを確認

<Steps>
  <Step title="テストデバイスでアプリを起動します。">
    初期化時に`requestPermission`メソッドを追加した場合、ネイティブのプッシュ許可プロンプトが自動的に表示されます。

    <Frame caption="iOSとAndroidのプッシュ許可プロンプト">
      <img src="https://mintcdn.com/onesignal/RWtLFPeffHrC81wI/images/docs/a90c2cc443f5fe9e7c80368c680a16cf1ca6203f7b28a0a6eec212add8510f80-Untitled_design_11.png?fit=max&auto=format&n=RWtLFPeffHrC81wI&q=85&s=96dbf224b3ae93b3d814712cdc5416ba" width="1920" height="1080" data-path="images/docs/a90c2cc443f5fe9e7c80368c680a16cf1ca6203f7b28a0a6eec212add8510f80-Untitled_design_11.png" />
    </Frame>
  </Step>

  <Step title="OneSignalダッシュボードを確認">
    プロンプトを受け入れる前に、OneSignalダッシュボードを確認してください：

    * **Audience > Subscriptions**に移動します。
    * ステータスが「Never Subscribed」の新しいエントリが表示されるはずです。

    <Frame caption="「Never Subscribed」ステータスのサブスクリプションを表示するダッシュボード">
      <img src="https://mintcdn.com/onesignal/Xl2NHJvxakrK4JbL/images/docs/f19fa5ada3572ce14447bb5639744e9da75cd7a3ab43ecc1a057f2ed92b38e6f-Screenshot_2025-03-16_at_14.55.39.png?fit=max&auto=format&n=Xl2NHJvxakrK4JbL&q=85&s=b04ca3217e22155841b500a55c7f1511" width="1588" height="976" data-path="images/docs/f19fa5ada3572ce14447bb5639744e9da75cd7a3ab43ecc1a057f2ed92b38e6f-Screenshot_2025-03-16_at_14.55.39.png" />
    </Frame>
  </Step>

  <Step title="アプリに戻り、プロンプトで「許可」をタップします。" />

  <Step title="OneSignalダッシュボードのSubscriptionsページを更新します。">
    サブスクリプションのステータスが**Subscribed**と表示されるはずです。

    <Frame caption="「Subscribed」ステータスのサブスクリプションを表示するダッシュボード">
      <img src="https://mintcdn.com/onesignal/0qspEXXeJ8zJbkJ-/images/docs/85b0376cdcc6f93fb7b3895b18cd1788d2342776d7995909881e5c64dd40fb62-Screenshot_2025-03-16_at_15.57.34.png?fit=max&auto=format&n=0qspEXXeJ8zJbkJ-&q=85&s=c6abec64d102b84e30f6c9c0327808ef" width="1588" height="976" data-path="images/docs/85b0376cdcc6f93fb7b3895b18cd1788d2342776d7995909881e5c64dd40fb62-Screenshot_2025-03-16_at_15.57.34.png" />
    </Frame>

    <Check>[モバイルサブスクリプション](/docs/ja/subscriptions)の作成に成功しました。
    モバイルサブスクリプションは、ユーザーがデバイスで初めてアプリを開いたとき、またはユーザーが同じデバイスでアプリをアンインストールして再インストールしたときに作成されます。</Check>
  </Step>
</Steps>

### テストサブスクリプションをセットアップ

テストサブスクリプションは、メッセージを送信する前にプッシュ通知をテストするのに役立ちます。

<Steps>
  <Step title="Test Usersに追加します。">
    ダッシュボードで、サブスクリプションの横にある\*\*Options（3つのドット）\*\*ボタンをクリックし、**Add to Test Users**を選択します。

    <Frame caption="デバイスをtest usersに追加">
      <img src="https://mintcdn.com/onesignal/NCUI56Tiw7V-s0dT/images/dashboard/add-to-test-subscriptions.png?fit=max&auto=format&n=NCUI56Tiw7V-s0dT&q=85&s=2455d4cd74ea4ad686f76730cd95bbaa" width="1188" height="742" data-path="images/dashboard/add-to-test-subscriptions.png" />
    </Frame>
  </Step>

  <Step title="サブスクリプションに名前を付けます。">
    **test usersタブ**で後でデバイスを簡単に識別できるように、サブスクリプションに名前を付けます。
  </Step>

  <Step title="テストユーザーセグメントを作成します。">
    **Audience > Segments > New Segment**に移動します。
  </Step>

  <Step title="セグメントに名前を付けます。">
    セグメントに`Test Users`という名前を付けます（この名前は後で使用されるため重要です）。
  </Step>

  <Step title="Test Usersフィルターを追加し、Create Segmentをクリックします。">
    <Frame caption="Test Usersフィルターを使用して「Test Users」セグメントを作成">
      <img src="https://mintcdn.com/onesignal/NCUI56Tiw7V-s0dT/images/dashboard/create-test-users-segment.png?fit=max&auto=format&n=NCUI56Tiw7V-s0dT&q=85&s=91b8a021be6e83662854e68ec3e1da04" width="1188" height="742" data-path="images/dashboard/create-test-users-segment.png" />
    </Frame>

    <Check>テストユーザーのセグメントの作成に成功しました。
    この個別のデバイスとテストユーザーのグループにメッセージを送信するテストが可能になりました。</Check>
  </Step>
</Steps>

### API経由でテストプッシュを送信

<Steps>
  <Step title="App API KeyとApp IDを取得します。">
    OneSignalダッシュボードで、\*\*Settings > [Keys & IDs](/docs/ja/keys-and-ids)\*\*に移動します。
  </Step>

  <Step title="提供されたコードを更新します。">
    以下のコードの`YOUR_APP_API_KEY`と`YOUR_APP_ID`を実際のキーに置き換えます。このコードは、先ほど作成した`Test Users`セグメントを使用します。

    ```curl theme={null}
    curl -X \
    POST --url 'https://api.onesignal.com/notifications' \
     --header 'content-type: application/json; charset=utf-8' \
     --header 'authorization: Key YOUR_APP_API_KEY' \
     --data \
     '{
      "app_id": "YOUR_APP_ID",
      "target_channel": "push",
      "name": "Testing basic setup",
      "headings": {
      	"en": "👋"
      },
      "contents": {
        "en": "Hello world!"
      },
      "included_segments": [
        "Test Users"
      ],
      "ios_attachments": {
        "onesignal_logo": "https://avatars.githubusercontent.com/u/11823027?s=200&v=4"
      },
      "big_picture": "https://avatars.githubusercontent.com/u/11823027?s=200&v=4"
    }'
    ```
  </Step>

  <Step title="コードを実行します。">
    ターミナルでコードを実行します。
  </Step>

  <Step title="画像とconfirmed receiptを確認します。">
    すべてのセットアップ手順が正常に完了した場合、テストサブスクリプションは画像を含む通知を受信するはずです：

    <Frame caption="iOSとAndroidで画像付きプッシュ通知">
      <img src="https://mintcdn.com/onesignal/Z6xkXGfmy814If53/images/docs/e4e3e812eb6841ff11795a6ee0ea36eff483920ea9266733d6948ed34df3def3-Untitled_design_9.png?fit=max&auto=format&n=Z6xkXGfmy814If53&q=85&s=9bf6f4a73e38ec424b8cfec75a474a26" width="1200" height="800" data-path="images/docs/e4e3e812eb6841ff11795a6ee0ea36eff483920ea9266733d6948ed34df3def3-Untitled_design_9.png" />
    </Frame>

    <Info>画像は折りたたまれた通知ビューでは小さく表示されます。通知を展開すると、完全な画像が表示されます。</Info>
  </Step>

  <Step title="confirmed receiptを確認します。">
    ダッシュボードで、**Delivery > Sent Messages**に移動し、メッセージをクリックして統計を表示します。

    **confirmed**統計が表示されるはずです。これは、デバイスがプッシュを受信したことを意味します。
    <Check>API経由でセグメントに通知を送信することに成功しました。</Check>

    <Warning>
      * 画像が受信されない場合は、[Notification Service Extension](#ios-setup)が不足している可能性があります。
      * confirmed receiptがない場合は、[こちら](/docs/ja/confirmed-delivery#troubleshooting-confirmed-delivery)のトラブルシューティングガイドを確認してください。
      * 問題が発生した場合は、APIリクエストとアプリ起動の最初から最後までのログを`.txt`ファイルにコピー&ペーストしてください。その後、両方を`support@onesignal.com`と共有してください。
    </Warning>
  </Step>
</Steps>

### アプリ内メッセージを送信

[アプリ内メッセージ](/docs/ja/in-app-messages-setup)を使用すると、ユーザーがアプリを使用している間にユーザーとコミュニケーションできます。

<Steps>
  <Step title="デバイスでアプリを閉じるか、バックグラウンドにします。">
    これは、ユーザーが新しいセッションを開始する\_前\_にアプリ内オーディエンスの基準を満たす必要があるためです。OneSignalでは、ユーザーがアプリをバックグラウンドまたは閉じた状態から少なくとも30秒後に開くと、新しいセッションが開始されます。詳細については、[アプリ内メッセージの表示方法](/docs/ja/in-app-messages-setup#how-are-iams-displayed%3F)に関するガイドを参照してください。
  </Step>

  <Step title="アプリ内メッセージを作成します。">
    * OneSignalダッシュボードで、**Messages > In-App > New In-App**に移動します。
    * **Welcome**メッセージを見つけて選択します。
    * Audienceを、以前使用した**Test Users**セグメントに設定します。

    <Frame caption="「Test Users」セグメントをアプリ内メッセージでターゲティング">
      <img src="https://mintcdn.com/onesignal/3zq1PvSaqvUE2bIx/images/docs/2979dfb2c6e0711669ebe737d78d975dcfed9f8117bdd68846255b9fc91e4771-Screenshot_2025-03-17_at_14.56.23.png?fit=max&auto=format&n=3zq1PvSaqvUE2bIx&q=85&s=f705ee679a9248dab378305e15fa24bf" width="1410" height="752" data-path="images/docs/2979dfb2c6e0711669ebe737d78d975dcfed9f8117bdd68846255b9fc91e4771-Screenshot_2025-03-17_at_14.56.23.png" />
    </Frame>
  </Step>

  <Step title="必要に応じてメッセージコンテンツをカスタマイズします。">
    <Frame caption="アプリ内Welcomeメッセージのカスタマイズ例">
      <img src="https://mintcdn.com/onesignal/YOTSrtBSoqdrJ37A/images/docs/4c511ebdb04f33055556b9969bab8deee0d62154573cf0b41ffb25cc8431e7c0-Screenshot_2025-03-17_at_14.59.37.png?fit=max&auto=format&n=YOTSrtBSoqdrJ37A&q=85&s=6134cc70e578d1055f770edcbad47efb" width="1646" height="1070" data-path="images/docs/4c511ebdb04f33055556b9969bab8deee0d62154573cf0b41ffb25cc8431e7c0-Screenshot_2025-03-17_at_14.59.37.png" />
    </Frame>
  </Step>

  <Step title="トリガーを「On app open」に設定します。" />

  <Step title="頻度をスケジュールします。">
    \*\*Schedule > How often do you want to show this message?\*\*で、**Every time trigger conditions are satisfied**を選択します。

    <Frame caption="アプリ内メッセージのスケジュールオプション">
      <img src="https://mintcdn.com/onesignal/9_Q1FZLh6C0BFLq-/images/docs/c48ccaf33a74d5aa442c768a18b8e642024b89305aae665d613aee1d8bde43ec-Screenshot_2025-03-17_at_15.00.40.png?fit=max&auto=format&n=9_Q1FZLh6C0BFLq-&q=85&s=9a57431acffa267d22af4e19052fb5ee" width="1646" height="1070" data-path="images/docs/c48ccaf33a74d5aa442c768a18b8e642024b89305aae665d613aee1d8bde43ec-Screenshot_2025-03-17_at_15.00.40.png" />
    </Frame>
  </Step>

  <Step title="メッセージをライブにします。">
    **Make Message Live**をクリックして、Test Usersがアプリを開くたびにメッセージが利用できるようにします。
  </Step>

  <Step title="アプリを開いてメッセージを確認します。">
    アプリ内メッセージがライブになったら、アプリを開きます。次のように表示されるはずです：

    <Frame caption="デバイスに表示されたWelcomeアプリ内メッセージ">
      <img src="https://mintcdn.com/onesignal/RWtLFPeffHrC81wI/images/docs/a7ed4bb02be56900a65d2519e3d69f9c9b2c2a1c65fe740f07789e4ffe79cd67-Untitled_design_10.png?fit=max&auto=format&n=RWtLFPeffHrC81wI&q=85&s=6f692b569706ca39df0b4cc2b70f3de2" width="1920" height="1080" data-path="images/docs/a7ed4bb02be56900a65d2519e3d69f9c9b2c2a1c65fe740f07789e4ffe79cd67-Untitled_design_10.png" />
    </Frame>

    <Warning>
      メッセージが表示されない場合：

      * 新しいセッションを開始します
        * 再度開く前に、少なくとも30秒間アプリを閉じるかバックグラウンドにする必要があります。これにより、新しいセッションが開始されます。
        * 詳細については、[アプリ内メッセージの表示方法](/docs/ja/in-app-messages-setup#how-are-iams-displayed%3F)を参照してください。
      * まだ`Test Users`セグメントに含まれていますか？
        * アプリを再インストールしたりデバイスを切り替えたりした場合は、デバイスを[Test Users](#set-up-test-users)に再度追加し、Test Usersセグメントの一部であることを確認してください。
      * 問題が発生していますか？
        * 上記の手順を再現しながら[デバッグログの取得](/docs/ja/capturing-a-debug-log)に従ってください。これにより、`support@onesignal.com`と共有できる追加のログが生成され、何が起こっているかを調査するのに役立ちます。
    </Warning>
  </Step>
</Steps>

<Check>
  OneSignal SDKのセットアップが成功し、次のような重要な概念を学びました：

  * [サブスクリプション](/docs/ja/subscriptions)の収集、[テストサブスクリプション](/docs/ja/find-set-test-subscriptions)の設定、[セグメント](/docs/ja/segmentation)の作成。
  * セグメントと[Create message](/reference/create-message) APIを使用した画像付き[プッシュ](/docs/ja/push)と[Confirmed receipt](/docs/ja/confirmed-delivery)の送信。
  * [アプリ内メッセージ](/docs/ja/in-app-messages-setup)の送信。

  このガイドを続けて、アプリでユーザーを識別し、追加機能をセットアップします。
</Check>

***

## ユーザー識別

以前、モバイル[サブスクリプション](/docs/ja/subscriptions)の作成方法を説明しました。次に、OneSignal SDKを使用して、すべてのサブスクリプション（プッシュ、メール、SMSを含む）にわたる[ユーザー](/docs/ja/users)の識別に拡張します。プラットフォーム間でユーザーを統合し、エンゲージメントするために、External ID、タグ、マルチチャネルサブスクリプション、プライバシー、イベントトラッキングについて説明します。

### External IDを割り当て

External IDを使用して、バックエンドのユーザー識別子を使用して、デバイス、メールアドレス、電話番号間でユーザーを一貫して識別します。これにより、チャネルとサードパーティシステム間でメッセージングが統一されたままになります（特に[統合](/docs/ja/integrations)に重要）。

アプリによって識別されるたびに、SDKの[`login`メソッド](/docs/ja/mobile-sdk-reference#login-external-id)を使用してExternal IDを設定します。

<Note>
  OneSignalは、サブスクリプション（Subscription ID）とユーザー（OneSignal ID）に対して一意の読み取り専用IDを生成します。

  ユーザーが異なるデバイスでアプリをダウンロードしたり、ウェブサイトにサブスクライブしたり、アプリ外でメールアドレスや電話番号を提供したりすると、新しいサブスクリプションが作成されます。

  すべてのサブスクリプションにわたってユーザーを識別するために、SDK経由でExternal IDを設定することを強くお勧めします。作成方法に関係なく。
</Note>

### データタグを追加

[タグ](/docs/ja/add-user-data-tags)は、ユーザープロパティ（`username`、`role`、設定など）とイベント（`purchase_date`、`game_level`、ユーザーインタラクションなど）を保存するために使用できる文字列データのキーと値のペアです。タグは、高度な[メッセージパーソナライゼーション](/docs/ja/message-personalization)と[セグメンテーション](/docs/ja/segmentation)を強化し、より高度なユースケースを可能にします。

アプリでイベントが発生したときに、SDKの[`addTag`および`addTags`メソッド](/docs/ja/mobile-sdk-reference#data-tags)を使用してタグを設定します。

この例では、ユーザーはレベル6に到達し、`current_level`というタグで識別され、値は`6`に設定されます。

<Frame caption="&#x22;current_level&#x22;というタグが&#x22;6&#x22;に設定されたOneSignalのユーザープロファイル">
  <img src="https://mintcdn.com/onesignal/4HyuQPBpu-4xjmQC/images/docs/d4674261847231079fecc176ba88065409c90943e3854b9df200457325a0aed4-Screenshot_2025-03-18_at_14.47.25.png?fit=max&auto=format&n=4HyuQPBpu-4xjmQC&q=85&s=91083bf83a4c03ea40d485b23f072259" width="1380" height="941" data-path="images/docs/d4674261847231079fecc176ba88065409c90943e3854b9df200457325a0aed4-Screenshot_2025-03-18_at_14.47.25.png" />
</Frame>

レベルが5から10の間のユーザーのセグメントを作成し、それを使用してターゲット化されたパーソナライズされたメッセージを送信できます：

<Frame caption="current_level値が4より大きく10より小さいユーザーをターゲットとするセグメントを示すセグメントエディター">
  <img src="https://mintcdn.com/onesignal/3zq1PvSaqvUE2bIx/images/docs/300d36b632a6f6d7017780457bbe2610b71767fd0db093c7611e59714dcbda5b-Screenshot_2025-03-18_at_14.49.56.png?fit=max&auto=format&n=3zq1PvSaqvUE2bIx&q=85&s=b84ab0d2c6eedbd6d4e7a2bf15afe103" width="1380" height="941" data-path="images/docs/300d36b632a6f6d7017780457bbe2610b71767fd0db093c7611e59714dcbda5b-Screenshot_2025-03-18_at_14.49.56.png" />
</Frame>

<br />

<Frame caption="パーソナライズされたメッセージでLevel 5-10セグメントをターゲットとするプッシュ通知を示すスクリーンショット">
  <img src="https://mintcdn.com/onesignal/tc0EvmtSSX56SX0c/images/docs/97e09b42d25c6d3f4c7cb0a6fff4dfb8893cbb4b283f7ff1f77977c33113319c-Screenshot_2025-03-18_at_14.55.47.png?fit=max&auto=format&n=tc0EvmtSSX56SX0c&q=85&s=c7839b12057d65a12a4eaddce6e2c11f" width="2764" height="2286" data-path="images/docs/97e09b42d25c6d3f4c7cb0a6fff4dfb8893cbb4b283f7ff1f77977c33113319c-Screenshot_2025-03-18_at_14.55.47.png" />
</Frame>

<br />

<Frame caption="パーソナライズされたコンテンツを含むプッシュ通知がiOSおよびAndroidデバイスで受信されます">
  <img src="https://mintcdn.com/onesignal/_KaXe4GQkxsEfa17/images/docs/3bf1810580f30984745017056383f151b874513b6bfb1445fb1016e5c9a79e82-Untitled_design_12.png?fit=max&auto=format&n=_KaXe4GQkxsEfa17&q=85&s=94b6e9eeeb5516285a256a72063a0906" width="1920" height="1080" data-path="images/docs/3bf1810580f30984745017056383f151b874513b6bfb1445fb1016e5c9a79e82-Untitled_design_12.png" />
</Frame>

### メールおよび/またはSMSサブスクリプションを追加

以前、SDKがプッシュとアプリ内メッセージを送信するためにモバイルサブスクリプションを作成する方法を見ました。対応するサブスクリプションを作成することで、メールとSMSチャネルを通じてユーザーにリーチすることもできます。

* [`addEmail`メソッド](/docs/ja/mobile-sdk-reference#addemail-%2C-removeemail)を使用してメールサブスクリプションを作成します。
* [`addSms`メソッド](/docs/ja/mobile-sdk-reference#addsms-%2C-removesms)を使用してSMSサブスクリプションを作成します。

メールアドレスや電話番号がOneSignalアプリに既に存在する場合、SDKはそれを既存のユーザーに追加し、重複は作成しません。

ダッシュボードの**Audience > Users**または[View user API](/reference/view-user)を使用して、統合されたユーザーを表示できます。

<Frame caption="External IDによって統合されたプッシュ、メール、SMSサブスクリプションを持つユーザープロファイル">
  <img src="https://mintcdn.com/onesignal/56ctKxZSV4m5VEkn/images/docs/b1cf9999d41da6e4ce333e1126612529b85eac47447bb0b434418d082f595acd-Screenshot_2025-03-18_at_14.43.46.png?fit=max&auto=format&n=56ctKxZSV4m5VEkn&q=85&s=7c3885b66e44e097fa0ed7c47f27c911" width="1506" height="848" data-path="images/docs/b1cf9999d41da6e4ce333e1126612529b85eac47447bb0b434418d082f595acd-Screenshot_2025-03-18_at_14.43.46.png" />
</Frame>

<Note>
  マルチチャネルコミュニケーションのベストプラクティス

  * メールまたはSMSサブスクリプションを追加する前に、明示的な同意を得てください。
  * 各コミュニケーションチャネルの利点をユーザーに説明してください。
  * ユーザーが好むチャネルを選択できるように、チャネルの設定を提供してください。
</Note>

***

### プライバシーとユーザー同意

OneSignalがユーザーデータを収集するタイミングを制御するには、SDKの同意ゲーティングメソッドを使用します：

* [`setConsentRequired(true)`](/docs/ja/mobile-sdk-reference#setconsentrequired)：同意が与えられるまでデータ収集を防ぎます。
* [`setConsentGiven(true)`](/docs/ja/mobile-sdk-reference#setconsentgiven)：同意が付与されるとデータ収集を有効にします。

詳細については、プライバシーとセキュリティのドキュメントを参照してください：

* [SDKによって収集されるデータ](/docs/ja/data-collected-by-the-onesignal-sdk)
* [個人データの取り扱い](/docs/ja/handling-personal-data)

***

## プッシュ許可のプロンプト

アプリを開いたときにすぐに`requestPermission()`を呼び出すのではなく、より戦略的なアプローチを取ります。許可をリクエストする前に、アプリ内メッセージを使用してプッシュ通知の価値を説明します。

ベストプラクティスと実装の詳細については、[プッシュ許可のプロンプト](/docs/ja/prompt-for-push-permissions)ガイドを参照してください。

***

## プッシュ、ユーザー、アプリ内イベントをリッスン

SDKリスナーを使用して、ユーザーのアクションと状態の変化に反応します。

SDKは、フックできるいくつかのイベントリスナーを提供します。詳細については、[SDKリファレンスガイド](/docs/ja/mobile-sdk-reference)を参照してください。

### プッシュ通知イベント

* [`addClickListener()`](/docs/ja/mobile-sdk-reference#addclicklistener-push)：通知がタップされたときを検出します。[ディープリンク](/docs/ja/deep-linking)に役立ちます。
* [`addForegroundLifecycleListener()`](/docs/ja/mobile-sdk-reference#addforegroundlifecyclelistener-push)：フォアグラウンドでの通知の動作を制御します。

完全なカスタマイズについては、[Mobile Service Extensions](/docs/ja/service-extensions)を参照してください。

### ユーザー状態の変更

* [ユーザー状態用の`addObserver()`](/docs/ja/mobile-sdk-reference#addobserver-user-state)：External IDが設定されたときを検出します。
* [`addPermissionObserver()`](/docs/ja/mobile-sdk-reference#addpermissionobserver-push)：ネイティブのプッシュ許可プロンプトとのユーザーの特定のインタラクションを追跡します。
* [プッシュサブスクリプション用の`addObserver()`](/docs/ja/mobile-sdk-reference#addobserver-push-subscription-changes)：プッシュサブスクリプションのステータスが変更されたときを追跡します。

### アプリ内メッセージイベント

* [`addClickListener()`](/docs/ja/mobile-sdk-reference#addclicklistener-in-app)：アプリ内クリックアクションを処理します。ディープリンクやイベントの追跡に最適です。
* [`addLifecycleListener()`](/docs/ja/mobile-sdk-reference#addclicklistener-in-app)：アプリ内メッセージの完全なライフサイクル（表示、クリック、閉じるなど）を追跡します。

***

## 高度なセットアップと機能

統合を強化するための追加機能を探索します：

* [🔁 別のサービスからOneSignalへの移行](/docs/ja/migrating-to-onesignal)
* [🌍 位置情報トラッキング](/docs/ja/mobile-sdk-reference#location)
* [🔗 ディープリンク](/docs/ja/deep-linking)
* [🔌 統合](/docs/ja/integrations)
* [🧩 Mobile Service Extensions](/docs/ja/service-extensions)
* [🛎️ アクションボタン](/docs/ja/action-buttons)
* [🌐 多言語メッセージング](/docs/ja/multi-language-messaging)
* [🛡️ Identity Verification](/docs/ja/identity-verification)
* [📊 カスタムアウトカム](/docs/ja/custom-outcomes)
* [📲 Live Activities](/docs/ja/live-activities)

### Mobile SDKのセットアップとリファレンス

[モバイルプッシュセットアップ](/docs/ja/mobile-push-setup)ガイドを確認して、すべての主要機能が有効になっていることを確認してください。

利用可能なメソッドと設定オプションの詳細については、[Mobile SDKリファレンス](/docs/ja/mobile-sdk-reference)にアクセスしてください。

<Check>おめでとうございます！Mobile SDKセットアップガイドが正常に完了しました。</Check>

***

<Info>
  サポートが必要ですか？

  サポートチームとチャットするか、`support@onesignal.com`にメールしてください

  以下を含めてください：

  * 発生している問題の詳細と再現手順（利用可能な場合）
  * OneSignal App ID
  * 該当する場合は、External IDまたはSubscription ID
  * 該当する場合は、OneSignalダッシュボードでテストしたメッセージのURL
  * 関連する[ログまたはエラーメッセージ](/docs/ja/capturing-a-debug-log)

  お気軽にお問い合わせください！
</Info>

***
