Google Cloud Messaging (GCM) untuk android adalah layanan gratis yang disediakan oleh google untuk melakukan push notifications. Dengan GCM kita dapat mengirimkan data dari server melalui GCM yang lalu diteruskan ke klien dalam hal ini perangkat android. Layanan ini dapat melakukan pengiriman notifikasi atau pesan sebesar 4kb. Mengenai queue nya merupakan bagian GCM yang mengatur (Push Notification Android GCM PHP).
Tutorial ini menggunakan GUI eclipse. Ada beberapa requirement yang diperlukan terlebih dahulu.
1. Pastikan anda sudah menginstall extras Google Cloud Messaging for Android di Eclipse.
2. Daftarkan/buat project Anda di google developer console. Di link https://console.developers.google.com/
3. Pada google developer console, beberapa hal yang dilakukan
- dapatkan project number dari project yang Anda buat
- aktifkan google cloud messaging for android
- dapatkan server key
Jika Semua sudah dilakukan. Sekarang saat ini kita beralih untuk melakukan coding disisi eclipse.
1. Setelah anda memastikan sudah menginstall Google Cloud Messaging for android. Anda perlu mengincludekan jar gcm tersebut pada project Anda melalui Java Build Path - External Jars. Jar GCM terdapat pada android-sdk/extras/google/gcm/gcm-client/dist
2. Pada file MainActivity project Anda tambahkan setelah layout
Tutorial ini menggunakan GUI eclipse. Ada beberapa requirement yang diperlukan terlebih dahulu.
1. Pastikan anda sudah menginstall extras Google Cloud Messaging for Android di Eclipse.
2. Daftarkan/buat project Anda di google developer console. Di link https://console.developers.google.com/
3. Pada google developer console, beberapa hal yang dilakukan
- dapatkan project number dari project yang Anda buat
- aktifkan google cloud messaging for android
- dapatkan server key
Jika Semua sudah dilakukan. Sekarang saat ini kita beralih untuk melakukan coding disisi eclipse.
1. Setelah anda memastikan sudah menginstall Google Cloud Messaging for android. Anda perlu mengincludekan jar gcm tersebut pada project Anda melalui Java Build Path - External Jars. Jar GCM terdapat pada android-sdk/extras/google/gcm/gcm-client/dist
2. Pada file MainActivity project Anda tambahkan setelah layout
GCMRegistrar.checkDevice(this); GCMRegistrar.checkManifest(this);Sementara itu untuk mendaftarkan registration ID dengan menambahkan :
GCMRegistrar.register(MainActivity.this,GCMIntentService.SENDER_ID);3. Selain itu kita perlu membuat file GCMIntentService.java untuk menangkap notifikasi.
import java.util.Timer;
import java.util.TimerTask;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.PowerManager;
import android.util.Log;
import com.google.android.gcm.GCMBaseIntentService;
public class GCMIntentService extends GCMBaseIntentService {
private static final String TAG = "GCM Tutorial::Service";
// Use your PROJECT ID from Google API into SENDER_ID
public static final String SENDER_ID = "394127269050";
public GCMIntentService() {
super(SENDER_ID);
}
@Override
protected void onRegistered(Context context, String registrationId) {
Log.i(TAG, "onRegistered: registrationId=" + registrationId);
}
@Override
protected void onUnregistered(Context context, String registrationId) {
Log.i(TAG, "onUnregistered: registrationId=" + registrationId);
}
@Override
protected void onMessage(Context context, Intent data) {
String message;
// Message from PHP server
message = data.getStringExtra("message");
// Open a new activity called GCMMessageView
Intent intent = new Intent(this, GCMMessageView.class);
// Pass data to the new activity
intent.putExtra("message", message);
// Starts the activity on notification click
PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT);
// Create the notification with a notification builder
Notification notification = new Notification.Builder(this)
.setSmallIcon(R.drawable.ic_launcher)
.setWhen(System.currentTimeMillis())
.setContentTitle("Title Notifikasi")
.setContentText(message).setContentIntent(pIntent)
.getNotification();
// Remove the notification on click
notification.flags |= Notification.FLAG_AUTO_CANCEL;
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
manager.notify(R.string.app_name, notification);
{
// Wake Android Device when notification received
PowerManager pm = (PowerManager) context
.getSystemService(Context.POWER_SERVICE);
final PowerManager.WakeLock mWakelock = pm.newWakeLock(
PowerManager.FULL_WAKE_LOCK
| PowerManager.ACQUIRE_CAUSES_WAKEUP, "GCM_PUSH");
mWakelock.acquire();
// Timer before putting Android Device to sleep mode.
Timer timer = new Timer();
TimerTask task = new TimerTask() {
public void run() {
mWakelock.release();
}
};
timer.schedule(task, 5000);
}
}
@Override
protected void onError(Context arg0, String errorId) {
Log.e(TAG, "onError: errorId=" + errorId);
}
}
4. Kita tambahkan satu file lagi untuk melihat isi notifikasi tersebut pada file GCMMessageView
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
public class GCMMessageView extends Activity {
String message;
TextView txtmsg;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.messageview);
// Retrive the data from GCMIntentService.java
Intent i = getIntent();
message = i.getStringExtra("message");
// Locate the TextView
txtmsg = (TextView) findViewById(R.id.message);
// Set the data into TextView
txtmsg.setText(message);
}
}
layout untuk message view sederhana :
5. Pada file AndroidManifest.xml beberapa yang ditambahkan seperti :
Ingat anda perlu mengganti sesuai nama package Anda pada permission diatas. Selain itu juga nama file class yang tadi dibuat dalam activity
Setelah sudah, saatnya disisi server PHP yang akan mengirimkan pesan :
$message = $_POST['message'];
// Set POST variables
$url = 'https://android.googleapis.com/gcm/send';
$fields = array(
'registration_ids' => array($_POST['registrationIDs']),
'data' => array( "message" => $message ),
);
$headers = array(
'Authorization: key=' . $_POST['apiKey'],
'Content-Type: application/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 ) );
// Execute post
$result = curl_exec($ch);
// Close connection
curl_close($ch);
echo $result;
Di file PHP anda perlu memasukkkan API key yang sudah didapatkan dari Google Developer Console. Selain itu, kita juga perlu memasukkan registration ID milik android ketika didaftarkan. Done !


Komentar (6)