2

GCM 機能を実装したい Android アプリケーションを開発しています。私は実装でき、Android Kitkat 4.4 バージョン (Micromax 089 でテスト済み) で正常に動作しています。ただし、Android Lolipop(Android 5.0) 以降で動作するデバイス ( Lava Iris Fuel F1Moto x playなど) では動作しません。

デバイスの依存関係とマニフェストのアクセス許可を確認するために使用したコード スニペット

GCMRegistrar.checkDevice(this);
GCMRegistrar.checkManifest(this);
registerReceiver(mHandleMessageReceiver, new IntentFilter(
                DISPLAY_MESSAGE_ACTION));

アプリがクラッシュしましたGCMRegistrar.checkDevice(this);

Logcat のスクリーンショット

Logcat のスクリーンショット

いくつかの調査により、アプリがクラッシュする可能性がある以下にリストした理由のいくつかを見つけました

  1. アプリが Google API を対象としていない可能性があります。
  2. Google Play サービスがインストールされていない可能性があります。
  3. インターネットが利用できない場合があります。
  4. 自サーバーへの接続がダウンしている可能性があります。

上記のシナリオをすべて確認しましたが、問題を解決できませんでした。

解決策を見つけるのを手伝ってください。

4

1 に答える 1

6

このコードをマニフェストに追加しましたか?

<receiver
        android:name="com.google.android.gcm.GCMBroadcastReceiver"
        android:permission="com.google.android.c2dm.permission.SEND" >
        <intent-filter>

            <!-- Receives the actual messages. -->
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            <!-- Receives the registration id. -->
            <action android:name="com.google.android.c2dm.intent.REGISTRATION" />

            <category android:name="<YOUR PACKAGE NAME>" />
        </intent-filter>
    </receiver>

ところで、GCMRegistrar は時代遅れであり、お勧めしません。この GCM Androidを使用

GCMRegistrar を含む非推奨のライブラリの代わりに、 Google Cloud Messagingライブラリを使用してみることができます。これは、Android のスキン (特に Lenovo と Motorola) にこのパッケージcom.google.android.gsfが含まれていないデバイスがあるためです。

于 2016-04-12T13:54:56.603 に答える