Android アプリ
Android 開発者ガイド
このドキュメントでは、LeadHub のネイティブ Android アプリ(Kotlin で記述)について説明します。このアプリは REST API を介して LeadHub インスタンスに接続します。アプリのビルド、カスタマイズ、またはデプロイが必要な開発者を対象としています。
必要条件
始める前に、以下が揃っていることを確認してください:
| 要件 | 詳細 |
|---|---|
| Android Studio | Hedgehog(2023.1.1)以降 |
| JDK | 17 以上 |
| 最低 API レベル | 26(Android 8.0) |
| LeadHub インスタンス | 有効な SSL 証明書を持つ HTTPS でアクセス可能 |
| API キー | ユーザーダッシュボードで生成 |
プロジェクトのセットアップ
1. プロジェクトを開く
Android Studio で android/ フォルダを開きます。Gradle が依存関係を自動的に同期します。
2. ベース URL を設定する
app/src/main/assets/config.xml を開き、インスタンスの URL を設定します:
<config>
<base_url>https://yourdomain.com</base_url>
</config>
3. 同期してビルド
Build → Make Project を実行して、すべてが正しくコンパイルされることを確認します。
アーキテクチャ
アプリは標準的な Android MVVM パターンを使用します:
| レイヤー | テクノロジー |
|---|---|
| ネットワーク | Retrofit + OkHttp |
| UI 状態 | ViewModel + LiveData |
| ローカルストレージ | Room(SQLite データベース) |
| プッシュ通知 | Firebase Cloud Messaging(FCM) |
| 認証情報の保存 | EncryptedSharedPreferences |
認証フロー
- ユーザーがログイン画面でインスタンス URL と API キーを入力します。
- アプリが
GET /api/healthを呼び出してインスタンスへのアクセス可能 性を確認します。 - アプリが API キーを Bearer トークンとして使用して
GET /api/users/meを呼び出します。 - 成功すると、API キーが EncryptedSharedPreferences に保存され、ユーザーは認証済みとみなされます。
プッシュ通知
アプリは新しいリードの通知に Firebase Cloud Messaging を使用します。
- Firebase Console でプロジェクトを作成します。
- アプリのパッケージ名で Android アプリを追加します。
google-services.jsonをダウンロードしてapp/に配置します。- バックエンドが通知を送信できるように、FCM サーバーキー(
FCM_SERVER_KEY)を LeadHub サーバー設定に追加します。
リリースビルド
1. Keystore を生成する
keytool -genkey -v -keystore leadhub.keystore -alias leadhub -keyalg RSA -keysize 2048 -validity 10000
2. 署名を設定する
アプリの build.gradle の signingConfigs セクションに keystore の詳細を追加します。
3. リリース APK / AAB をビルドする
Android Studio の Build → Generate Signed Bundle / APK を使用するか、以下を実行します:
./gradlew bundleRelease
出力された AAB ファイルは app/build/outputs/bundle/release/ にあります。
4. Google Play にアップロードする
Google Play Console の 製品版 → 新しいリリースを作成 で AAB ファイルをアップロードします。
使用する API エンドポイント
| エンドポイント | 目的 |
|---|---|
GET /api/health | インスタンスのアクセス可能性を確認 |
GET /api/users/me | API キーを検証しユーザー情報を取得 |
GET /api/leads | リード一覧を取得 |
GET /api/leads/{id} | リードの詳細を取得 |
PUT /api/leads/{id} | リードを更新 |
GET /api/pipelines | パイプラインとステージを取得 |
必要な最小 API キースコープ
| スコープ | 理由 |
|---|---|
read:leads | リードの表示 |
write:leads | アプリからリードを更新 |
read:pipelines | パイプラインステージを表示 |