- Apple PushKitを使用してアプリでVoIPトークンを登録する
- VoIP Services Certificateを使用した専用のOneSignalアプリを作成する
- OneSignal REST APIを通じてトークンを登録し、プッシュを送信する
プラットフォームの違い
| プラットフォーム | VoIPプッシュのサポート | 動作方法 |
|---|---|---|
| iOS | Yes | Apple PushKitとVoIP APNs証明書を使用 |
| Android | No | 通話スタイルの動作をシミュレートするためにデータのみのプッシュを使用 |
iOS:VoIPプッシュ通知を送信する
iOSでは、VoIP通知はApple PushKitを使用し、標準のプッシュ通知とは異なる特別な配信ルールに従います。AppleがVoIPプッシュを異なる方法で処理するため、OneSignalはVoIP用に別個のアプリ構成を必要とします。PushKitを使用してVoIPトークンを登録する
AppleのPushKitフレームワークを使用してVoIP通知に登録し、VoIPトークンを受け取ります。
Appleのリソース:
- アプリにPushKitを実装する
- AppleがローテーションするときにVoIPトークンを保存して更新する
- AppleのVoIPポリシーに厳密に従う
例:PushKitデリゲートの実装
例:PushKitデリゲートの実装
これは標準のApple PushKitコードです。OneSignalはPushKit SDKを提供していません — トークンをご自身で登録し、ステップ4でOneSignalに渡します。
VoIP用の別個のOneSignalアプリを作成する
Apple VoIPプッシュは標準のプッシュ通知とは異なる証明書タイプを必要とします。1つのOneSignalアプリは1種類の証明書しか使用できないため、2つの別個のOneSignalアプリを作成する必要があります:
- メインプッシュアプリ:標準のプッシュ通知用のAPNs証明書を使用
- VoIPプッシュアプリ:VoIP専用の通知用のVoIP Services Certificateを使用
Bundle ID(例:
com.yourcompany.appname)は、XcodeのターゲットのGeneralタブで確認できます。VoIP Services Certificateをアップロードする
VoIP OneSignalアプリで、**VoIP Services Certificate(.p12)**をアップロードします。これは通常の通知に使用する標準のAPNsプッシュ証明書とは異なる証明書タイプです。作成手順:

- Apple Developer Portalにアクセスする
- VoIP Services Certificateを選択する
- 画面の指示に従って証明書を生成してダウンロードする
- Keychain Accessで開き、
.p12ファイルとしてエクスポートする - VoIP OneSignalアプリのiOS設定に
.p12ファイルをアップロードする


OneSignalにVoIPトークンを登録する
Create User APIを使用して、VoIP OneSignalアプリにVoIPトークンを登録します。後でトークンを更新するには、Update Subscription APIを使用します。
有効なVoIPトークンは64文字の小文字16進数文字列です(例:
a1b2c3d4e5f6...)。PushKitはiOSシミュレーターでは動作しません — 有効なトークンを取得するには実機を使用する必要があります。VoIP通知を送信する
Create Notification APIを使用し、以下のパラメータを指定します:
"apns_push_type_override": "voip"— これがVoIPプッシュであることをAppleに通知するapp_id— VoIPアプリのIDinclude_subscription_ids— 登録したVoIPサブスクリプションIDcontentsまたはcontent_availableのいずれかが必要
VoIPセットアップを確認する
以下の場合、iOS VoIP統合は正しく機能しています:
- VoIPアプリでVoIPトークンがiOSプッシュサブスクリプションとして表示される
- VoIPプッシュがアプリ内の
pushRegistry(_:didReceiveIncomingPushWith:for:completion:)をトリガーする - アプリが終了またはバックグラウンドの状態でもウェイクアップされる
Android:VoIPスタイルの動作をシミュレートする
AndroidはVoIPプッシュ通知をサポートしていません。Apple PushKitに相当するものはありません。 代わりに、Androidの通話アプリは以下を使用してVoIP動作をシミュレートします:- データのみのプッシュ通知
- フォアグラウンドサービス
- カスタム通話スタイルのUI
- データのみの通知を送信する
- アプリ内でそれらを処理して:
- フォアグラウンドサービスを開始する
- 通話UIアクティビティを起動する
- カスタムの着信通知を表示する
AndroidのセットアップはOneSignal固有のものではありません。OneSignalはプッシュペイロードを配信するだけで、アプリが通話動作を処理します。
よくある質問
確認済み配信はVoIPで機能しますか?
いいえ。確認済み配信はVoIPプッシュでは追跡されません。確認済み配信はNotification Service Extensionに依存していますが、VoIP通知ではこれがトリガーされません。 代わりに、ネイティブのiOS PushKitイベントを通じて受信を追跡します:OneSignalダッシュボードからVoIP通知を送信できますか?
いいえ。VoIP通知は"apns_push_type_override": "voip"を使用してCreate Notification API経由で送信する必要があります。ダッシュボードはこのパラメータをサポートしていません。
VoIPプッシュがサイレントに失敗するのはなぜですか?
VoIPプッシュは、OneSignal APIからのエラーなしに失敗することがあります。以下のチェックリストで確認してください:- サンドボックス/開発ビルドを使用していますか? Create User APIでトークンを登録する際に
"test_type": 1を含める必要があります。これを省略すると、トークンがプロダクション用として登録され、Appleがプッシュを拒否してサイレントに失敗します。 - 正しい証明書をアップロードしましたか? VoIP OneSignalアプリは標準のAPNsプッシュ証明書ではなく、**VoIP Services Certificate(.p12)**を使用する必要があります。Keychain Accessでは両方が似て見えますが、証明書名が「VoIP Services」で始まることを確認してください。
- 正しいOneSignalアプリに送信していますか? 送信リクエストの
app_idはメインのプッシュアプリではなく、VoIPアプリのものである必要があります。REST API KeyもVoIPアプリのものを使用する必要があります。 - VoIPトークンは有効ですか? アプリの再インストールやデバイスの復元時にトークンが失効します。トークンが64文字の小文字16進数文字列であり、最近登録されたものであることを確認してください。
- アプリは
reportNewIncomingVoIPPushPayloadを呼び出していますか? iOS 13以降、AppleはVoIPプッシュを受信したがCallKitに通話を報告しないアプリを終了します。これはOneSignalの制限ではなく、Appleの要件です。
関連ページ
メッセージ作成API
REST APIを使用してプログラムでプッシュ通知を送信します。
確認済み配信
対応プラットフォームでプッシュ通知の配信確認を追跡します。
サービス拡張機能
Notification Service Extensionを使用して通知処理をカスタマイズします。
ユーザー作成API
OneSignal APIでユーザーとサブスクリプションを登録します。