ステップ0. OneSignalでFCMを設定する(プッシュ配信に必須)
このステップを完了しなくても、OneSignal Android SDKをインストールして初期化できます。ただし、OneSignalアプリでFirebase Cloud Messaging(FCM)の認証情報が設定されるまで、プッシュ通知は配信されません。OneSignalアプリを設定する手順。
OneSignalアプリを設定する手順。
- https://onesignal.comにログインし、アプリを作成または選択します。
- Settings > Push & In-Appに移動します。
- Google Android (FCM)を選択し、セットアップウィザードをContinueで進めます。
- FCMサービスアカウントJSONをアップロードします。
- セットアップウィザードを続行してApp IDを取得します。これはSDKの初期化に使用されます。
セットアップの契約と要件
このセクションでは、ガイド全体で使用するツール、バージョン、前提条件をまとめています。- SDKバージョン:
5.6.1+(最新版:releasesを確認) - AIセットアップ手順:
https://raw.githubusercontent.com/OneSignal/sdk-ai-prompts/main/docs/android/ai-prompt.md - SDKリポジトリ:
https://github.com/OneSignal/OneSignal-Android-SDK - Android Studio: Meerkat | 2024.3.1+
- Android API: 最低23+(Android 6.0+)、推奨31+(Android 12+)
- デバイス/エミュレータ: Google Play Servicesがインストールされた Android 7.0+
- 必須依存関係:
com.onesignal:OneSignal:[5.6.1, 5.99.99] - Applicationクラス: SDKの適切な初期化に必須
- App ID形式: 36文字のUUID(例:
12345678-1234-1234-1234-123456789012)。Dashboard > Settings > Keys & IDsで確認できます。 - 初期化:
OneSignal.initWithContext(this, "YOUR_APP_ID") - バッテリー最適化: バックグラウンド通知に影響する可能性があります
- 推奨:
OneSignal.login("user_id")でExternal IDを割り当て、デバイス間でユーザーを統一
Androidセットアップ手順
以下の手順を完了すると:- AndroidアプリにOneSignal SDKがインストールされ、初期化されます
- 実機でプッシュ通知の権限プロンプトが正しく表示されます
- テストプッシュとアプリ内メッセージが正常に配信されます
ステップ1. OneSignal SDKを追加する
- Android Studioで、
build.gradle.kts (Module: app)またはbuild.gradle (Module: app)ファイルを開きます dependenciesセクションにOneSignalを追加します:

アプリのbuild.gradle.ktsファイルにOneSignalを追加する例。
- Gradleを同期: 表示されるバナーのSync Nowをクリックするか、File > Sync Project with Gradle Filesに移動します
ステップ2. Applicationクラスを作成して設定する
すべてのエントリポイントで適切なSDKセットアップを確保するため、ApplicationクラスのonCreateメソッドでOneSignalを初期化することがベストプラクティスです。
Applicationクラスがまだない場合は作成してください:
- File > New > Kotlin Class/File(またはJava Class)
- 名前:
ApplicationClass(またはお好みの名前)

ApplicationClassという名前の新しいKotlinクラスを作成する例。
YOUR_APP_IDをDashboard > Settings > Keys & IDsで取得した実際のOneSignal App IDに置き換えてください。

ApplicationClass.ktファイルの例。
- アプリの
AndroidManifest.xmlを開きます <application>タグにandroid:name=".ApplicationClass"を追加します(異なるクラス名を設定した場合は.ApplicationClassを置き換えてください)。

.ApplicationClass名を含むAndroidManifest.xml。
ステップ3. デフォルト通知アイコンを設定する(推奨)
デフォルトのベルアイコンを、ic_stat_onesignal_defaultという名前の小さいアイコンに置き換えてください。透明な背景にモノクロのシルエットを使用してください。そうしないと、Androidは白い四角を表示します。
- Android Asset Studioで各密度のアイコンを生成します。
ic_stat_onesignal_defaultを各密度フォルダに配置します:res/drawable-mdpi/(24×24)からres/drawable-xxxhdpi/(96×96)まで。
ステップ4. 統合をテストする
サブスクリプションの作成を確認:- Google Play Servicesが搭載されたデバイスまたはエミュレータでアプリを起動します。
- Dashboard > Audience > Subscriptionsを確認します。ステータスがNever Subscribedと表示されます。
- 権限プロンプトが表示されたら承認します。
- ダッシュボードを更新します。ステータスがSubscribedに変わります。

