Java – Android GCM Java Server – Push notifications without message data

Android GCM Java Server – Push notifications without message data… here is a solution to the problem.

Android GCM Java Server – Push notifications without message data

I’m trying to develop a java server to send push notifications in my app.

I

successfully sent a notification, but I have two questions….

  1. The message text does not appear in the status bar (only the application name).

  2. When I tap the notification in the status bar, nothing happens (app not open).

Here is my java server code:

    //ArrayList<String> userGcmList = new ArrayList<String>();   
    ArrayList<String> userRegIdGcmList = new ArrayList<String>(); 

my phone
    userRegIdGcmList.add("***********");        

int numverOfDevicesRegisterd = userRegIdGcmList.size(); 

try {                   
        AI KEY 
        Sender sender = new Sender("*****************");    

 use this line to send message with payload data
        Message message = new Message.Builder()
            .collapseKey("1")
            .timeToLive(3)
            .delayWhileIdle(true)
            .addData("message", "Text in the status bar does not appear")
            .build();

 Use this for multicast messages
        MulticastResult result = sender.send(message, userRegIdGcmList, numverOfDevicesRegisterd);
        sender.send(message, userRegIdGcmList, numverOfDevicesRegisterd);           
        System.out.println(result.toString());  

if (result.getResults() != null) {
            int canonicalRegId = result.getCanonicalIds();
            if (canonicalRegId != 0) {
            }
        } else {
            int error = result.getFailure();
            System.out.println(error);
        }

} catch (Exception e) {         
        e.printStackTrace();
    }

I opened port 5228 on my router but it hasn’t changed….

and the source code in my app:

/**
 * Issues a notification to inform the user that server has sent a message.
 */
private static void generateNotification(Context context, String message) {
    long when = System.currentTimeMillis();
    NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    Notification notification = new Notification(R.drawable.ic_launcher, message, when);

notification.defaults |= Notification.DEFAULT_SOUND;
    notification.flags |= Notification.FLAG_AUTO_CANCEL;
    String title = context.getString(R.string.app_name);

Intent notificationIntent = new Intent(context, LauncherActivity.class);

 set intent so it does not start a new activity
    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
    PendingIntent intent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
    notification.setLatestEventInfo(context, title, message, intent);
    notification.flags |= Notification.FLAG_AUTO_CANCEL;
    notificationManager.notify(0, notification);   
}

Solution

Related Problems and Solutions