Sudah banyak yang memakai GCM di aplikasi android untuk handle notifikasi pada aplikasi mereka. Alasan memakai GCM karena dengan menggunakan itu kita tidak perlu repot lagi membuat web service untuk layanan update dan juga tidak perlu membuat service activity yang memungkinkan menjadikan handphone lemot. Jadi sistemnya ketika kita mengirim pesan ke server GCM dengan topic yang telah kita tentukan maka server GCM akan mengirim kepada client GCM yaitu pengguna apllikasi kita melalui service google pada aplikasi android.
Sekarang dari pada pusing langsung kita lakukan langkah-langkah memasang GCM di projek aplikasi kita. Oke langkah pertama yang perlu anda tambahkan yaitu pada manifest anda seperti script dibawah:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="pakage_anda" >
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<permission android:name="pakage_anda.permission.C2D_MESSAGE" android:protectionLevel="signature" />
<uses-permission android:name="pakage_anda.permission.C2D_MESSAGE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme" >
<activity android:name=".MainActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver
android:name="com.google.android.gms.gcm.GcmReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="pakage_anda" />
</intent-filter>
</receiver>
<service
android:name=".MyGcmListenerService"
android:exported="false" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</service>
<service
android:name=".MyInstanceIDListenerService"
android:exported="false" >
<intent-filter>
<action android:name="com.google.android.gms.iid.InstanceID" />
</intent-filter>
</service>
<service
android:name=".RegistrationIntentService"
android:exported="false" >
</service>
</application>
</manifest>
Lankah selanjutnya menambahkan empat file java ke dalam projek anda yaitu :
- MyGcmListenerService.java
- MyInstanceIDListenerService.java
- QuickstartPreference.java
- RegistrationIntentService.java
Jika belum punya empat file diatas silahkan download sample projek di link bawah artikel ini. Dan langkah selanjutnya kita tinggal tambahkan script java pada MainActivity anda dengan script dibawah ini:
private static final int PLAY_SERVICES_RESOLUTION_REQUEST = 9000;
private BroadcastReceiver mRegistrationBroadcastReceiver;
.....
//tambahkan script dibawah ini didalam bundle
mRegistrationBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
mRegistrationProgressBar.setVisibility(ProgressBar.GONE);
SharedPreferences sharedPreferences =
PreferenceManager.getDefaultSharedPreferences(context);
boolean sentToken = sharedPreferences
.getBoolean(QuickstartPreferences.SENT_TOKEN_TO_SERVER, false);
if (sentToken) {
mInformationTextView.setText(getString(R.string.gcm_send_message));
} else {
mInformationTextView.setText(getString(R.string.token_error_message));
}
}
};
if (checkPlayServices()) {
mInformationTextView.setText("registration");
Intent intent = new Intent(this, RegistrationIntentService.class);
startService(intent);
}
......
//Buat function baru
private boolean checkPlayServices() {
GoogleApiAvailability apiAvailability = GoogleApiAvailability.getInstance();
int resultCode = apiAvailability.isGooglePlayServicesAvailable(this);
if (resultCode != ConnectionResult.SUCCESS) {
if (apiAvailability.isUserResolvableError(resultCode)) {
apiAvailability.getErrorDialog(this, resultCode, PLAY_SERVICES_RESOLUTION_REQUEST)
.show();
} else {
Log.i(TAG, "This device is not supported.");
finish();
}
return false;
}
return true;
}
.....
//Tambahkan lagi script dibawah ini
@Override
protected void onResume() {
super.onResume();
LocalBroadcastManager.getInstance(this).registerReceiver(mRegistrationBroadcastReceiver,
new IntentFilter(QuickstartPreferences.REGISTRATION_COMPLETE));
}
@Override
protected void onPause() {
LocalBroadcastManager.getInstance(this).unregisterReceiver(mRegistrationBroadcastReceiver);
super.onPause();
}
Oke pemasangan GCM telah selesai, jika kurang jelas download sample saya disini.


4 komentar
kok Registration terus gak ?
Replykok regisrtration terus gan ?
ReplyIntent servicenya ga mau jalan itu...
ReplyJangan lupa import library gcmnya juga
ReplyPost a Comment