JPush によるプッシュ通知

JPush 環境でプッシュ通知が動作しない場合、以下の点を確認してください。

  1. Kii Cloud のアプリケーションは一致していますか?

    テストなどを目的として複数のアプリケーションを Kii Cloud 上に作成している場合は、送信側と受信側で Kii Cloud のアクセスキー(AppID)が一致していることを確認します。送信側と受信側は同じアプリケーションである必要があります。

  2. 開発者ポータルに App Key と API MasterSecret は設定済みですか?

    JPush のコンソール上で App Key と API MasterSecret を取得し、開発者ポータルの設定画面で登録します。

  3. JPush のライブラリはモバイルアプリに組み込まれていますか?

    モバイルアプリのプロジェクトには、JPush からダウンロードしたライブラリを組み込んでおく必要があります。

  4. AndroidManifest.xml で必要な項目は追加済みですか?

    AndroidManifest.xml を 設定例 に従って変更していることを確認してください。また、定義した XML の階層が正しいことや、以下の箇所が変更されていることを確認してください。

    • パッケージ名(合計 5 箇所)
    • JPush の AppKey(1 箇所)
  5. プッシュ通知の開発/配布環境は正しく対応が取れていますか?

    対象が開発環境であるか、配布環境であるかの選択の対応が取れている必要があります。以下が目的の環境に合っていることを確認します。

    • Kii Cloud のプッシュ通知を初期化する対象環境(デフォルト値として配布環境が設定されている API があるためご注意ください)
    • メッセージの送信対象の環境(開発者ポータルから送信する際の設定や、API から送信する際の引数)
  6. モバイルアプリのプロジェクトに Receiver クラスは組み込まれていますか?

    AndroidManifest.xml の <receiver> タグにある android:name に書かれた Receiver クラスが android.content.BroadcastReceiver クラスのサブクラスとしてプロジェクト内に存在していることを確認します。また、その Receiver クラスの FQDN が正しいことを確認します。

  7. モバイルアプリから初期化処理は実行できていますか?

    KiiUser がログインしている状態で KiiUser.pushInstallation().install() メソッドを呼び出す必要があります。

    もし実行していない場合は、コード例 のような初期化処理を実行するようにしてください。コード例をそのまま使用する場合は、テストユーザーのユーザー名とパスワードを書き換えてください。

    実際に最後まで実行が成功しており、regId として登録 ID らしい文字列が取得できていることを確認します。コード例では JPushPreference に一旦登録すると、再登録しないようになっているため、regId を確認する場合は、「if (regId.isEmpty()) {」部分を削除して、登録処理を強制的に実行してみる方法もあります。

  8. Bucket やトピックのスコープは一致していますか?

    講読したスコープと、プッシュメッセージ送信のトリガーとなったスコープが同じであることを確認します。

    Kii Cloud の Push to App を使う場合、Bucket のスコープが一致していることを確認します。また、Push to User を行う場合、トピックのスコープが一致していることを確認します。

    たとえば、Kii Cloud SDK for Android の Push to App で以下の Bucket に対する実装を行うと、1 行目はアプリケーションスコープ、2 行目はユーザースコープのため、プッシュメッセージは届きません。

    • 購読対象:Kii.bucket("myBucket");
    • 更新対象:user.bucket("myBucket");
  9. 開発者ログは確認しましたか?

    開発者ログ にプッシュ通知関連の情報が記録されている場合があります。

    Kii Cloud の API を実行してエラーになった場合、開発者ログにもエラー情報が記録されることがあります。例外処理の抜けなどで API からの例外や戻り値を見落としていても、開発者ログから問題解決のヒントをつかめる場合があります。

    たとえば、FCM の場合にペイロードのサイズが 4096 バイトを超えると、API が例外応答すると同時に、以下のようなログが記録されます。

    2015-01-21T14:51:16.159+09:00 [ERROR] push.send description:Failed to send Push Message sender: origin:EXPLICIT messageID: type: succeeded-endpoints: failed-endpoints: exception:There are validation errors: payload - The size of the payload exceeds the maximum allowed for GCM messages: 4096 bytes.