GCM通知的自定义UI

时间:2013-05-31 10:26:12

标签: android google-cloud-messaging

GCM Docs中给出:

  

它不提供任何内置用户界面或其他处理   消息数据。 GCM只是直接传递收到的原始消息数据   Android应用程序,它完全控制如何处理它。   例如,应用程序可能会发布通知,显示一个   自定义用户界面,或静默同步数据

但没有关于如何创建自定义通知UI的信息。

如何为GCM通知创建自定义用户界面,例如带有2个按钮等的小对话框。像gmail一样,可以选择从状态栏通知中归档或删除邮件。

CODE:

public void onReceive(Context context, Intent intent) {
    GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(context);
    ctx = context;
    String messageType = gcm.getMessageType(intent);
    if (GoogleCloudMessaging.MESSAGE_TYPE_SEND_ERROR.equals(messageType)) {
    } else if (GoogleCloudMessaging.MESSAGE_TYPE_DELETED
            .equals(messageType)) {
    } else {
        sendNotification(intent.getExtras().getString("msg"));
    }
    setResultCode(Activity.RESULT_OK);
}

private void sendNotification(String msg) {
    mNotificationManager = (NotificationManager) ctx
            .getSystemService(Context.NOTIFICATION_SERVICE);

    PendingIntent contentIntent = PendingIntent.getActivity(ctx, 0,
            new Intent(ctx, NotificationsActivity.class), 0);

    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
            ctx).setSmallIcon(R.drawable.ic_launcher)
            .setContentTitle("GCM Notification")
            .setContentText(msg);

    mBuilder.setContentIntent(contentIntent);
    Notification mNotification = mBuilder.getNotification();

    SharedPreferences sp = ctx.getSharedPreferences(
            GCMDemoActivity.GCM_NOTIF_PREF, Context.MODE_PRIVATE);
    long diff = System.currentTimeMillis()
            - sp.getLong("last_gcm_timestamp", 0);
    if (diff > TWO_MINUTES) {
        mNotification.defaults = Notification.DEFAULT_ALL;
        SharedPreferences.Editor editor = sp.edit();
        editor.putLong("last_gcm_timestamp", System.currentTimeMillis());
        editor.commit();
    }

    mNotificationManager.notify(NOTIFICATION_ID, mNotification);
}

谢谢

2 个答案:

答案 0 :(得分:5)

  

但没有关于如何创建自定义通知UI的信息。

因为这与GCM无关。

  

如何为GCM通知创建自定义用户界面,例如带有2个按钮等的小对话框。像gmail一样,可以选择从状态栏通知中归档或删除邮件。

这是一个扩展或“大”的通知,如the documentation所述。

答案 1 :(得分:0)

在GCMIntentService.java类中的generateNotification()中从GCM收到通知时,您可以创建一个带有两个按钮的对话框。