概要

着信などのイベントにおいて、ユーザーはアプリがアクティブでなくてもプッシュ通知を受け取ることを期待することが多い。また、プッシュ通知を 接続サービス を使用して、システムUIで着信を表示します。このガイドでは、Client SDKからプッシュ通知を受け取るようにAndroidアプリを設定する方法を説明します。

VonageをFirebaseに接続

プッシュ通知を受け取るには、VonageとFirebaseを接続する必要があります。そのためには以下が必要です:

  1. FirebaseプロジェクトID
  2. Firebaseサービスアカウントのキー

VonageアプリケーションIDの取得

Vonage API アプリケーション ID を取得します。の既存のアプリケーションにアクセスできます。 ダッシュボード.まだアプリケーションをお持ちでない場合は、以下の方法で新しいアプリケーションを作成できます。 Vonage CLI.

FirebaseプロジェクトIDの取得

FirebaseプロジェクトIDを Firebaseコンソール.に移動する。 Firebase console -> Project settings -> General.

Displaying the project settings location
Displaying the project ID location

Firebaseサービスアカウントキーの取得

Firebaseサーバーキーを Firebaseコンソール.に移動する。 Firebase console -> Project settings -> Service accounts を作成し、新しい秘密鍵を生成する。

Displaying the project settings location
Displaying the server key location

VonageアプリケーションをFirebaseに接続する

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

Push Upload on the dashboard

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

管理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 "オプションをクリックします:

Add App getting started screen with options for ios, android, web, unity and flutter

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

Form to register your application with your Firebase project, package name is required.

すると、"Download google-services.json "ボタンが表示されるので、これをクリックしてファイルをダウンロードする。

Android Studioのプロジェクトビューに切り替えて、プロジェクトのルートディレクトリを確認します。

ダウンロードしたgoogle-services.jsonファイルをAndroidアプリモジュールのルートディレクトリに移動します。

Android studio with project view selected and the google-service.json added in the app module directory

最後に、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()
    }
}

また、アプリレベルでは 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')
}

Firebase Cloud Messaging Dependency を追加します。

IDEのアプリレベルで build.gradle ファイル(通常は app/build.gradleを追加する。 firebase-messaging 依存性がある:

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")
            }
        }
    }
}

結論

このガイドでは、プッシュ通知を設定する方法を見てきました。

声だ: