Estás usando debug key o private sing key?
Ah, espera...es que no tienes registro.php en tu servidor
<?php
/**
* Google Cloud Messenger
* Ejemplo de HTTP POST REQUEST
* Extraido de la documentacion de google: https://developers.google.com/cloud-messaging/
*
*
* https://gcm-http.googleapis.com/gcm/send
* Content-Type:application/json
* Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA
*
* { "data": {
* "score": "5x1",
* "time": "15:10"
* },
* "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..."
* }
**/
function enviarMensajeGCM($GCMregid, $mensaje, $otrodato, $apiKey){
$GCMapiKey = $apiKey;
// Registro Id del dispositivo
$registrationIDs = $GCMregid;
// Se establecen las variables que se van a mandar por POST
$cty="Content-Type: application/json";
// URL para el envio de los mensajes
//$url = 'https://android.googleapis.com/gcm/send'; //Antigua URL
$url = 'https://gcm-http.googleapis.com/gcm/send';
$fields = array(
'data' => array( "mensaje" => $mensaje , "dato" => $otrodato),
'to' => $registrationIDs
);
$headers = array(
'Authorization: key=' . $apiKey,
'Content-Type: application/json'
);
// Abre una conexión
$ch = curl_init();
// Establece el url, numero de variables Post y los datos del mensaje
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 ) );
// Ejecuta el post
$res_GCM_funcion = curl_exec($ch);
if ($res_GCM_funcion === FALSE) {
die('Curl failed: ' . curl_error($ch));
}
// Cierra la conexión
curl_close($ch);
//decodifica en el array $res la cadena Json que devuelve Google
$res = json_decode($res_GCM_funcion,true);
//Devuelve el array
return $res;
}
?>
Esa es la función que envia los mensajes. Necesitas un archivo php llamado registro.php que guarde los ids en la tabla.
¿Has creado la tabla?
Mañana te subiré un ejemplo básico porque registro.php no existe. Esperaba a que tú te animaras a programarlo. Te aconsejo que aprendas aunque sea un poquito PHP y otros lenguajes, que diversifiques, así te resultará todo más facil y comprensible. Invertir tiempo en aprender es una buenísima idea. Lo mismo con los idiomas.
<?
$conexion = mysqli_connect("localhost", "database_user", "database_password", "database_name");
$nuevoRegistro = $_POST['codigoRegistro'];
$nuevoRegistro = mysqli_real_escape_string($conexion,$nuevoRegistro);
mysqli_set_charset($conexion, "utf8");
if (mysqli_connect_errno()) {
printf("Conexión fallida: %s\n", mysqli_connect_error());
mysqli_close($conexion);
exit;
} else {
$sql = "CREATE TABLE IF NOT EXISTS c2dm (idc2dm INT(11) NOT NULL AUTO_INCREMENT,
idregistro VARCHAR(1024) NOT NULL UNIQUE,
PRIMARY KEY (idc2dm))";
$resultado = mysqli_query($conexion,$sql);
if ($resultado) {
if (isset($nuevoRegistro) && !empty($nuevoRegistro)) {
$sql2= "INSERT INTO c2dm (idregistro) VALUES ('".$nuevoRegistro."')";
$resultado2 = mysqli_query($conexion,$sql2);
if ($resultado2) {
echo 'Registro insertado con exito';
}
} else {
echo 'no hay datos para insertar';
}
}
}
mysqli_close($conexion);
?>
<?
$mysqli = mysqli_connect("localhost", "database_user", "database_password", "database_name");
mysqli_set_charset($mysqli, "utf8");
if (mysqli_connect_errno()) {
printf("Conexión fallida: %s\n", mysqli_connect_error());
mysqli_close($mysqli);
exit;
} else {
$sql="SELECT * FROM c2dm";
$resultado = mysqli_query($mysqli,$sql);
if ($resultado) {
$numeroRegistros=mysqli_num_rows($resultado);
while ($info = mysqli_fetch_array($resultado))
{
$aDispositivos[] = array("id" => stripslashes($info['idc2dm']), "registro" =>stripslashes($info['idregistro']));
}
}
}
mysqli_close($mysqli);
?>
<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
<h2>Enviar Notificacion push</h2>
<p>Selecciona el dispositivo y escribe el mensaje.</p>
<form action="enviaPushProceso.php" method="post">
<div>Mensaje:    <input type="text" name="mensaje" maxlength="50"></div><br>
<div>Dispositivo:
<select id="idregistro" name="idregistro">
<?
foreach($aDispositivos as $key => $valor){
echo '<option value="'.$valor['registro'].'">Dispositivo '.$valor['id'].'</option>';
}
?>
</select>
</div><br>
<div>
<input id="btn-load" type="submit" value="Enviar Mensaje">
</div>
</form>
</body>
<?
$conexion = mysqli_connect("localhost", "database_user", "database_password", "database_name");
$idRegistro = $_POST['idregistro'];
$mensajeEnvio = $_POST['mensaje'];
$GoogleApiKey = "RIadGGw4TTgfeer.......jjeeAS5YYgjddmqQp98";
$otroDatoEnvio = "hola mundo";
mysqli_set_charset($conexion, "utf8");
if (mysqli_connect_errno()) {
printf("Conexión fallida: %s\n", mysqli_connect_error());
mysqli_close($conexion);
exit;
} else {
$sql = "SELECT * FROM c2dm WHERE idregistro ='".$_POST['idregistro']."'";
$resultado = mysqli_query($conexion,$sql);
if ($resultado) {
$numeroRegistros=mysqli_num_rows($resultado);
if ($numeroRegistros == 1) {
$resultadoGCM = enviarMensajeGCM($idRegistro,$mensajeEnvio, $otroDatoEnvio, $GoogleApiKey);
} else {
echo 'error';
}
}
}
mysqli_close($conexion);
function enviarMensajeGCM($GCMregid, $mensaje, $otrodato, $apiKey){
$GCMapiKey = $apiKey;
// Registro Id del dispositivo
$registrationIDs = $GCMregid;
// Se establecen las variables que se van a mandar por POST
$cty="Content-Type: application/json";
// URL para el envio de los mensajes
//$url = 'https://android.googleapis.com/gcm/send'; //Antigua URL
$url = 'https://gcm-http.googleapis.com/gcm/send';
$fields = array(
'data' => array( "mensaje" => $mensaje , "otrodato" => $otrodato),
'to' => $registrationIDs
);
$headers = array(
'Authorization: key=' . $apiKey,
'Content-Type: application/json'
);
// Abre una conexión
$ch = curl_init();
// Establece el url, numero de variables Post y los datos del mensaje
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 ) );
// Ejecuta el post
$res_GCM_funcion = curl_exec($ch);
if ($res_GCM_funcion === FALSE) {
die('Curl failed: ' . curl_error($ch));
}
// Cierra la conexión
curl_close($ch);
//decodifica en el array $res la cadena Json que devuelve Google
$res = json_decode($res_GCM_funcion,true);
echo 'Google responde: ';
echo '<br>multicast_id: ';
echo $res['multicast_id'];
echo '<br>success: ';
echo $res['success'];
echo '<br>failure: ';
echo $res['failure'];
echo '<br>canonical_ids: ';
echo $res['canonical_ids'];
echo '<br>success: ';
echo $res['success'];
echo '<br>message_id: ';
echo $res['results'][0]['message_id'];
echo '<br>registration_id: ';
echo $res['results'][0]['registration_id'];
echo '<br>error: ';
echo $res['results'][0]['error'];
//Devuelve el array
return $res;
}
?>
Sub MessageArrived (Intent As Intent)
Dim Mensaje, CollapseKey, Otrodato As String 'ignore
If Intent.HasExtra("mensaje") Then Mensaje = Intent.GetExtra("mensaje")
If Intent.HasExtra("otrodato") Then Otrodato = Intent.GetExtra("otrodato")
If Intent.HasExtra("collapse_key") Then CollapseKey = Intent.GetExtra("collapse_key")
'Here you should handle the new message:
Log("New message arrived: " & Data)
ToastMessageShow("New message: " & Data, True)
Dim AvisoNotificacion As Notification
AvisoNotificacion.Initialize
AvisoNotificacion.AutoCancel=True
AvisoNotificacion.Icon ="icon"
AvisoNotificacion.SetInfo("Nueva notificacion",Mensaje & " " & Otrodato,Main)
AvisoNotificacion.Notify(1)
End Sub