2013-04-16 4 views
5

Я изо всех сил, чтобы получить пример работы снизу: не был ли установилиGoogle App Engine для Java и Android Начало работы

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

Первая проблема, которую я имел «Google Cloud Messaging для Android Библиотека "в Android SDK (очевидно, я знаю).

Но теперь у меня есть проблема с авто-сгенерированный код в двух файлах в проекте Android: GCMIntentService.java и RegisterActivity.java

Ошибки являются:

  • Метод getDeviceInfo (Строка) не определено для типа Deviceinfoendpoint GCMIntentService.java
  • метод listMessages() не определено для типа MessageEndpoint RegisterActivity.java
  • метод insertDeviceIn о (DeviceInfo) не определено для типа Deviceinfoendpoint GCMIntentService.java
  • Метод removeDeviceInfo (String) не определено для типа Deviceinfoendpoint GCMIntentService.java

Я использую Java SDK v1.7.0_15 на Ubuntu, но Я также пробовал в Windows 7 с Java SDK v1.6 и имел ту же проблему. Последняя платформа Android 4.2.2 и Google App Engine 1.7.7. Eclipse is Juno Service Release 2.

Проблема заключается в том, что они неправильно выполняют кастинг, потому что существует метод getDeviceInfo для внутреннего класса DeviceInfoEndpoint внутри Deviceinfoendpoint (различные capatilisations).

Я мог бы исправить это, но просто интересно, если у меня что-то не так в моей установке, чтобы это произошло?

Любая помощь будет оценена по достоинству.

+0

Ваша проблема заключается в проекте приложения или проекте appengine? Можете ли вы опубликовать некоторые данные об этих ошибках? –

+0

Проблема с проектом приложения. Нет stacktrace, поскольку он еще не будет компилироваться. – reubenb87

+0

Был вчерашний день с той же проблемой. Также попробовали с двумя разными машинами с различными настройками программного обеспечения. – Heigo

ответ

3

В классе GCMIntentService.java добавьте .deviceInfoEndpoint() после того, как объект конечной точки в строках с ошибками, как показано ниже:

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

В RegisterActivity.java изменить линию

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

т o

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

Большое спасибо!Должна быть некоторая ошибка в коде их автогенерации. – reubenb87

+0

Нет проблем. Но вы действительно получили образец проекта? Я получил приложение для Android, и он зарегистрировался просто отлично, но бэкэнд не видел никаких устройств. – Heigo

2

Я хотел бы убедиться, что вы используете ту же версию GCM API, что и для JAR. Там было немало изменений.

Я использую следующий код с gcm-server.jar, указанный в 19718 байт.

Кода я успешно использовать для отправки сообщений 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(); 
    } 
} 
Смежные вопросы