概要
着信などのイベントにおいて、ユーザーはアプリがアクティブでなくてもプッシュ通知を受け取ることを期待することが多い。また、プッシュ通知を 接続サービス を使用して、システムUIで着信を表示します。このガイドでは、Client SDKからプッシュ通知を受け取るようにAndroidアプリを設定する方法を説明します。
VonageをFirebaseに接続
プッシュ通知を受け取るには、VonageとFirebaseを接続する必要があります。そのためには以下が必要です:
- FirebaseプロジェクトID
- Firebaseサービスアカウントのキー
VonageアプリケーションIDの取得
Vonage API アプリケーション ID を取得します。の既存のアプリケーションにアクセスできます。 ダッシュボード.まだアプリケーションをお持ちでない場合は、以下の方法で新しいアプリケーションを作成できます。 Vonage CLI.
FirebaseプロジェクトIDの取得
FirebaseプロジェクトIDを Firebaseコンソール.に移動する。 Firebase console -> Project settings -> General.


Firebaseサービスアカウントキーの取得
Firebaseサーバーキーを Firebaseコンソール.に移動する。 Firebase console -> Project settings -> Service accounts を作成し、新しい秘密鍵を生成する。


VonageアプリケーションをFirebaseに接続する
APIダッシュボードを使用して認証情報をVonageにアップロードします。アプリケーションを ダッシュボード次に、"プッシュ通知を有効にする "タブを開きます:

