2013-07-26 7 views
8

Я пытаюсь получить сообщение с сервера как push-уведомление в android. Я могу ударить по серверу, но у меня есть нулевое сообщение с сервера. Я вижу уведомление в android без сообщения. Это мой код с сервера, и я получил андроид код из ANDROID HIVEGCM дает пустое сообщение

public class GCMBroadcast { 
    @POST 
    @Path("/getgcm") 
public String getGcmData(){ 
    String str="success"; 


       try { 
        System.out.println("From CLient"); 
        Sender sender = new Sender(
          "AIzaSyBbfXkbCYWQdE5qyjJKwl-YLBX-F01ICug"); 
        // add your own google api key in android menifest 
        // use this to send message with payload data 
        Message message = new Message.Builder() 
          .collapseKey("message") 
          .timeToLive(3) 
          .delayWhileIdle(true) 
          .addData("message", "Welcome to Push Notifications") 
          // you can get this message on client side app 
          .build(); 
        System.out.println("message:"+message); 
        System.setProperty("http.proxyHost", "192.168.1.110"); 
        // write you own proxy 
        System.setProperty("http.proxyPort", "8080"); 

        // write you own proxy host 
        // Use this code to send notification message to a single device 
        Result result = sender 
          .send(
            message, 
            "APA91bFEmQ53TKnJQXa0HbF9lXGTMEyRrp-6H9-_zZNBdFAUMsvXIG0rpvKcXn_6L5wBP77HskWw4svo6GLHZwfWdDf-yQCBAvIqp4fQF05cWqDtJ8mfNDnAQ8qdXByaEqwDmK3aQi0xIq7L3XGF1dSkbOOfBFIjlfDzlj4SG3z_SA-v3IUz_g4", 
            1); 
        System.out.println("Message Result: " + result.toString()); 

        // Use this code to send notification message to multiple 
        // devices 
        /*ArrayList<String> devicesList = new ArrayList<String>(); 

        // add your devices RegisterationID, one for each device 
        devicesList 
          .add("APA91bFEmQ53TKnJQXa0HbF9lXGTMEyRrp-6H9-_zZNBdFAUMsvXIG0rpvKcXn_6L5wBP77HskWw4svo6GLHZwfWdDf-yQCBAvIqp4fQF05cWqDtJ8mfNDnAQ8qdXByaEqwDmK3aQi0xIq7L3XGF1dSkbOOfBFIjlfDzlj4SG3z_SA-v3IUz_g4"); 

        // Use this code for multicast messages 
        MulticastResult multicastResult = sender.send(message, 
          devicesList, 0); 
        sender.send(message, devicesList, 0); 
        System.out.println("Message Result: " 
          + multicastResult.toString()); 
        */ 
       } catch (Exception e) { 
        e.printStackTrace(); 
        str="Failure"; 
       } 
     return str; 
    } 
} 

и я использую android hive example

+0

Предполагая, что вы получите ответ успеха от Google, вы должны опубликовать приложение коды обработки сообщение, если вы хотите помочь найти проблему. – Eran

+0

У меня есть код приложения из [this] (http://www.androidhive.info/2012/10/android-push-notifications-using-google-cloud-messaging-gcm-php-and-mysql/) и от android образцы –

ответ

10

В ссылке вы утверждаете, чтобы получить код от, сообщения извлекаются из параметра price:

/** 
* Method called on Receiving a new message 
* */ 
@Override 
protected void onMessage(Context context, Intent intent) { 
    Log.i(TAG, "Received message"); 
    String message = intent.getExtras().getString("price"); 

    displayMessage(context, message); 
    // notifies user 
    generateNotification(context, message); 
} 

Однако в коде сервера, вы кладете сообщение в качестве параметра message:

   Message message = new Message.Builder() 
         .collapseKey("message") 
         .timeToLive(3) 
         .delayWhileIdle(true) 
         .addData("message", "Welcome to Push Notifications") 

Это объясняет получение нулевого сообщения.

Возможно, вы изменили код клиента, который вы получили на этой ссылке, но так как вы не опубликовали свой код клиента, я не могу этого знать.

+0

Удивительно это работает для меня. Я боролся с этим в течение 2 дней, теперь он отлично работает. Огромное спасибо. –

+0

Этот ответ очень полезен – Steve

1

привет в демо-проекте вы получаете намерение.getExtras(). GetString («цена»); here.As цена, которую вы используете PHP Как ваш PHP админа prvide вам поле «имя» и использовать это имя поля и получить сообщение я также решить эту проблему ..

@Override 
     protected void onMessage(Context context, Intent intent) { 
      Log.i(TAG, "Received message"); 
      String message = intent.getExtras().getString("message"); 
      displayMessage(context, message); 
      // notifies user 
      generateNotification(context, message); 
     } 
-1

параметр и переменная ключ должен совпадать.

Вы проходите через этот веб-страницу, но сделать андроид ключ «сообщение» идентично:

enter image description here

enter image description here

Смежные вопросы