Androidのプッシュ権限プロンプト

ダッシュボードに「Never Subscribed」ステータスのサブスクリプションが表示される

プッシュ権限を許可した後、ダッシュボードを更新するとサブスクリプションステータスが「Subscribed」に更新されます
テストユーザーとセグメントを作成する
- サブスクリプションの横にあるOptions > Add as test userを選択し、名前を入力します。
- Audience > Segments > New Segmentに移動します。
- 名前:
Test Users、Test Usersフィルターを追加 > Create Segment。

テストユーザーを追加する

Test Usersフィルターで「Test Users」セグメントを作成する
APIでテストプッシュを送信する
- **Settings > Keys & IDs**に移動します。
- 提供されたコードで、以下のコードの
YOUR_APP_API_KEYとYOUR_APP_IDを実際のキーに置き換えてください。このコードは先ほど作成したTest Usersセグメントを使用します。

折りたたんだ通知ビューでは画像が小さく表示されます。通知を展開すると完全な画像が表示されます。

確認済み受信を示す配信統計(無料プランでは利用不可)
アプリ内メッセージをテストする
- アプリを30秒以上閉じます
- Dashboard > Messages > In-App > New In-App > Welcomeテンプレートを選択
- オーディエンス:Test Usersセグメント
- トリガー:On app open
- スケジュール:Every time trigger conditions are satisfied
- Make Message Liveをクリック
- アプリを開きます

アプリ内メッセージで「Test Users」セグメントをターゲティング

アプリ内Welcomeメッセージのカスタマイズ例

アプリ内メッセージのスケジュールオプション

デバイスに表示されるWelcomeアプリ内メッセージ
一般的なエラーと修正
ユーザー管理
以前、モバイルサブスクリプションの作成方法を説明しました。ここでは、OneSignal SDKを使用して、すべてのサブスクリプション(プッシュ、メール、SMSを含む)を通じてユーザーを識別する方法に拡張します。External IDを割り当てる(推奨)
External IDを使用して、バックエンドのユーザー識別子でデバイス、メールアドレス、電話番号を横断してユーザーを一貫して識別します。これにより、チャネルとサードパーティシステム間でメッセージングが統一されます。loginメソッドの詳細をご覧ください。タグとカスタムイベントを追加する
タグとカスタムイベントはどちらもユーザーにデータを追加します。タグはkey-value文字列で、ユーザープロパティ(username、role、statusなど)に使用します。カスタムイベントはJSONを使用し、通常はアクション(new_purchaseやabandoned_cartなど)を表します。両方ともメッセージパーソナライゼーションとJourneysを駆動するために使用できます。
メールおよび/またはSMSサブスクリプションを追加する
プッシュ通知に加えて、メールとSMSを通じてユーザーにリーチできます。メールアドレスや電話番号がすでにOneSignalアプリに存在する場合、SDKは既存のユーザーに追加し、重複を作成しません。先にlogin()を呼び出して、アドレスが識別済みのユーザーに紐づくようにしてください。