Firebase Project ID を入力し、前のステップで作成した Service Account Key をアップロードします。
ターミナルの使用
ターミナルを使用して、VonageバックエンドプッシュサービスとFirebaseアプリケーションを接続することもできます。その場合は Vonage Application ID が必要で、Vonage admin JWT を生成する必要があります。
# A command with parameters
vonage jwt create `
--app-id='00000000-0000-0000-0000-000000000000' `
--private-key=./private.key
# Will produce a token
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzYyODE5NDYsImp0aSI6IjBmZjcwZDNmLTAzN2EtNGY4MC04ODZjLWI3MmM3MmQyMWNmMiIsImlhdCI6MTczNjI4MTA0NiwiYXBwbGljYXRpb25faWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAifQ.gA7jClpqaZ2OoS0iri-zGCbda4jO7C0M8mka0EnSyjlds1EeY8fNoBEx3FTXHfkkzzrj0TskrWc_dcs1wuM8Kx55c5rLQ7taVpDAYopKSc_CeeOaad8S6aWnRkTUTNeduO4aIn-0CbyRTluBYsH1RBqYBQvobuQIDEwbFw8xBgx0UfREMMN6DAWknR57eiVXN9x_oD6CGQJ1yV3025nGboeMsP9YgX4Nwc-rE2r8c1ZGwCLO81x8i19Qil3Nwu5q1nzouyavQjIw00B_TZkushnI1ufdi_GNqk-h5q2HvGkg7Pj9bVkZHFdVTO8im03JYNyJmcV83vnpjOLuCFRzxQ
REM A command with parameters
vonage jwt create ^
--app-id='00000000-0000-0000-0000-000000000000' ^
--private-key=./private.key
REM Will produce a token
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzYyODE5NDYsImp0aSI6IjBmZjcwZDNmLTAzN2EtNGY4MC04ODZjLWI3MmM3MmQyMWNmMiIsImlhdCI6MTczNjI4MTA0NiwiYXBwbGljYXRpb25faWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAifQ.gA7jClpqaZ2OoS0iri-zGCbda4jO7C0M8mka0EnSyjlds1EeY8fNoBEx3FTXHfkkzzrj0TskrWc_dcs1wuM8Kx55c5rLQ7taVpDAYopKSc_CeeOaad8S6aWnRkTUTNeduO4aIn-0CbyRTluBYsH1RBqYBQvobuQIDEwbFw8xBgx0UfREMMN6DAWknR57eiVXN9x_oD6CGQJ1yV3025nGboeMsP9YgX4Nwc-rE2r8c1ZGwCLO81x8i19Qil3Nwu5q1nzouyavQjIw00B_TZkushnI1ufdi_GNqk-h5q2HvGkg7Pj9bVkZHFdVTO8im03JYNyJmcV83vnpjOLuCFRzxQ
注 管理JWTは、サブクレームのないJWTである。JWTの生成方法の詳細は 認証ガイド.
充填 VONAGE_APP_ID, VONAGE_JWT, FIREBASE_PROJECT_IDそして FIREBASE_SERVICE_ACCOUNT を以前に取得した
を設定し、以下のコマンドを実行してリクエストを送信する。あなたの FIREBASE_SERVICE_ACCOUNT の秘密鍵でなければなりません。
の秘密鍵を、特殊文字をエスケープした文字列で指定します:
VONAGE_APP_ID=
VONAGE_JWT=
FIREBASE_PROJECT_ID=
FIREBASE_SERVICE_ACCOUNT=
curl -v -X PUT \
-H "Authorization: Bearer $VONAGE_JWT" \
-H "Content-Type: application/json" \
-d "{\"token\":\"$FIREBASE_SERVICE_ACCOUNT\", \"projectId\":\"$FIREBASE_PROJECT_ID\"}" \
https://api.nexmo.com/v1/applications/$VONAGE_APP_ID/push_tokens/android
既存のトークンを更新する場合は、まず既存のトークンを削除します。 DELETE リクエストを同じ
リクエストを、同じ認証で同じエンドポイントに送る。
注 このエンドポイントでの検証はない。この 200 リターン・コードは、Vonageがデータを取得し、それを保存したことを意味する。
が、値が有効かどうかをチェックしていないことを意味する。
AndroidアプリケーションにFirebaseプロジェクトを設定する
Androidアプリケーションでプッシュ通知を有効にするには、Androidアプリケーションを設定する必要があります。
Androidプロジェクトを設定する
まずは、Androidプロジェクトに必要な依存関係を設定するところから始めよう。
Client SDKの依存関係の追加
Client SDKの追加 をプロジェクトに加える。
アプリケーションにFirebaseの設定を追加する
プッシュ通知に特化した設定を行う前に、いくつかの一般的なステップを踏む必要があります。 アプリ内でFirebaseをセットアップする必要があります。
注 アプリケーションが既に他の Firebase 製品を使用している場合は、この手順を省略できます。
Firebaseプロジェクトから "add Android app "オプションをクリックします:

表示されたフォームに必要事項を入力し、Firebaseプロジェクトにアプリケーションを登録します。

すると、"Download google-services.json "ボタンが表示されるので、これをクリックしてファイルをダウンロードする。
Android Studioのプロジェクトビューに切り替えて、プロジェクトのルートディレクトリを確認します。
ダウンロードしたgoogle-services.jsonファイルをAndroidアプリモジュールのルートディレクトリに移動します。

