この Topic では、Message Push Service コンポーネントの使用に関するよくある質問 (FAQ) とそのソリューションについて説明します。
一般的な質問
権限の要件
Android 6.0 以降では、ユーザーは SD カードの読み取りおよび書き込み権限などのスマートフォンの権限を手動で付与する必要があります。 プッシュの精度を確保するために、ユーザーにメッセージプッシュサービスに必要な権限を付与するように案内してください。
ログを印刷できない
Meizu スマートフォンでのテスト中に、log.d や log.i などのログが印刷されない場合があります。 この問題を解決するには、[設定] > [ユーザー補助] > [開発者向けオプション] に移動し、[高度なログ出力] を有効にします。 開発上の問題が発生した場合は、tag=mpush を設定してログをフィルターできます。
Android 関連の質問
ベースライン 10.1.60.5 から 10.1.60.7 におけるポート解析の問題
Apsara Stack 環境では、443 以外のポートでプッシュサーバーを設定すると、解析の失敗と接続エラーが発生します。
ソリューション:
設定ファイルを使用してパッケージ化する場合は、次のように設定ファイルを変更します。
// 設定ファイルの他の部分は省略します。 カスタムポート番号の前にバックスラッシュ (\) とスペースを追加します。 { "pushPort":"\\ 8000", }設定ファイルを使用してパッケージ化しない場合は、
AndroidManifest.xmlファイル内のrome.push.portの値を次のように変更します。// ポート番号の前にバックスラッシュ (\) とスペースを追加します。 <meta-data android:name="rome.push.port" android:value="\ 8000" />
Huawei や Xiaomi などのサードパーティチャンネルを統合した後にプッシュを送信できない
この問題は、mPaaS プッシュコンソールでチャンネルスイッチが無効になっているために発生します。 コードサンプル、使用方法、および注意事項については、「コードサンプル」をご参照ください。
プッシュ ad-token (deviceId) の生成
サーバーサイドは、International Mobile Subscriber Identity (IMSI) と International Mobile Equipment Identity (IMEI) に基づいて deviceId を生成します。 したがって、ユーザーに必要な READ_PHONE_STATE 権限を付与するように案内する必要があります。
PUSH 通知のための EMUI と Huawei Mobile Services のバージョン要件
プッシュ通知には、Emotion UI (EMUI) と Huawei Mobile Services のバージョン要件があります。 EMUI は、Huawei が Android プラットフォームをベースに開発したオペレーティングシステムです。 詳細なバージョン要件については、「デバイスが Huawei プッシュメッセージを受信するための条件」をご参照ください。
Huawei スマートフォンでログを印刷できない
スマートフォンのダイヤルアプリで *#*#2846579#*#* と入力して、エンジニアリングメニューを開きます。 [バックグラウンド設定] > [LOG 設定] に移動し、[AP Log] を選択します。 スマートフォンを再起動すると、変更が有効になります。
Huawei プッシュのエラーコード
エラーコードの詳細については、Huawei 公式サイトの「クライアントサイドのエラーコード」および「サーバーサイドのエラーコード」をご参照ください。
OPPO プッシュでサポートされているモデルとシステムバージョン
現在、OPPO プッシュは、ColorOS 3.1 以降を搭載した OPPO モデル、OnePlus 5/5T 以降のモデル、およびすべての realme モデルでサポートされています。
ColorOS は、OPPO が Android プラットフォームをベースに開発したモバイルオペレーティングシステムです。
OPPO プッシュのエラーコード
OPPO プッシュが機能しない場合は、クライアントログで OPPO onRegister error = を検索してエラーコードを取得します。 その後、OPPO エラーコードリストを参照して原因を特定します。
vivo プッシュでサポートされているモデルとシステムバージョン
次の表は、SDK でサポートされているモデルと最小システムバージョンを示しています。 vivo プッシュに関するその他の質問については、「vivo プッシュに関するよくある質問」をご参照ください。
vivo プッシュのエラーコード
vivo プッシュが機能しない場合は、クライアントログで fail to turn on vivo push state = を検索してステータスコードを取得します。 その後、「パブリックステータスコード」を参照して原因を特定してください。
一般的な Android の問題のトラブルシューティング
Manifestファイルが正しく設定されているか確認します。appId (Huawei、Xiaomi、vivo)、appSecret (Xiaomi、OPPO)、appKey (OPPO、vivo)、および ALIPUSH_APPID (mPaaS) が、それぞれの開発者プラットフォームに登録されているアプリケーションと一致しているか確認します。
タグ `mpush` を使用して logcat ログを表示します。
iOS 関連の質問
アプリがフォアグラウンドにある場合の通知
デフォルトでは、アプリがフォアグラウンドにある場合、Apple はメッセージを配信しますが、表示はしません。 アプリがフォアグラウンドにあるときに通知を表示するには、カスタムソリューションを実装する必要があります。
メッセージのステータスが NoBindInfo
NoBindInfo ステータスは、UserId を使用してプッシュが送信されたものの、その UserId のバインディング情報が見つからなかったことを示します。 まず、クライアントがバインディングインターフェイスを呼び出していることを確認してください。 また、appId と workspaceId が一致していることも確認してください。
メッセージのステータスが BadDeviceToken
このステータスは iOS プッシュでのみ発生します。 これは、プッシュに使用されたトークンが無効であることを示します。 まず、証明書環境が正しいことを確認してください。
アプリが開発証明書でパッケージ化されている場合は、プッシュコンソールで開発環境証明書を設定する必要があります。 Xcode を使用して実機でデバッグする場合は、開発証明書を使用する必要があります。
アプリが本番証明書でパッケージ化されている場合は、プッシュコンソールで本番環境証明書を設定する必要があります。
メッセージのステータスが DeviceTokenNotForTopic
このステータスは iOS プッシュでのみ発生します。 これは、トークンがプッシュ証明書の BundleId と一致しないことを示します。 まず、証明書が正しいこと、およびパッケージ化されたクライアントの BundleId と一致していることを確認してください。
メッセージステータスが ACKED にもかかわらず iOS でメッセージを受信できない問題
iOS プッシュの場合、ACKED ステータスは、メッセージが Apple Push Notification サービス (APNs) に正常に配信されたことを示します。 まず、プッシュ権限が有効になっており、アプリがバックグラウンドで実行されていることを確認してください。
デフォルトでは、アプリがフォアグラウンドにある場合、Apple はメッセージを配信しますが、表示はしません。 アプリがフォアグラウンドにあるときに通知を表示するには、カスタムソリューションを実装する必要があります。
RPC 呼び出しの問題
RPC リクエストによるリソース呼び出し中に例外が発生した場合は、「Security Guard のリザルトコード」または「ゲートウェイのリザルトコード」を参照して問題をトラブルシューティングしてください。