External IDで統一されたプッシュ、メール、SMSサブスクリプションを持つユーザープロファイル
- メールまたはSMSサブスクリプションを追加する前に明示的な同意を取得してください。
- 各コミュニケーションチャネルの利点をユーザーに説明してください。
- チャネル設定を提供して、ユーザーが希望するチャネルを選択できるようにしてください。
プライバシーとユーザー同意
OneSignalがユーザーデータを収集するタイミングを制御するには、SDKの同意管理メソッドを使用します。consentRequiredはinitWithContextの前に呼び出してください。
プッシュ権限のプロンプト
アプリを開いた直後にrequestPermission()を呼び出す代わりに、より戦略的なアプローチを取りましょう。アプリ内メッセージを使用して、権限をリクエストする前にプッシュ通知の価値を説明してください。
ベストプラクティスと実装の詳細については、プッシュ権限のプロンプトガイドをご覧ください。
プッシュ、ユーザー、アプリ内イベントをリッスンする
SDKリスナーを使用して、ユーザーのアクションと状態変化に反応します。OneSignal.initWithContext()の後にApplicationクラスに追加してください。
プッシュ通知イベント
ユーザー状態の変更
この例では、プッシュサブスクリプションオブザーバーを使用しています。ユーザー状態オブザーバーと通知権限オブザーバーは、モバイルSDKリファレンスで確認できます。アプリ内メッセージイベント
追加のアプリ内メッセージメソッドは、モバイルSDKリファレンスで確認できます。高度なセットアップと機能
Android固有の機能
- 通知チャネル: 通知をカテゴリに整理する(Android 8.0+)
- サービス拡張: 高度な通知カスタマイズ
- Huawei/HMS: Google Play Servicesの代替
ユニバーサル機能
- ディープリンク:通知からユーザーを特定の画面に誘導
- アクションボタン:通知にインタラクティブなボタンを追加
- 本人確認:安全なユーザー識別
- 位置情報トラッキング:位置情報ベースのターゲティング
- インテグレーション:分析およびデータプラットフォームとの接続
- 多言語メッセージング:ローカライズされた通知
FAQ
Android StudioがOneSignalを解決できないのはなぜですか?
SDK依存関係がないか、Gradleが同期されていません。アプリモジュールのbuild.gradleにcom.onesignal:OneSignal:[5.6.1, 5.99.99]を追加し、File > Sync Project with Gradle Filesを使用してください。
Applicationクラスが見つからないのはなぜですか?
クラスがマニフェストに登録されていません。AndroidManifest.xmlの<application>タグにandroid:name=".ApplicationClass"(またはお使いのクラス名)を追加してください。
エミュレータでGoogle Play Servicesが利用できないと表示されるのはなぜですか?
エミュレータのイメージにPlay Servicesが含まれていません。Play Storeが搭載されたデバイス、またはGoogle APIsを含むエミュレータのシステムイメージを使用してください。通知にデフォルトのAndroidアイコンが表示されるのはなぜですか?
小さいアイコンがないか、名前が間違っています。各res/drawable-*密度フォルダにic_stat_onesignal_defaultを追加してください。通知アイコンをご覧ください。
テストデバイスにプッシュが届かなかったのはなぜですか?
FCM認証情報が設定されていないか、デバイスが購読していません。ステップ0を完了し、サブスクリプションステータスがSubscribedであることを確認してください。それでも解決しない場合は、モバイルプッシュが表示されないをご覧ください。アプリ内メッセージが表示されないのはなぜですか?
アプリ内メッセージには新しいセッションが必要です。アプリを強制終了するか、30秒以上バックグラウンドにしてから再度開いてください。デバイスがまだTest Usersセグメントに含まれていることを確認してください。セッションとアプリ内メッセージの表示方法をご覧ください。Manifest merger failedの原因は何ですか?
<application>のandroid:name値の競合、または権限の重複です。マージ済みマニフェストで2つ目のApplicationクラスを検索し、android:nameを1つだけ残してください。
バッテリー最適化が通知をブロックするのはなぜですか?
一部のOEMはバックグラウンド処理を制限します。デバイスのスリープ後に通知が止まる場合は、ユーザーにアプリのバッテリー最適化を無効にするよう依頼してください。より多くのログ出力を取得するにはどうすればよいですか?
OneSignal.Debug.logLevel = LogLevel.VERBOSE(Kotlin)またはOneSignal.getDebug().setLogLevel(LogLevel.VERBOSE)(Java)を設定し、問題を再現してlogcatをキャプチャしてください。デバッグログの取得をご覧ください。
support@onesignal.comにメールしてください以下を含めてください:- 発生している問題の詳細と再現手順(利用可能な場合)
- OneSignal App ID
- 該当する場合は、External IDまたはSubscription ID
- 該当する場合は、OneSignalダッシュボードでテストしたメッセージのURL
- 関連するログまたはエラーメッセージ