# Mobile Pushセットアップ

## 概要

Engage StudioからMobile Pushキャンペーンを送信する前に、Firebase Cloud Messaging (FCM) を設定し、Treasure Dataと統合する必要があります。このガイドでは、AndroidとiOSの両プラットフォームの完全なセットアッププロセスを説明します。

## 必要要件

- **Firebaseプロジェクト**: Cloud Messagingが有効なFirebaseプロジェクト
- **Apple Developer Account**: iOSプッシュ通知 (APNs) に必要
- **Treasure アカウント**: 統合を設定するための適切な権限


## アーキテクチャ概要

Engage StudioのMobile Push通知は次のフローで動作します:

1. **キャンペーン作成**: Engage Studioでターゲットオーディエンスとコンテンツを含むキャンペーンを作成
2. **配信パイプライン**: Engage StudioがデバイストークンとペイロードをFirebase Cloud Messagingに送信
3. **FCM/APNs**: FirebaseがAndroid (FCM経由) とiOS (APNs経由) に通知を配信
4. **モバイルアプリ**: アプリが通知を受信し、ユーザーアクションをトラッキング
5. **イベントトラッキング**: アプリがイベントをTreasure Dataに送り返して分析



```
┌─────────────────┐
│ Engage Studio   │
│   Campaign      │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│  Firebase       │
│  Cloud          │
│  Messaging      │
└────────┬────────┘
         │
    ┌────┴────┐
    │         │
    ▼         ▼
┌────────┐ ┌────────┐
│ FCM    │ │ APNs   │
│Android │ │  iOS   │
└───┬────┘ └───┬────┘
    │          │
    ▼          ▼
┌──────────────────┐
│   Mobile App     │
│ (Customer-built) │
└────────┬─────────┘
         │
         ▼
┌─────────────────┐
│ Treasure Data   │
│  (Event Logs)   │
└─────────────────┘
```

## ステップ1: Firebaseプロジェクトのセットアップ

### 1.1 Firebaseプロジェクトを作成または選択

