0

アプリケーションでプッシュ通知 (GCM) を使用していますが、Android 4.2.2 (Galaxy Nexus および HTC One) で実行すると正しく動作します

また、タブレット (Android 4.03 を実行する asus トランス T101) と Nexus One (Android 2.3.6 を実行) も持っています。

タブレットと Nexus でアプリケーションを実行すると、プッシュ通知の方法が機能しません。

ドキュメントに示されているように、私は android.permission.GET_ACCOUNTS に 4.0.3 未満のバージョンのアクセス許可を含めましたが、成功しませんでした。

GCM のライブラリを呼び出すメソッドが実行されます。

final String regId = GCMRegistrar.getRegistrationId(Hello.this);
        if (regId.equals("")) {
            GCMRegistrar.register(Hola.this, "MY_ID_SENDER"); //Sender ID           
        } else {
            Log.i("masterhv", "already registered");
        }

しかし、レスポンスを処理するメソッドが実行されていない(onRegistered)... Googleからのレスポンスがないことは理解しています。

私が言ったように、Android 4.2.2 および 4.1 を搭載したデバイスで完全に動作し、パーミッションは正しいですが、Android 4.0.3 以下では動作しません。

助けていただければ幸いです。

感謝と敬意

4

1 に答える 1

1

GCM の古いバージョン (約 1 ~ 2 か月前に非推奨) では、ユーザーが 4.0.4 より前のバージョンを実行している場合、Google アカウントを追加するようユーザーに依頼する必要がありました。

APIドキュメントを見ると、それはまだ要件です

モバイル デバイス GCM を使用する Android アプリケーションを実行しているデバイス。これは、Google Play ストアがインストールされている 2.2 Android デバイスである必要があり、デバイスが Android 4.0.4 より前のバージョンを実行している場合は、少なくとも 1 つの Google アカウントにログインしている必要があります。別の方法として、Android 2.2 と Google API を実行するエミュレーターをテストに使用することもできます。

GCM API

私は最後のバージョンを使用していません。古いものを使用する場合は、アカウント設定へのアクセスを生成してアカウントを追加する必要があります。

private String[] getAccountNames() {        
        AccountManager accMan = AccountManager.get(this);
        Account[] accArray = accMan.getAccountsByType("com.google");
        String[] names = new String[accArray.length];
        for (int i = 0; i < names.length; i++) {
            names[i] = accArray[i].name;
        }
    return names;
}

したがって、配列が 0 の場合、アカウント設定に移動するよう求めるダイアログをポップアップ表示できます。

アカウントなしで登録しようとすると、logcat にメッセージ エラー ACCOUNT_MISSING が表示されます。

于 2013-07-17T19:28:01.137 に答える