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