OneSignalはリアルタイムコミュニケーション用に設計されていません。プッシュ通知は、ユーザーがアプリでアクティブでないときのフォールバックとして使用するのが最適です。リアルタイムのアプリ内メッセージングには、アプリの既存のメッセージングレイヤーを使用し、受信者がオフラインまたは非アクティブの場合にのみOneSignal通知をトリガーしてください。
ソーシャルアクティビティ
誰かがいいね、コメント、メンション、タグ付け、フォローしたときにユーザーに通知します。
ダイレクトメッセージ
デバウンスと会話へのディープリンクを使用して、新着メッセージをユーザーに知らせます。
ゲームアラート
拠点への攻撃、チャレンジ、ギルドアクティビティなど、時間的制約のある対戦イベントを送信します。
前提条件
開始する前に、以下を用意してください:- アプリにOneSignal SDKがインストールされていること。モバイルSDKセットアップまたはWeb SDKセットアップを参照してください。
- すべてのユーザーに
external_idが設定されており、独自の識別子でターゲティングできること。ユーザーとエイリアスを参照してください。 - ソーシャルアクションを検出してOneSignal APIを呼び出せるバックエンド。REST API概要を参照してください。
- パーソナライゼーションに
custom_dataを使用する予定の場合は、ダッシュボードで作成されたテンプレート。custom_dataを使用するにはtemplate_idが必須です。
ソーシャルアクティビティ通知
ユーザーがソーシャルアクションに関与したときにプッシュ通知を送信します。custom_dataを使用して、送信者の名前、アバター、関連するコンテキストを送信時にメッセージに挿入します。データはOneSignalに保存されません。
一般的なソーシャルアクション
セットアップ
1
バックエンドでアクションを検出
ソーシャルアクションが発生すると、バックエンドは送信者と受信者に加えて、投稿IDやコンテンツなどの関連コンテキストを特定します:
JSON
2
プッシュテンプレートを作成
ダッシュボードで、Messages > Templates > New Push Templateに移動します。Liquid構文を使用してメッセージ:画像(オプション、送信者のアバターを表示):テンプレートを保存し、その
custom_dataフィールドを参照します:見出し:Liquid
Liquid
Liquid
template_idをメモします。3
Create Message APIを呼び出す
バックエンドから、受信者に通知を送信します:OneSignalは、
JSON
custom_dataの値を使用して送信時にテンプレートをレンダリングします。送信者の名前とアバターは、OneSignalに保存されることなく通知に表示されます。4
オプション:メールとSMSのフォールバックを追加
プッシュを無効にしているユーザーや通知が配信されなかったユーザーにリーチするには、下記のメールとSMSのフォールバックを参照してください。
大量アクションのスロットリング
バイラルな投稿は、1秒あたり数千のlikeイベントを生成する可能性があります。それぞれに対してプッシュを送信しないでください — 受信者があふれ、アプリがミュートまたはアンインストールされる原因になります。パターンは次のとおりです:
- バックエンドでカウントを蓄積します(例:受信者と投稿をキーにしたRedisカウンター)。
- 静穏期間(10分が妥当なデフォルト)の後、1つのダイジェストプッシュを送信します:「12人があなたの投稿にいいねしました。」
- ダイジェスト後にさらにいいねが届いた場合は、新しい期間を開始します — すぐに再度プッシュしないでください。
ダイレクト(ユーザー間)メッセージ
ユーザーが新しいダイレクトメッセージを受信したときに通知し、会話に直接ディープリンクします。受信者がチャットでアクティブでない場合にのみプッシュを送信してください。すでに会話を読んでいる人に通知すると、悪い体験になります。通知をトリガーする前に、アプリ独自のロジックを使用して受信者が現在アクティブかどうかを確認してください。OneSignalは、ユーザーが現在アプリを使用しているかどうかを追跡しません。
セットアップ
1
メッセージ送信を検出してアクティビティを確認
ユーザーAがユーザーBにメッセージを送信したら、ユーザーBがその会話で現在アクティブかどうかを確認します。ユーザーBがオフラインまたは会話にいない場合は、プッシュ送信に進みます。
2
メッセージごとに1つのプッシュを送信しない
ユーザーAが連続して複数のメッセージを送信した場合は、最後のメッセージの後、通知をトリガーする前に少し待ちます。バックエンドでの実装方法は次のとおりです:
- 最初のメッセージが届いたら、タイマーを開始します(例:60秒)。
- タイマーが切れる前に別のメッセージが届いたら、タイマーをリセットします。
- 新しいメッセージなしでタイマーが切れたら、未読数をまとめた1つのプッシュを送信します。
3
プッシュ通知を送信
会話へのディープリンク付きのプッシュをユーザーBに送信します:アプリは通知オープン時に
JSON
data.conversation_idを読み取り、正しい画面に遷移します。プラットフォーム別のセットアップについては、ディープリンクを参照してください。4
オプション:メールとSMSのフォールバックを追加
プッシュを無効にしているユーザーや通知が配信されなかったユーザーにリーチするには、下記のメールとSMSのフォールバックを参照してください。
ゲーム:対戦およびソーシャルアラート
対戦ゲームは、緊急性を生み出す時間的制約のあるアラートから恩恵を受けます。custom_dataを使用して、これらの通知を具体的でパーソナルなものにします。攻撃者の名前を示したり正確なリソース数を表示する通知は、汎用的なアラートよりもはるかに魅力的です。
一般的な対戦イベント
セットアップ
1
ゲームバックエンドでイベントを検出
対戦イベントが発生すると、ゲームバックエンドは影響を受けるプレイヤーを特定し、関連コンテキストを取得します:
JSON
2
プッシュテンプレートを作成
ダッシュボードで、Liquid参照を使用したプッシュテンプレートを作成します:見出し:メッセージ:テンプレートを保存し、その
Liquid
Liquid
template_idをメモします。3
通知を送信
ゲームバックエンドからCreate Message APIを呼び出します:
JSON
urlは、プレイヤーを防衛画面に直接ディープリンクします。dataオブジェクトは、アプリの通知ハンドラーにコンテキストを渡し、正しいバトル状態を読み込めるようにします。4
オプション:メールとSMSのフォールバックを追加
プッシュを無効にしているプレイヤーや通知が配信されなかったプレイヤーにリーチするには、下記のメールとSMSのフォールバックを参照してください。
その他のゲームアラートの例
- Leaderboard overtake
- Guild event
- Challenge invite
テンプレートメッセージ:APIリクエスト:
Liquid
JSON
メールとSMSのフォールバック
あらゆる通知タイプにメールまたはSMSのフォールバックを追加して、プッシュを無効にしているユーザーや通知が配信されなかったユーザーにリーチします。View Message APIを使用して、配信確認またはクリックを確認します。遅延時間内にいずれも記録されない場合は、メールまたはSMSテンプレートで同じcustom_dataアプローチを使用してフォローアップを送信します。
- Email
- SMS
ソーシャルアクティビティメンションや直接の返信など、価値の高いアクションに最適です。メールテンプレートの例(件名):ダイレクトメッセージメッセージごとのアラートよりも、未読会話のデイリーダイジェストとして最適です。メールテンプレートの例(件名):メールテンプレートの例(本文、conversations配列を反復):ネストされたオブジェクトや条件付きレンダリングを含む配列反復の完全なリファレンスについては、API custom_dataでメッセージをパーソナライズを参照してください。ゲーム週間リーダーボードのまとめ、ギルド戦の結果、マイルストーンの解除など、緊急でないまとめに最適です。メールテンプレートの例(件名):
JSON
Liquid
JSON
Liquid
Liquid
JSON
Liquid
FAQ
OneSignalはチャットアプリのようにリアルタイムで通知を送信できますか?
いいえ。プッシュ通知はApple(APNs)とGoogle(FCM)のインフラを通じて配信されるため、配信時間にばらつきがあり、配信保証もありません。リアルタイムのアプリ内コミュニケーションにはアプリの既存のメッセージングレイヤーを使用し、受信者がアプリでアクティブでないときのフォールバックとしてOneSignalを使用してください。すでにアプリを使用しているユーザーに通知しないようにするには?
OneSignalは、ユーザーが現在アプリでアクティブかどうかを追跡しません。通知をトリガーするかどうかは、独自のバックエンドロジックで判断する必要があります。受信者がオフラインまたは該当画面にいないことを確認した場合にのみ、OneSignal APIを呼び出してください。連続したメッセージによる複数の通知を防ぐには?
通知を送信する前に、バックエンドで短い遅延を追加します。最初のメッセージが届いたらタイマーを開始します。タイマーが切れる前に別のメッセージが届いたら、リセットします。タイマーが切れたら、未読数を含む1つのプッシュを送信します。OneSignalは複数のAPI呼び出しを自動的に統合しないため、APIを5回呼び出すと5つの通知が送信されます。custom_dataはメッセージ送信後にユーザープロファイルに保存されますか?
いいえ。custom_dataは一時的なもので、APIリクエスト中にのみ存在し、送信時にテンプレートをレンダリングするために使用されます。OneSignalには保存されず、今後のメッセージやJourneysで再利用することはできません。永続的なユーザーデータには、タグを使用してください。
1回のAPI呼び出しで複数の受信者をターゲットにできますか?
はい。include_aliases配列に複数のexternal_id値を渡します。各受信者に異なるパーソナライズされたコンテンツ(たとえば、異なる攻撃者名)が必要な場合は、custom_dataの一括パーソナライゼーションパターンを使用します。完全なアプローチについては、API custom_dataでメッセージをパーソナライズを参照してください。呼び出しごとの正確な受信者上限とレート制限は、Create Message APIリファレンスに記載されています — 非常に大規模なオーディエンスには、呼び出しごとに数千のexternal_id値を渡すよりも、セグメントベースのターゲティングの方が効率的です。
国際的なユーザー向けにメッセージをローカライズする必要がありますか?
複数言語にまたがるオーディエンスの場合は、はい。headingsとcontentsフィールドは複数の言語コード(例:{ "en": "...", "es": "...", "fr": "..." })を受け入れ、OneSignalは各サブスクリプションの言語に基づいて適切なバリアントを選択します。同じパターンがテンプレートフィールドにも適用されます。フォールバック言語の動作を含む完全なリファレンスについては、多言語メッセージングを参照してください。
関連ページ
API custom_dataでメッセージをパーソナライズ
custom_dataとLiquid構文を使用して、動的なメッセージ固有のデータをテンプレートに挿入します。
メッセージのパーソナライゼーション
タグ、ユーザー属性、セグメンテーションを含む、OneSignalのすべてのパーソナライゼーションオプションの概要。
ディープリンク
通知をタップしたときに、ユーザーをアプリ内の特定の画面に誘導します。
アクティビティフィードを作成
OneSignalの通知インボックスを使用して、アプリ内にソーシャルアラートの履歴を表示します。
テンプレート
プッシュ、メール、SMS用の再利用可能なメッセージテンプレートを作成および管理します。
Create Message API
custom_data、ターゲティング、すべての利用可能なフィールドを含むメッセージ送信の完全なAPIリファレンス。