オフライン通話プッシュ

オフライン通知機能は、アプリケーションが「バックエンドで実行中」または「オフライン状態」の場合でも、オーディオビデオ通話の着信を受信できる機能です。TUICallKitはTUIOfflinePushコンポーネントを統合することでオフライン通知機能を実現しています。ここでは、オーディオビデオ通話プロジェクトでTUIOfflinePushコンポーネントを統合する方法についてご説明します。

事前準備

1. アプリケーションをメーカーのプッシュプラットフォームに登録する オフラインプッシュ機能はメーカーオリジナルのチャネルに依存します。ご自身のアプリケーションを各メーカーのプッシュプラットフォームに登録し、APPIDおよびAPPKEYなどのパラメータを取得する必要があります。
ご注意:
次の2つのファイルはこの後の手順で使用します
Huaweiプラットフォームに登録する場合は、agconnect-services.jsonファイルをダウンロードして保存します。
Googleプラットフォームに登録する場合は、google-services.jsonファイルをダウンロードして保存します。
Google FCM

img


2. IMコンソールで設定を行う
メーカーのチャネルに登録するにはご自身のパッケージ名を渡す必要があります。メッセージの相互運用のため、各メーカーで入力するパッケージ名は一致させる必要があります。生成したID、APPIDおよびAPPKEYを記録します。これらはこの後の手順で使用します。

ステップ1:コンポーネントのダウンロードとインポート

1. Githubでコードをクローン/ダウンロードした後、下図のように、Androidディレクトリ下のtuiofflinepushサブディレクトリを現在のプロジェクトのappの同階層のディレクトリにコピーします。

img


2. プロジェクトのルートディレクトリ下でsetting.gradleファイルを見つけ、その中に次のコードを追加します。
include ':tuiofflinepush'
3. appディレクトリ下でbuild.gradleファイルを見つけ、その中に次のコードを追加します。その役割は、現在のappの新たに追加したtuiofflinepushコンポーネントへの依存を宣言するものです。
api project(':tuiofflinepush')

ステップ2:プロジェクト設定の完了

1. appディレクトリ下でbuild.gradleファイルを見つけ、アプリケーションパッケージ名をご自身のパッケージ名に変更します。
applicationId 'com.****.trtc'
2. appディレクトリ下でbuild.gradleファイルを見つけ、ViVoアクセスパラメータのVIVO_APPKEYVIVO_APPIDおよびHONOR_APPIDを設定し、コンパイルまたは実行エラーを避けます。
manifestPlaceholders = [
"VIVO_APPKEY": "PLACEHOLDER",
"VIVO_APPID" : "PLACEHOLDER",
"HONOR_APPID": "PLACEHOLDER"
]
3. HuaweiおよびGoogleファイルの設定: appディレクトリ下でgoogle-services.jsonファイルを置き換えます。このファイルは事前準備でGoogleプラットフォームに登録した際に保存したファイルです。 appディレクトリ下にagconnect-services.jsonファイルを追加します。このファイルは事前準備でHuaweiプラットフォームに登録した際に保存したファイルです。
4. 事前準備で記録したID、APPID、APPKEYをPrivateConstantsファイルに入力し、パラメータの設定が正しいかどうかを確認します。入力するパラメータは次のとおりです
public class PrivateConstants {
/****** Xiaomiオフラインプッシュパラメータstart ******/
// Tencent Cloudコンソールで、サードパーティの証明書プッシュ後に割り当てられた証明書IDをアップロードします
public static final long XM_PUSH_BUZID = アプリケーションが割り当てた証明書ID;
// Xiaomiオープンプラットフォームが割り当てたアプリケーションAPPIDおよびAPPKEY
public static final String XM_PUSH_APPID = "アプリケーションが割り当てたAPPID";
public static final String XM_PUSH_APPKEY = "アプリケーションが割り当てたAPPKEY";
/****** Xiaomiオフラインプッシュパラメータend ******/
}
ご注意:
この手順は非常に重要です。パラメータが正しく設定されているかどうかをよく確認してください。
上記の手順が完了すると、プロジェクトにTUICallKitのオフライン通知機能が実装されます。

ステップ3:オフライン通知内容のカスタマイズ

TUICallKitはデフォルトの通知スタイルを提供していますが、通知内容をカスタマイズしたい場合は、OfflinePushInfoConfig.javaファイルを変更してください。
public static TUIOfflinePushInfo createOfflinePushInfo(Context context) {
TUIOfflinePushInfo pushInfo = new TUIOfflinePushInfo();
pushInfo.setTitle("mike");
pushInfo.setDesc("You have receive a new call");
// OPPOはChannelIDを設定するとプッシュメッセージを受信することができます。このchannelIDはコンソールと一致している必要があります
// OPPO must set a ChannelID to receive push messages. This channelID needs to be the same as the console.
pushInfo.setAndroidOPPOChannelID("tuikit");
pushInfo.setIgnoreIOSBadge(false);
pushInfo.setIOSSound("phone_ringing.mp3");
return pushInfo;
}

よくあるご質問

オフラインプッシュ通知が受信できない場合は、お調べしますのでお問い合わせください。

1、通知が受信できない

メーカーのコンソールを使用してプッシュテストを行い、成功した場合はメーカーのチャネルに問題がないことがわかります。さらにTUIOfflinePushコンソールのメーカーパラメータ設定が正しいかどうかを確認し、要件に従って入力します。(テストの結果、vivo x9はコンソールでメッセージのカテゴリーを設定する必要があります)。
一部のスマートフォンでは通知が「重要でない通知」に入ることがあります。ステータスバーをプルダウンし、「重要でない通知」に分類されていないかを確認してください。
TUIOfflinePushの登録が正常に行われているかどうかを確認します。次のログをフィルタリングします。
TUIOfflinePush

2、画面ロック時にディスプレイが点灯しない

Androidスマートフォンはメーカーとプラットフォームの制限により、画面ロック状態での必要な権限が異なります。状況に応じて以下のトラブルシューティングを行ってください。
メーカーのロック画面通知権限がオンになっているかを確認する 一部のメーカーではルールの統一化を行っています。例えばXiaomiではロック画面中のオフライン通知到着時にディスプレイが点灯しない場合、設定 > ロック画面で、ロック画面中の通知受信時にディスプレイを点灯スイッチをクリックしてオンにします。
アプリケーションのロック画面通知権限がオンになっているかを確認する 例:Xiaomiではロック画面表示権限が必要です。
説明:
この問題が起こった場合は互換性の処理が必要です。TencentのQQグループ(592465424)に参加すると、問い合わせとフィードバックを行うことができます。

3、オフラインプッシュ通知をクリックしても通話画面が開かない

通話リクエストが見つかるかどうかを確認する必要があります。次のログをフィルタリングできます。
onReceiveNewInvitation

4、アプリケーションがバックエンドにあるとき、通話画面をフロントエンドに自動的にプルできない

アプリケーションをバックエンドからフロントエンドに自動的にプルする場合、Appが「バックエンド自動起動」または「フローティングウィンドウ」権限を有効にしているかどうかを確認する必要があります。
メーカーが異なる場合や、同じメーカーであってもAndroidのバージョンが異なる場合は、アプリケーションに許可する権限や権限名が一致しないことがありますのでご注意ください。例えば、Xiaomi 6ではバックエンドの画面ポップアップ権限を有効にすればよいだけですが、Redmiではバックエンドの画面ポップアップフローティングウィンドウの表示の権限を同時に有効にする必要があります。
説明:
手動ですべての権限を有効化しても、通話画面のフロントエンドへの自動プルができないことをテスト中に発見した場合は、互換性の処理が必要です。