2013-04-16 8 views
5

はじめにAndroid SDKの「ライブラリ」(明らかにわかりました)。 (Google App EngineのJavaとAndroidのは、私は以下から実行している例を得るのに苦労してきた

  • 方法getDeviceInfo: GCMIntentService.javaとRegisterActivity.java

    エラーがある

    は、しかし、今私は、Androidプロジェクトに2つのファイルに自動生成されたコードに問題がありますString)は、タイプDeviceInfoendpoint GCMIntentService.javaのために定義されていません。

  • MessageEndpoint型のためのlistMessages()メソッドは未定義です。RegisterActivity.java
  • メソッドinsertDeviceIn FO(DEVICEINFO)はタイプのために定義されていないDeviceinfoendpoint GCMIntentService.java
  • 方法removeDeviceInfo(文字列)タイプのために定義されていない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サービスリリース2です。

DeviceInfoendpoint内の内部クラスDeviceInfoEndpoint(異なる拡張機能)のgetDeviceInfoメソッドがあるため、問題が発生しているようです。

私は試して修正することができましたが、これが起こるためにセットアップに何か問題があるかどうか疑問に思っていますか?

ご協力いただければ幸いです。

+0

あなたの問題はあなたのアプリケーションプロジェクトまたはappengineプロジェクトにありますか?これらのエラーのスタックトレースを投稿できますか? –

+0

問題は、アプリケーションプロジェクトです。それはまだコンパイルされないので、stacktraceはありません。 – reubenb87

+0

昨日の全く同じ問題で苦労しました。また、ソフトウェアの設定が異なる2つの異なるマシンで試しました。 – Heigo

答えて

3

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

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

トンラインを変更RegisterActivity.javaで

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

o

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

ありがとうございました!自動生成コードで何らかのエラーが発生している必要があります。 – reubenb87

+0

問題ありません。しかし、サンプルプロジェクトは実際に動作しましたか?私はAndroidアプリを稼働させていますが、それはうまく登録されましたが、バックエンドにはデバイスが見られませんでした。 – Heigo

2

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

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

私が成功したデバイスへのGCMメッセージを送信するために使用するコードは次のとおりです。あなたのGCMIntentService.javaクラスで

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(); 
    } 
} 
関連する問題