Android GCM Java Server - 无消息数据的推送通知

时间:2013-01-28 11:13:41

标签: java android push-notification google-cloud-messaging

我正在尝试开发java服务器以在我的应用程序中发送推送通知。

我成功发送了通知,但我有两个问题......

  1. 消息文本未显示在状态栏中(仅显示应用程序的名称)

  2. 当我点击状态栏中的通知时没有任何反应(不打开应用程序)

  3. 这是我的java服务器代码:

        //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();
        }
    

    我打开路由器上的端口5228,但它没有改变......

    和我的应用中的来源:

    /**
     * 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);   
    }