El dispositivo no recibe el mensaje de NUEVO Google Cloud Messaging (NUEVO GCM)
Por favor, ayúdenme. He estado navegando sobre este tema y aún apilo en este nuevo GCM.
Mi último proyecto utilizando GCM Push según este enlace.
ht **: //www.androidhive.info/2012/10/android-push-notifications-using-google-cloud-messaging-gcm-php-and-mysql/
pero ahora, el último GCM (C2DM) está en desuso, por lo que ya no usamos GCMRegistrar
aquí, eche un vistazo a este h ** p: //developer.android.com/google/gcm/c2dm.html hay una declaración: "La mensajería de la nube a dispositivo (C2DM) de Android está en desuso. El servicio C2DM continuará siendo Mantenido a corto plazo, peroC2DM no aceptará usuarios nuevos y no otorgará cuotas nuevas"
Uso este enlace para aprender el concepto.
y para el ejemplo yo uso:https://code.google.com/p/gcm/source/browse/#git
Creo que he seguido todos los pasos necesarios.
He referido mi proyecto a Google Play Service Lib
También he cambiado mi ID de remitente a mi número de proyecto de Google
También he recibido RegID de GCM
pero el problema es, siempre que hago clic en el botón enviar
nunca me muestra nada
del ejemplo de documentación de Google, dice que debería ECHO volver a mi dispositivo, pero nunca lo hace
Verifiqué la documentación. El concepto dice que gcmbroadcastreceiver recibirá cualquier mensaje GCM enviado a mi dispositivo.
Así que intenté iniciar sesión dentro de "OnReceive" en esa emisora, pero nunca muestra nada.
También intenté implementar HTTP GCM Server usando esta documentaciónhttp://developer.android.com/google/gcm/http.html
Obtengo la respuesta como esta {"multicast_id": 6256370624066466203, "success": 1, "failure": 0, "canonical_ids": 0, "results": [{"message_id": "0: 1378114688323559% eab45603f9fd7ecd"}] }
pero mi registro nunca muestra nada
Aquí está mi transmisor
public class GcmBroadcastReceiver extends WakefulBroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.v("HAHA BANGET","masuk ke broadcastReceiver");
// 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);
}
}
y aqui esta mi servicio
public class GcmIntentService extends IntentService {
public static final int NOTIFICATION_ID = 1;
private NotificationManager mNotificationManager;
NotificationCompat.Builder builder;
public GcmIntentService() {
super("7134XXXXX");
}
public static final String TAG = "HAHA";
@Override
protected void onHandleIntent(Intent intent) {
Log.v(TAG,"MASUK INTENT NIH");
Bundle extras = intent.getExtras();
GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(this);
// The getMessageType() intent parameter must be the intent you received
// in your BroadcastReceiver.
String messageType = gcm.getMessageType(intent);
if (!extras.isEmpty()) { // has effect of unparcelling Bundle
/*
* Filter messages based on message type. Since it is likely that GCM will be
* extended in the future with new message types, just ignore any message types you're
* not interested in, or that you don't recognize.
*/
if (GoogleCloudMessaging.MESSAGE_TYPE_SEND_ERROR.equals(messageType)) {
sendNotification("Send error: " + extras.toString());
} else if (GoogleCloudMessaging.MESSAGE_TYPE_DELETED.equals(messageType)) {
sendNotification("Deleted messages on server: " + extras.toString());
// If it's a regular GCM message, do some work.
} else if (GoogleCloudMessaging.MESSAGE_TYPE_MESSAGE.equals(messageType)) {
// This loop represents the service doing some work.
for (int i = 0; i < 5; i++) {
Log.i(TAG, "Working... " + (i + 1)
+ "/5 @ " + SystemClock.elapsedRealtime());
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
}
}
Log.i(TAG, "Completed work @ " + SystemClock.elapsedRealtime());
// Post notification of received message.
sendNotification("Received: " + extras.toString());
Log.i(TAG, "Received: " + extras.toString());
}
}
// Release the wake lock provided by the WakefulBroadcastReceiver.
GcmBroadcastReceiver.completeWakefulIntent(intent);
}
// Put the message into a notification and post it.
// This is just one simple example of what you might choose to do with
// a GCM message.
private void sendNotification(String msg) {
mNotificationManager = (NotificationManager)
this.getSystemService(Context.NOTIFICATION_SERVICE);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
new Intent(this, PushBaruLagi.class), 0);
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.common_signin_btn_icon_dark)
.setContentTitle("GCM Notification")
.setStyle(new NotificationCompat.BigTextStyle()
.bigText(msg))
.setContentText(msg);
mBuilder.setContentIntent(contentIntent);
mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());
}
}
y aquí está mi manifiesto
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<permission android:name="com.coba.pushgcmbaru.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="com.coba.pushgcmbaru.permission.C2D_MESSAGE" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<receiver
android:name="com.coba.pushgcmbaru.GcmBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="com.coba.pushgcmbaru" />
</intent-filter>
</receiver>
<service android:name="com.coba.pushgcmbaru.GcmIntentService" />
<activity
android:name="com.coba.pushgcmbaru.PushBaruLagi"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
Estoy usando 2.2 FROYO
y he actualizado mis servicios de Google Play a la más nueva
así que si alguien me puede ayudar, muchas gracias :)