このトピックでは、ApsaraVideo Real-time Communication (ARTC) SDKベータ版を統合する際に発生する可能性のある問題について説明します。これには、SDKおよびHarmonyOS NEXTオペレーティングシステムに関する既知の問題が含まれます。 また、対応するソリューションも提供します。 統合する前に、このトピックをよく読むことをお勧めします。 質問があれば、テクニカルサポートのためにチケットを起票してください。
ArkTSの問題
マップを使用したオブジェクトの作成によるクラッシュ
// SDK interface public playAudioEffect(soundId: number, filePath: string, config: AliRtcAudioEffectConfig): numbe // Use a map to create an object in ArkTS. // The map cannot be directly matched to the expected C++ object, which may cause a crash. this.rtcSdk?.playAudioEffect(1, "test", { needPublish: true, loopCycles: 0, startPosMs: 0, publishVolume: 0, playoutVolume: 0 } ); // Recommended method let config = new AliRtcAudioEffectConfig(); config.needPublish = 0; config.loopCycles = 0; config.startPosMs = 0; config.publishVolume = 0; config.playoutVolume = 0; this.rtcSdk?.playAudioEffect(1, "test", config);無効なデータ型
SDKによって定義された正しいデータ型を渡す必要があります。 たとえば、AliRtcAudioEffectConfigのloopCyclesパラメーターの値はNUMBER型である必要があります。 文字列を渡すと、変換エラーが発生し、ビジネスロジックが混乱する可能性があります。
オーディオの問題
ユーザーは通話中にスピーカーとイヤホンを切り替えることはできません。
HarmonyOS NEXTは、ユーザーがスピーカーとイヤホンを手動で切り替えることができるAPIを提供していません。
ユーザが繰り返し電話をかけたり離れたりすると、オーディオ再生の失敗が時折発生する。
これはHarmonyOS NEXTの問題です。 問題を解決するために電話を再起動します。
Type-Cを3.5mmアダプターと3リングヘッドフォンを使用すると、会議シナリオで音声障害が発生します。
これはHarmonyOS NEXTの問題です。 問題を解決するために電話を再起動します。 ヘッドホンでType-C〜3.5mmアダプターを使用しないことをお勧めします。
ビデオの問題
アプリケーションがフォアグラウンドに戻ると、プレビュー画面が点滅します。
HarmonyOS NEXTは、バックグラウンドでのアプリケーションのカメラ使用を制限します。 アプリケーションがフォアグラウンドに戻ると、カメラを再起動する必要があり、プレビュー画面がちらつきます。
パフォーマンスの問題
アプリケーション応答 (ANR) エラーは、エンジンが繰り返し作成および破壊されるときに時々発生します。
HarmonyOS NEXTの上位層は、単一のスレッドで動作するTypeScript (TS) エンジンを使用します。 コールバックメソッド内でネイティブAPIを呼び出すと、ANRエラーが発生する可能性があります。 Huaweiでこの問題を解決しています。 コールバックメソッド内でRTC APIを呼び出すことを避け、プラットフォーム層で保護メカニズムを実装して迅速な移行を処理することをお勧めします。
イベントのコールバックは、AndroidやiOSプラットフォームほどタイムリーではありません。
プラットフォーム層へのネイティブコールバックは、メインスレッドを介してルーティングされます。 各コールバックは、前のコールバックが実行される前に完了するのを待つ必要があり、遅延が発生します。 Huaweiでこの問題に取り組んでいます。 登録済みリスナーを減らし、必要な場合にのみコールバックを実装することを推奨します。
データコールバックの問題
記録されたビデオおよびオーディオデータを含む生データのコールバックは使用できません。
プラットフォーム層へのコールバックは、メインスレッドを介してルーティングされます。 メインスレッドで記録されたビデオおよびオーディオデータを処理すると、スレッドブロックが発生し、ANRエラーがトリガーされます。 したがって、現在、関連するAPIは提供していません。