最後に、Google servicesプラグインを追加し、google-services.jsonファイルを読み込む必要があります。プロジェクトレベルの
プロジェクトレベルの build.gradle ファイルに追加する:
buildscript {
repositories {
// Check that you have the following line (if not, add it):
google()
}
dependencies {
// Add this line
classpath("com.google.gms:google-services:4.3.10")
}
}
allprojects {
repositories {
// Check that you have the following line (if not, add it):
google()
}
}
buildscript {
repositories {
// Check that you have the following line (if not, add it):
google() // Google's Maven repository
}
dependencies {
// Add this line
classpath 'com.google.gms:google-services:4.3.10'
}
}
allprojects {
repositories {
// Check that you have the following line (if not, add it):
google() // Google's Maven repository
}
}
また、アプリレベルでは build.gradle ベースとなるFirebase BoMの実装
plugins {
id("com.android.application")
id("com.google.gms.google-services")
}
dependencies {
// Import the Firebase BoM
implementation platform('com.google.firebase:firebase-bom:30.1.0')
}
apply plugin: 'com.android.application'
// Add this line
apply plugin: 'com.google.gms.google-services'
dependencies {
// Import the Firebase BoM
implementation platform('com.google.firebase:firebase-bom:30.1.0')
}
Firebase Cloud Messaging Dependency を追加します。
IDEのアプリレベルで build.gradle ファイル(通常は app/build.gradleを追加する。 firebase-messaging 依存性がある:
dependencies{
implementation("com.google.firebase:firebase-messaging:21.0.1")
}
dependencies{
implementation 'com.google.firebase:firebase-messaging:21.0.1'
}
注: 最新のバージョン番号は、以下のページで確認できます。 ファイヤーベースのウェブサイト.
プッシュ・トークンの登録
プッシュを受信するには、ユーザーのプッシュトークンをVonageのバックエンドに登録する必要があります。
を使用して registerDevicePushToken()
val token = "token"
client.createSession(token, null) { error, response ->
when {
error != null -> { println("there was an error: ${error}") }
else -> {
val pushToken: String? = context?.getSharedPreferences("_", com.google.firebase.messaging.FirebaseMessagingService.MODE_PRIVATE)?.getString("fb", "empty");
if (pushToken != null){
client.registerDevicePushToken(pushToken) { err, deviceId ->
if (err != null) {
println("there was an error: $err")
} else {
println("registered device push token successfully - device id: $deviceId")
}
}
}
}
}
}
registerDevicePushToken() は、ユーザーのデバイスに固有のデバイスIDを返します。ユーザーは複数のデバイスを登録することができます。
このデバイスIDは、将来プッシュ通知を受け取らないようにするために、後でユーザーデバイスの登録を解除するために使用することができます。
client.unregisterDevicePushToken("Device_ID") { error ->
if (error == null) {
// device id deleted
}
}
Firebase Receiver Serviceの実装
firebase メッセージを受信するには、firebase messaging service を実装する必要があります。また
受信したメッセージがvonageメッセージかどうか、もしそうならどのタイプかを getPushNotificationType() ヘルパー・メソッド。もしそれが
であれば INCOMING_CALL ヘルパーメソッドを使って適切に処理します。 processPushInvite().
class FirebaseMessagingService: FirebaseMessagingService() {
val invite: CallId?
@RequiresApi(Build.VERSION_CODES.O)
override fun onNewToken(token: String) {
super.onNewToken(token)
println("PUSH TOKEN: $token")
getSharedPreferences("_", MODE_PRIVATE).edit().putString("fb", token).apply();
}
override fun onMessageReceived(remoteMessage: RemoteMessage) {
val dataString = remoteMessage.data.toString()
val type: PushType = VoiceClient.getPushNotificationType(dataString)
when (type) {
INCOMING_CALL -> {
this.invite = App.client.processPushCallInvite(dataString)
}
else -> {}
}
}
//...
}
着信に応答する
もし processPushCallInvite に成功すると、SDKからあなたのアプリケーションに着信の招待が届きます。応答するには
firebaseプッシュ通知から受信した招待に応答します:
val call: CallId?
invite?.let {
client.answer(it) {
err ->
when {
err != null -> {
print("error answering call")
}
else -> {
call = it
print("call answered: $voiceCall")
}
}
}
}
着信を拒否する
firebaseプッシュ通知からの招待を拒否する:
invite?.let {
client.reject(it) { err ->
when {
err != null -> {
print("error rejecting call")
}
else -> {
print("call rejected")
}
}
}
}
結論
このガイドでは、プッシュ通知を設定する方法を見てきました。
声だ:
- を統合することができる。 接続サービス アプリケーションの アプリケーションに追加することで、システムUIと統合することができます。
- を見る ConnectionService サンプル・プロジェクト をGitHubで公開している。