メインコンテンツへスキップ

概要

VoIPプッシュ通知は、Appleによって標準のプッシュ通知とは異なる方法で処理されます。これらのプラットフォームの制約により、OneSignalはVoIP通知の送信をサポートしていますが、VoIPトークンの登録は管理しません。 以下を行う必要があります:
  • Apple PushKitを使用してVoIPトークンを自分で登録する
  • VoIP専用のAPNs証明書をアップロードする
  • OneSignalのAPIを使用してトークンを登録し、通知を送信する
OneSignalはVoIP(PushKit)トークンを自動的に登録または更新しません。APIを使用してOneSignalにVoIPトークンを手動で登録する必要があります。

プラットフォームの違いの概要

プラットフォームVoIPプッシュのサポート動作方法
iOS✅ はいApple PushKitとVoIP APNs証明書を使用
Android❌ いいえ通話スタイルの動作をシミュレートするためにデータのみのプッシュを使用

クロスプラットフォームの通話アプリを構築している場合、プラットフォームごとに異なるアプローチを使用することになります。

Android:VoIPスタイルの動作をシミュレート(真のVoIPではない)

AndroidはVoIPプッシュ通知をサポートしていません。Apple PushKitに相当するものはありません。 代わりに、Androidの通話アプリは次を使用してVoIP動作をシミュレートします:
  • データのみのプッシュ通知
  • フォアグラウンドサービス
  • カスタム通話スタイルのUI
これを実現するために、OneSignalの通常のAndroidプッシュサポートとネイティブのAndroid APIを組み合わせて使用できます。 推奨されるアプローチ:
  • データのみの通知を送信する
  • アプリ内でそれらを処理して次を行う:
    • フォアグラウンドサービスを開始する
    • 通話UIアクティビティを起動する
    • カスタムの着信通知を表示する
通知のレンダリングをインターセプトして完全に制御したい場合は、AndroidのNotification Service Extensionを使用してください。 役立つリソース:
AndroidのセットアップはOneSignal固有のものではありません。OneSignalはプッシュペイロードを配信するだけで、アプリが通話動作を処理します。

iOS:真のVoIPプッシュ通知を送信する

iOSでは、VoIP通知はApple PushKitを使用し、標準のプッシュ通知とは異なる特別な配信ルールがあります。 OneSignalでのiOS VoIPの動作方法: iOS VoIP通知の場合:
  1. アプリがPushKitを使用してVoIPトークンを登録します
  2. OneSignalにVoIP Services APNs証明書をアップロードします
  3. APIを使用してOneSignalにVoIPトークンを登録します
  4. apns_push_type_override: “voip”を使用してVoIPプッシュを送信します
AppleがVoIPプッシュを異なる方法で処理するため、OneSignalもそれらを別個のアプリ構成として扱う必要があります。

1. PushKitを使用してVoIPトークンを登録する

AppleのPushKitフレームワークを使用してVoIP通知に登録し、VoIPトークンを受け取ります。
  • アプリにPushKitを実装する
  • AppleがローテーションするときにVoIPトークンを保存して更新する
  • AppleのVoIPポリシーに厳密に従う
Appleのリソース:

2. VoIPユーザー用の新しいOneSignalアプリを作成する

2つの別個のOneSignalアプリを維持する必要があります:
  • メインプッシュアプリ:標準のプッシュ通知用
  • VoIPアプリ:VoIP専用の通知用
両方のアプリは次を行う必要があります:
  • 同じiOS Bundle IDを使用する
  • 同じネイティブiOSアプリに関連付けられている

3. VoIP Services Certificateをアップロードする

VoIP OneSignalアプリで:
  • VoIP Services Certificate(.p12)をアップロードする
  • 標準のAPNs証明書を再利用しない
メインアプリと同じBundle IDを使用して、VoIPアプリ用の**VoIP Services Certificate(.p12)**をアップロードする必要があります。

キーチェーンアクセス内のVoIP証明書

OneSignalダッシュボードにアップロードされたVoIP証明書

4. OneSignalにVoIPトークンを登録する

Create User APIを使用して、VoIP OneSignalアプリにVoIPトークンを登録します。
VoIPトークンが開発またはサンドボックスビルドから来ている場合は、"test_type": 1プロパティを含める必要があります。これを省略すると:
  • API呼び出しは成功する可能性があります
  • プッシュは警告なしに失敗します
curl --request POST \
     --url https://api.onesignal.com/apps/YOUR_VOIP_APP_ID/users \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '
{
  "subscriptions": [
    {
      "type": "iOSPush",
      "token": "your-voip-token",
      "test_type": 1 // プロダクションでは省略
    }
  ]
}
'
後でトークンを更新するには、Update Subscription APIを使用します。

5. VoIP通知を送信する

Create Notification APIを使用し、次のパラメータを含めます:
  • "apns_push_type_override": "voip"
  • VoIPアプリのapp_id
  • 登録したVoIPトークンのsubscription_id
curl --include \
     --request POST \
     --header "Content-Type: application/json; charset=utf-8" \
     --header "Authorization: key YOUR_REST_API_KEY" \
     --data-binary '{
  "app_id": "YOUR_VOIP_APP_ID",
  "contents": {"en": "English Message"},
  "apns_push_type_override": "voip",
  "include_subscription_ids": ["YOUR_VOIP_SUBSCRIPTION_ID"]
}' \
https://api.onesignal.com/notifications

6. VoIPセットアップを検証する

次の場合、iOS VoIP統合は機能しています:
  1. VoIPアプリでVoIPトークンがiOSプッシュサブスクリプションとして表示される
  2. VoIPプッシュがpushRegistry(_:didReceiveIncomingPushWith:for:completion:)をトリガーする
  3. アプリが終了またはバックグラウンドの場合でもスリープ解除される

よくある質問

確認済み配信はVoIPで機能しますか?

いいえ、確認済み配信はVoIPプッシュでは追跡されません。これらはVoIP通知ではトリガーされないNotification Service Extensionに依存しています。 代わりに、ネイティブのiOS PushKitイベントを介して受信を追跡します:
pushRegistry(_:didReceiveIncomingPushWith:for:completion:)
このイベントはメインアプリターゲットの一部であり、別の拡張機能は不要です。詳細については、AppleのVoIPドキュメントを参照してください。