Android 不使用JSON的GCM推送通知

Android 不使用JSON的GCM推送通知,android,android-c2dm,google-cloud-messaging,Android,Android C2dm,Google Cloud Messaging,我正在尝试将我的应用程序从C2DM服务迁移到新的GCM推送通知。我已经成功地集成了gcminentservice类,它扩展了GCMBaseIntentService。当我使用PHP从服务器发送推送通知时,GCM将消息数据作为JSON对象发送。我在我的Android GCM服务中使用了以下代码,新代码返回空值 public void onMessage(Context context, Intent intent) { String action = intent.getA

我正在尝试将我的应用程序从C2DM服务迁移到新的GCM推送通知。我已经成功地集成了gcminentservice类,它扩展了GCMBaseIntentService。当我使用PHP从服务器发送推送通知时,GCM将消息数据作为JSON对象发送。我在我的Android GCM服务中使用了以下代码,新代码返回空值

public void onMessage(Context context, Intent intent)
    {
        String action = intent.getAction();     
        if ("com.google.android.c2dm.intent.RECEIVE".equals(action))   {            
             message=intent.getStringExtra("message");                                  
            createNotification(context);
        }
   }
PHP脚本包含:

$headers=数组( '授权:密钥='。$apiKey, '内容类型:应用程序/json' );

// Open connection
$ch = curl_init();

// Set the url, number of POST vars, POST data
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_POSTFIELDS, json_encode( $fields ) );
请建议我在PHP脚本中需要做哪些更改,以便使用GCM库发送推送通知,而不使用JSON

提前谢谢
Tim

您必须通过JSON发送有效负载-您不想使用JSON的原因是什么?

您确实可以在不使用JSON的情况下发送有效负载(如果您愿意),就像C2DM一样

首先,内容类型更改为:

Content-Type: application/x-www-form-urlencoded;charset=UTF-8
然后,您的HTTP正文将包含以下内容:

registration_id=xxxxxx&collapse_key=yyyyy&data.data1=value1&data.data2=value2
但是,通过以纯文本形式发送有效负载,一次只能将其发送到一个设备。仅此一个原因就应该避免使用此选项,除非您的C2DM代码中已经存在不希望更改的批量发送逻辑


请参见此处了解更多详细信息:

只是想确认我们是否只能使用JSON发送推送消息中的数据。不,它必须用JSON进行封装-确切地说,只有带有字符串参数的JSON(因为向后兼容2.2)谢谢。我已经完成了解析JSON的代码,并且在我的应用程序中运行良好:)