0

我已按照官方网站上提供的 GCM 教程进行操作:

http://developer.android.com/google/gcm/gs.html

我已经成功地在我的应用程序上实现了它。但由于我是 android 新手,所以我对 GCM 几乎没有什么困惑,如果有人能清除这些点,我会非常感激。

  • 我编写了一个 PHP 脚本(从 google 找到)并硬编码了我的注册 ID(仅用于测试)当我运行脚本时我在我的设备上收到了通知.. 但我不想收到通知,而是我想默默地接收数据和在我的设备上处理它。可能吗??这是PHP代码:

    $regID=$_REQUEST['regID'];
    $registatoin_ids=array($regID);
    $msg=array("message"=>'HI Wasif');
    $url='https://android.googleapis.com/gcm/send';
    $fields=array
     (
      'registration_ids'=>$registatoin_ids,
      'data'=>$msg
     );
    $headers=array
     (
      'Authorization: key=MY-REG-KEY',
      'Content-Type: application/json'
     );
    $ch=curl_init();
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_POST,true);
    curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
    curl_setopt($ch,CURLOPT_POSTFIELDS,json_encode($fields));
    $result=curl_exec($ch);
    curl_close($ch);
    echo $result;
    
  • 第二点是我想自定义我在我的设备上收到的通知我收到这样的通知......(见下图)但我想用我的应用程序名称替换标题文本“GCM 通知”,我应该显示消息正确(不像键,值文本)并且还更改通知的图像......任何人都可以提供一个教程如何在新的GoogleCloudMessaging API中做到这一点?(如果与新的 GoogleCouldMessaging API 不同,请不要提供旧方法) 在此处输入图像描述

    广播接收器代码:公共类 GcmBroadcastReceiver 扩展 WakefulBroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        // Explicitly specify that GcmIntentService will handle the intent.
        ComponentName comp = new ComponentName(context.getPackageName(),
                GcmIntentService.class.getName());
        // Start the service, keeping the device awake while it is launching.
        startWakefulService(context, (intent.setComponent(comp)));
        setResultCode(Activity.RESULT_OK);
    }
    }
    
4

1 回答 1

1

希望这个链接有帮助:GCM

1) 如果您不想在设备上接收通知,请在 generateNotification() 方法下从 GCMIntentService 类中删除通知代码。

2) 您可以通过在 generateNotification() 方法中实现以下代码来提供您的应用名称、应用图标:

private static void generateNotification(Context context, String message) {
    int icon = R.drawable.ic_launcher;
    long when = System.currentTimeMillis();
    NotificationManager notificationManager = (NotificationManager)
            context.getSystemService(Context.NOTIFICATION_SERVICE);
    Notification notification = new Notification(icon, message, when);

    String title = context.getString(R.string.app_name);

    Intent notificationIntent = new Intent(context, MainActivity.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;

    // Play default notification sound
    notification.defaults |= Notification.DEFAULT_SOUND;

    // Vibrate if vibrate is enabled
    notification.defaults |= Notification.DEFAULT_VIBRATE;
    notificationManager.notify(0, notification);      

}

希望这可以帮助。

于 2013-10-14T10:05:13.077 回答