1. [Firebase Console](https://console.firebase.google.com/)にアクセス
2. **プロジェクトを追加**をクリックするか、既存のプロジェクトを選択
3. ウィザードに従ってプロジェクト作成を完了


### 1.2 Androidアプリを登録

1. Firebase Consoleで**Androidアイコン**をクリック
2. Androidパッケージ名を入力 (例: `com.example.myapp`)
  - これは`build.gradle`ファイルの`applicationId`と一致する必要があります
3. オプションでアプリのニックネームとSHA-1証明書を入力
4. **アプリを登録**をクリック
5. `google-services.json`ファイルをダウンロード
  - このファイルをAndroidアプリの`app/`ディレクトリに配置
6. SDKセットアップ手順に従う（Android開発者ガイドで説明）


### 1.3 iOSアプリを登録

1. Firebase Consoleで**iOSアイコン**をクリック
2. iOSバンドルIDを入力 (例: `com.example.myapp`)
  - これはXcodeのBundle Identifierと一致する必要があります
3. オプションでアプリのニックネームとApp Store IDを入力
4. **アプリを登録**をクリック
5. `GoogleService-Info.plist`ファイルをダウンロード
  - このファイルをXcodeプロジェクトルートに追加
6. SDKセットアップ手順に従う（iOS開発者ガイドで説明）


## ステップ2: Apple Push Notification Service (APNs) の設定

このステップは**iOSプッシュ通知に必須**です。AndroidはFCMを直接使用するため、APNsは不要です。

### 2.1 APNs認証キーを作成

1. [Apple Developer Portal](https://developer.apple.com/account/)にログイン
2. **Certificates, Identifiers & Profiles** > **Keys**に移動
3. **+**ボタンをクリックして新しいキーを作成
4. キー名を入力 (例: "My App APNs Key")
5. **Apple Push Notifications service (APNs)**にチェック
6. **Continue**をクリックし、次に**Register**をクリック
7. `.p8`キーファイルをダウンロード
  - **重要**: このファイルを安全に保存してください — ダウンロードは1回のみ可能です


### 2.2 APNsキーをFirebaseにアップロード

1. Firebase Consoleで**Project Settings** > **Cloud Messaging**に移動
2. **Apple app configuration**の下で**Upload**をクリック
3. 次の情報を提供:
  - **APNs Authentication Key**: `.p8`ファイルをアップロード
  - **Key ID**: Apple Developer PortalのKeysで確認
  - **Team ID**: Apple Developer PortalのMembershipで確認
4. **Upload**をクリック


## ステップ3: Integration Hubの設定

Engage Studioからプッシュ通知を送信するには、Treasure DataのIntegration HubでFirebase統合を設定する必要があります。

### 3.1 Firebase Streaming Connectorを登録

1. Treasure コンソールにログイン
2. **Integration Hub** > **Catalog**に移動
3. **Firebase Cloud Messaging** (Streaming Egress Connector) を検索
4. **Create Authentication**をクリック
5. 認証を設定:


| フィールド | 説明 | 例 |
|  --- | --- | --- |
| **Authentication Name** | この設定の説明的な名前 | `fcm-production` |
| **Firebase Project ID** | Firebase ConsoleからのFirebaseプロジェクトID | `my-app-12345` |
| **Service Account JSON** | Firebase Consoleからのサービスアカウント鍵ファイル (Settings > Service Accounts > Generate new private key) | ダウンロードしたJSONファイルをアップロード |


1. **Save**をクリック


### 3.2 Treasure Engage Connectorを設定

Treasure Engage Connectorは、Engage Studioからのキャンペーン配信を認証するために使用されます。

1. **Integration Hub** > **Catalog**に移動
2. **Treasure Engage**を検索
3. **Create Authentication**をクリック
4. 認証を設定:


| フィールド | 説明 |
|  --- | --- |
| **Authentication Name** | このコネクタの説明的な名前
例: `engage-master-key` |
| **Master API Key** | Treasure Data Master API Key
**セキュリティ注意**: このキーはアカウント全体へのアクセス権を持ちます。安全に保存し、定期的にローテーションしてください。 |


1. **Save**をクリック


## ステップ4: 設定を確認

### 4.1 Firebase接続をテスト

次の手順でFirebaseセットアップを確認できます:

1. Firebase Consoleで**Cloud Messaging**に移動
2. **Send your first message**をクリック
3. 通知のタイトルとテキストを入力
4. **Send test message**をクリック
5. デバイスFCMトークンを入力（開発者ガイド実装後、アプリログから取得可能）
6. デバイスに通知が表示されることを確認


### 4.2 Integration Hub認証を確認

Treasure コンソールで:

1. **Integration Hub** > **Authentications**に移動
2. 両方の認証がリストに表示されることを確認:
  - Firebase Cloud Messaging (Streaming Egress)
  - Treasure Engage
3. ステータスが**Active**と表示されていることを確認


## ステップ5: モバイルアプリの実装

この時点で、FirebaseとTreasure Dataの統合が設定されました。次のステップは、モバイルアプリでプッシュ通知処理を実装することです。

開発者による実装が必要
一部のマーケティングプラットフォームとは異なり、Treasure Dataはモバイルプッシュ通知用の事前構築SDKを提供していません。開発チームは、AndroidおよびiOSアプリに次の機能を実装する必要があります:

1. **FCM/APNsトークン登録**: デバイストークンを取得し、Treasure Dataに送信
2. **通知表示**: 受信したプッシュ通知を処理
3. **ユーザーアクショントラッキング**: 配信、開封、削除、リンク/ディープリンクイベントをトラッキング
4. **イベントアップロード**: イベントデータをTreasure Data Ingest APIに送信


詳細な実装手順については、次を参照してください:

- [Android開発者ガイド](/ja/products/marketing-cloud/engage-studio/channels/mobile-push/developer-guide-android)
- [iOS開発者ガイド](/ja/products/marketing-cloud/engage-studio/channels/mobile-push/developer-guide-ios)


## セキュリティベストプラクティス

### APIキー管理

- **APIキーをソースコントロールにコミットしない**: 環境変数またはセキュアなキー管理サービスを使用
- **定期的にキーをローテーション**: Master API KeyとFirebaseサービスアカウントキーを定期的に変更
- **開発と本番で別々のキーを使用**: 各環境に対して異なるFirebaseプロジェクトとTreasure Data書き込みキーを作成
- **キー権限を制限**: アプリ側のイベントトラッキングには書き込み専用キーを使用


### Firebaseサービスアカウントの権限

Firebaseサービスアカウント鍵を生成する際:

1. Firebase Console > **Project Settings** > **Service Accounts**に移動
2. **Generate new private key**をクリック
3. ダウンロードしたJSONファイルを安全に保存
4. サービスアカウントに最小限の必要な権限のみがあることを確認:
  - **Firebase Cloud Messaging API**: 有効
  - 不要なロールを削除


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

### 問題: iOSで通知が受信されない

**考えられる原因:**

- APNsキーがFirebaseにアップロードされていない
- XcodeとFirebase間のBundle IDの不一致
- デバイスで通知権限が許可されていない
- アプリがリモート通知用に正しく登録されていない


**解決策:**

1. APNsキーがFirebase Consoleに正しくアップロードされていることを確認
2. Bundle IDが完全に一致することを確認（大文字小文字を区別）
3. iOS設定 > 通知で通知権限ステータスを確認
4. [iOS開発者ガイド](/ja/products/marketing-cloud/engage-studio/channels/mobile-push/developer-guide-ios)で実装を確認


### 問題: Androidで通知が受信されない

**考えられる原因:**

- `google-services.json`がプロジェクトに追加されていない
- パッケージ名の不一致
- Firebase Cloud Messagingが有効になっていない
- デバイスがオフラインまたはFCMトークンが期限切れ


**解決策:**

1. `google-services.json`が`app/`ディレクトリにあることを確認
2. `build.gradle`のパッケージ名がFirebase登録と一致することを確認
3. Firebase ConsoleでFCMが有効になっていることを確認
4. デバイスから新しいFCMトークンをリクエスト
5. [Android開発者ガイド](/ja/products/marketing-cloud/engage-studio/channels/mobile-push/developer-guide-android)で実装を確認


### 問題: Integration Hubで認証に失敗

**考えられる原因:**

- Master API Keyが正しくない
- Firebaseサービスアカウント鍵が無効または期限切れ
- Firebase Project IDが正しくない


**解決策:**

1. Master API Keyが正しくアクティブであることを確認
2. Firebase Consoleから新しいサービスアカウントキーを生成
3. Firebase Project IDを再確認（Firebase Console > Project Settingsで確認）


## 次のステップ

このセットアップが完了したら:

1. **モバイルアプリ機能を実装**:
  - [Android開発者ガイド](/ja/products/marketing-cloud/engage-studio/channels/mobile-push/developer-guide-android)
  - [iOS開発者ガイド](/ja/products/marketing-cloud/engage-studio/channels/mobile-push/developer-guide-ios)
2. **最初のキャンペーンを作成**:
  - [Mobile Pushキャンペーン概要](/ja/products/marketing-cloud/engage-studio/channels/mobile-push)を参照
3. **イベントトラッキングをセットアップ**:
  - [Push Eventsテーブル](/ja/products/marketing-cloud/engage-studio/channels/mobile-push/push-events-table)を参照


## 追加リソース

- [Firebase Cloud Messaging Documentation](https://firebase.google.com/docs/cloud-messaging)
- [Apple Push Notification Service Documentation](https://developer.apple.com/documentation/usernotifications)
- [Treasure Data Integration Hub](/products/customer-data-platform/integration-hub)