5

以下から例を実行するのに苦労しています:

https://developers.google.com/eclipse/docs/getting_started

私が最初に抱えた問題は、Android SDK に「Google Cloud Messaging for Android Library」がインストールされていなかったことです (私が知っていることは明らかです)。

しかし今、Android プロジェクトの 2 つのファイルで自動生成されたコードに問題があります: GCMIntentService.java と RegisterActivity.java

エラーは次のとおりです。

  • メソッド getDeviceInfo(String) は、タイプ Deviceinfoendpoint GCMIntentService.java に対して定義されていません
  • メソッド listMessages() は、型 MessageEndpoint RegisterActivity.java に対して定義されていません
  • メソッド insertDeviceInfo(DeviceInfo) は、タイプ Deviceinfoendpoint GCMIntentService.java に対して定義されていません
  • メソッド removeDeviceInfo(String) は、タイプ Deviceinfoendpoint GCMIntentService.java に対して定義されていません

Ubuntu で Java SDK v1.7.0_15 を使用していますが、Windows 7 でも Java SDK v1.6 を試してみましたが、同じ問題が発生しました。最新の Android プラットフォーム 4.2.2 および Google App Engine 1.7.7。Eclipse は Juno Service Release 2 です。

Deviceinfoendpoint 内の内部クラス DeviceInfoEndpoint のメソッド getDeviceInfo があるため (さまざまなキャパタイズ)、問題はキャストが間違っているように見えます。

試して修正することはできますが、これが発生するためにセットアップに何か問題があるのではないかと思っていますか?

どんな助けでも大歓迎です。

4

2 に答える 2

3

GCMIntentService.java クラスで、以下に示すように、エラーのある行のエンドポイント オブジェクトの後に .deviceInfoEndpoint() を追加します。

DeviceInfo existingInfo = endpoint.getDeviceInfo(registration)
DeviceInfo existingInfo = endpoint.deviceInfoEndpoint().getDeviceInfo(registration)

RegisterActivity.java で行を変更します

messageEndpoint.listMessages().setLimit(5).execute();

messageEndpoint.messageEndpoint().listMessages().setLimit(5).execute();
于 2013-04-17T15:40:24.150 に答える
2

JAR と同じバージョンの GCM API を使用していることを確認してください。かなりの数の改訂がありました。

19718 バイトにリストされている gcm-server.jar で次のコードを使用しています。

GCM メッセージをデバイスに送信するために使用したコードは次のとおりです。

public void sendMessage() {
    String notificationToken = mobileDevice.getPushNotificationCode();
    String deviceType = mobileDevice.getDeviceType();

    Sender sender = new Sender(BROWSER_API_KEY);
    Message message = new Message.Builder().addData("message", "blah blah").build();
    String device = "<the key for the device you are sending to goes here>";

    try {
        System.out.println("Sending message...");
        Result result = sender.send(message, device, 5);
        System.out.println("Done sending message");
        if (result.getMessageId() != null) {
            System.out.println("Got message ID: " + result.getMessageId());
            System.out.println("Got error code name: " + result.getErrorCodeName());
            System.out.println("result: " + result);
            String canonicalRegId = result.getCanonicalRegistrationId();
            if (canonicalRegId != null) {
                // Database has more than one record for this device.
                // Replace all of this device's records with this new id
                System.out.println("Got new canonical reg id: " + canonicalRegId);
            }
        } else {
            String error = result.getErrorCodeName();
            if (error.equals(com.google.android.gcm.server.Constants.ERROR_NOT_REGISTERED)) {
                // application has been removed from device - unregister from database
                System.out.println("Got error: " + error);
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}
于 2013-04-16T23:11:21.907 に答える