2013-04-16 30 views
5

Tôi đã đấu tranh để có được ví dụ chạy từ bên dưới:Google App Engine Java và Android Bắt đầu

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

Vấn đề đầu tiên mà tôi có được không đã cài đặt 'Google Cloud Messaging dành cho Android Thư viện 'trong SDK Android (hiển nhiên là tôi biết).

Nhưng bây giờ tôi có một vấn đề với mã tự động tạo ra trong hai tác phẩm trong dự án Android: GCMIntentService.java và RegisterActivity.java

Các lỗi là:

  • Phương pháp getDeviceInfo (Chuỗi) không được xác định cho loại Deviceinfoendpoint GCMIntentService.java
  • Phương thức listMessages() không được xác định cho loại MessageEndpoint RegisterActivity.java
  • Phương thức insertDeviceIn fo (DeviceInfo) là undefined cho các loại Deviceinfoendpoint GCMIntentService.java
  • Phương pháp removeDeviceInfo (String) là undefined cho các loại Deviceinfoendpoint GCMIntentService.java

Tôi đang sử dụng Java SDK v1.7.0_15 trên Ubuntu nhưng Tôi cũng đã thử trên Windows 7 với Java SDK v1.6 và có cùng một vấn đề. Nền tảng Android mới nhất 4.2.2 và Google App Engine 1.7.7. Eclipse là bản phát hành dịch vụ Juno 2.

Vấn đề có vẻ như họ đang làm một số lỗi sai, vì có phương thức getDeviceInfo cho lớp bên trong DeviceInfoEndpoint bên trong Deviceinfoendpoint (các capatilisations khác nhau).

Tôi có thể thử và sửa nó, nhưng chỉ cần tự hỏi nếu tôi có điều gì sai trong thiết lập của tôi cho điều này sẽ xảy ra?

Mọi trợ giúp sẽ được đánh giá cao.

+0

Sự cố của bạn nằm trong dự án ứng dụng hoặc dự án appengine? Bạn có thể đăng một số stacktrace cho những lỗi này? –

+0

Vấn đề là với dự án ứng dụng. Không có stacktrace vì nó sẽ không biên dịch được. – reubenb87

+0

Đã đấu tranh với chính xác cùng một vấn đề tối hôm qua. Cũng đã thử với hai máy khác nhau với các thiết lập phần mềm khác nhau. – Heigo

Trả lời

3

Trong lớp GCMIntentService.java của bạn, thêm .deviceInfoEndpoint() sau khi đối tượng thiết bị đầu cuối trong dây chuyền với các lỗi như hình dưới đây:

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

Trong RegisterActivity.java thay đổi dòng

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

t o

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

Thankyou rất nhiều!Phải là một số lỗi trong mã tạo tự động của họ sau đó. – reubenb87

+0

Không sao cả. Nhưng bạn đã thực sự nhận được dự án mẫu làm việc? Tôi đã nhận được ứng dụng Android hoạt động và nó đã đăng ký tốt nhưng chương trình phụ trợ không thấy bất kỳ thiết bị nào. – Heigo

2

Tôi sẽ đảm bảo rằng bạn đang sử dụng cùng một phiên bản của API GCM khi bạn có JAR. Đã có khá nhiều sửa đổi.

Tôi đang sử dụng mã sau đây với gcm-server.jar, được liệt kê ở 19718 byte.

Code tôi thành công sử dụng để gửi tin nhắn GCM vào một thiết bị là:

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(); 
    } 
} 
Các vấn đề liên quan