問題の内容
開発者が基本アクセスの完了後に HTML5 アプリケーションを実行しようとすると、コンテナページに「システムがビジー状態です。後でもう一度お試しください」と表示されます。
一般的な原因
HTML5 アプリケーションを実行する前に、mPaaS フレームワークはオフラインパッケージの基本情報を取得する必要があります。そのため、クライアントは RPC API alipay.client.getUnionResource を使用してオフラインパッケージ情報をアクティブにプルします。 オフラインパッケージ情報の取得に失敗した場合、または起動対象のアプリケーションがヒットしなかった場合、コンテナーは “システムがビジー状態です。後でもう一度やり直してください“ というプロンプト情報を表示します。
これらの問題については、RPC 要求や、環境とオフラインパッケージのリリースとの一致などの問題を調査する必要があります。
トラブルシューティングの手順
RPC 要求が正常かどうかを確認する
一般的な原因で説明されているように、クライアントはオフラインのパケット情報をアクティブにプルする必要があり、プルプロセスは RPC 要求に依存します。 RPC リンクに問題がある場合、オフラインのパケット情報を正しく取得できず、読み込みに失敗します。 RPC 要求に問題があるかどうかを確認するには、Xcode コンソールで alipay.client.getUnionResource を検索し、RPC 要求が適切に返されるかどうかを確認します。 エラーが存在する場合、一般的なエラーコードには、以下のような 7XXX または 3XXX シリーズなどが含まれます。
正常に返された場合の例。
result-statusは1000です。
Demo[83767:2555863] [mPaaSLog] APMobileNetwork alipay.client.getUnionResource resp:{
"Content-Encoding" = gzip;
"Content-Type" = "text/plain;charset=UTF-8";
Date = "Tue, 11 Aug 2020 05:01:37 GMT";
Vary = "Accept-Encoding";
"mgw-traceid" = 0a1cfd401597122097726853822435;
"result-status" = 1000;
"server-time" = 1597122097739;
}正常に返されていない場合の例。
result-statusが1000ではありません。
Demo[83383:2546279] [mPaaSLog] APMobileNetwork alipay.client.getUnionResource resp:{
"Content-Length" = 0;
"Content-Type" = "text/plain;charset=UTF-8";
Date = "Tue, 11 Aug 2020 04:50:08 GMT";
memo = "%E9%AA%8C%E7%AD%BERPC%E6%8E%A5%E5%8F%A3%20%E5%8A%A0%E7%AD%BE%E6%95%B0%E6%8D%AE%E4%B8%BA%E7%A9%BA";
"mgw-traceid" = 0a1d7667159712140890222728553;
"result-status" = 7014;
"server-time" = 1597121408902;
tips = "%E9%AA%8C%E7%AD%BERPC%E6%8E%A5%E5%8F%A3%20%E5%8A%A0%E7%AD%BE%E6%95%B0%E6%8D%AE%E4%B8%BA%E7%A9%BA";
}RPC 7XXX シリーズのエラーに対する解決策
ドキュメント「ゲートウェイ結果コードの説明」をご参照ください。7XXX シリーズのエラーは、RPC 要求の署名検証プロセスに関連するものです。 一般的なエラーコードは以下の通りです。
エラーコード | 説明 | 例 |
7000 | 公開鍵が設定されていない | モバイルアプリのセキュリティガードに appId に対応するキーがないか、またはゲートウェイが appId に対応する署名キーを取得できません。 |
7001 | 署名検証用のパラメータが不足 | ゲートウェイサーバー側での署名検証に失敗しました。 |
7002 | 署名を確認できません。 | ゲートウェイサーバー側での署名検証に失敗しました。 |
7003 | 署名検証 - 有効期限による失敗 | API リクエストエントリ ts のタイムスタンプが、システムによって設定された有効期限を超えています。 クライアントの時刻がシステム時刻であるどうかを確認します。 |
7007 | 署名検証 - ts パラメーターの欠落 | API リクエストに署名検証の ts パラメーターがありません。 |
7014 | 署名検証 - 署名パラメーターの欠落 | API リクエストに署名検証の署名パラメーターがありません。 通常、クライアントでデータの署名に失敗した結果、署名パラメータが欠落します。 クライアントのセキュリティガードイメージが正しいかどうかを確認します。 |
基本的なトラブルシューティング方法は以下のとおりです。
mPaaS コンソールで設定された
Bundle IDが iOS プロジェクトの Bundle ID と完全に一致しているかどうかを確認します。mPaaS コンソールで設定された
Bundle ID(コンソール > コード設定 > iOS)。プロジェクトの
Bundle Identifier:
プロジェクトの
Info.plistのBundle Idendifier:
コンソールでダウンロードした
.configファイルの内容が、プロジェクトのmeta.configと完全に一致しているかどうかを確認します:mPaaS コンソールでダウンロードした
.configファイル:
プロジェクトの
meta.config:
クライアントデバイスの時刻が現在の時刻であるかどうかを確認します。時刻エラーは 8 時間未満である必要があります。
Apsara Stack の開発者は、セキュリティガードイメージを手動で生成してプロジェクトに追加する必要がある点に注意する必要があります。 パブリッククラウド (aliyun.com) の開発者は、この点については無視できます。
前述のチェックで不一致が発見された場合、チェックは失敗します。 失敗した場合の推奨事項は以下の通りです。
mPaaS コンソールの情報と一致するように、プロジェクト内の情報を変更します。
電話機の時刻情報が正しくない場合は、時刻設定を修正します。
コンソールで最新の
.configファイルをダウンロードし、mPaaS Extension プラグインを使用して再度インポートします。
すべての情報が正しいことを確認した後、インストール済みのアプリをアンインストールし、デバッグ用に再パッケージ化してコンパイルし、RPC 7XXX エラーが解決されたかどうかを確認します。
RPC 3XXX シリーズのエラーに対する解決策
RPC 3XXX シリーズのエラーに対するソリューションは、Apsara Stack 開発者にのみ適用されます。 パブリッククラウド (aliyun.com) の開発者は、この点については無視できます。
ゲートウェイのデータ暗号化を有効化した後 (コンソール > バックエンドサービス管理 > モバイルゲートウェイ > ゲートウェイ管理タブページ > データ暗号化)、クライアントデータの暗号化が設定されていないか、または正しく設定されていない場合、RPC 要求 alipay.client.getUnionResource から、以下のような 3XXX シリーズのエラーを返される場合があります。
エラーコード | 説明 | 例 |
3001 | 要求されたデータが null です。 | クライアントのリクエストデータの |
3002 | 誤ったデータ形式 | RPC 要求の形式に問題があります。 Apsara Stack ユーザーは、サーバー側のログ |
3003 | データの復号に失敗 | データの復号に失敗しました。 |
基本的なトラブルシューティング方法
モバイルゲートウェイのデータ暗号化機能がコンソールで有効化されているかどうかを確認します。
「データ暗号化の設定ドキュメント」 に従って、キーが一致するかどうか、形式が正しいかどうかなど、クライアントの暗号化設定が正しいかどうかを確認します。
設定が正しいことを確認した後、インストール済みのアプリをアンインストールし、デバッグ用に再パッケージ化してコンパイルし、RPC 3XXX エラーが解決されたかどうかを確認します。
HTML5 アプリ情報とリリースステータスが正しいかどうかを確認します。
一般的な原因で説明されているように、クライアントはオフラインパッケージ情報をアクティブにプルする必要があります。 RPC 要求が正常に返されるという前提の下で、サーバーが対象ののオフラインパッケージ情報を返さない場合、オフラインパッケージ AppNotExist が存在しないため、読み込みエラーも発生します。
基本的なトラブルシューティング方法:
RPC 要求
alipay.client.getUnionResourceが、[RPC 要求が正常かどうかを確認する] の指示に従って適切に返されることを確認します。Xcode コンソールでエラーキーワード
AppNotExistを検索し、問題の根本原因が対象の HTML5 アプリが見つからないことであるかどうかを確認します。
mPaaS コンソールと iOS プロジェクトで、以下の情報を相互に確認します。
worksapceId、appId、およびmpaasapi などのメタデータ:コンソールの関連する設定とmeta.configが完全に一致している必要があります。一致していない場合は、.configファイルを再度インポートします。対象のオフラインパッケージ ID:オフラインパッケージ管理ページのオフラインパッケージ ID が、プロジェクトコードで開くオフラインパッケージ ID と同じである必要があります。
オフラインパッケージのリリースステータスを確認し、オフラインパッケージにリリースステータスのバージョンがあるかどうかを確認します。
オフラインパッケージのリリースステータスを確認し、オフラインパッケージのリソースタイプを確認します。“通常のリソースパッケージ” である必要があります。“グローバルリソースパッケージ” を直接開くことはできません。
オフラインパッケージのリリースステータスを確認し、リリースされたオフラインパッケージのバージョンを確認します。クライアントにインストールされているオフラインパッケージのバージョン以降である必要があります。
オフラインパッケージのリリースステータスを確認し、リリースで対応しているクライアントのバージョン範囲を確認します。テストアプリの現在のバージョン番号に対応している必要があります。 注:iOS プロジェクトの場合、クライアントのバージョン番号は、Xcode プロジェクトの
versionではなく、info.plistのProduct versionフィールドに依存するため、開発者は手動で同期する必要があります。
上記の情報が正しいことを確認後、インストール済みのアプリをアンインストールし、再パッケージ化してコンパイルし、デバッグして
AppNotExistエラーが解決したかどうかを確認します。
チケットの起票によるお問い合わせ
上記の手順に従っても問題が解決されない場合は、問題を再現するためのデモプロジェクトを準備し、Alibaba Cloud チケットシステムを通じて mPaaS アフターサービスまでお問い合わせください。