Cara Menambahkan Google Cloude Messaging Di Android Studio

Kali ini saya akan membagikan cara bagaimana menambahakn google cloude messaging ke projek aplikasi yang telah kita buat. Namun sebelumnya saya akan menjelaskan fungsi fitur GCM tersebut, fitur yang paling utama daria GCM adalah notifikasi. Jadi dengan GCM kita bisa memberikan notifikasi kepada pemakai aplikasi kita, seperti update baru atau lainnya.



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 ?

Reply

kok regisrtration terus gan ?

Reply

Intent servicenya ga mau jalan itu...

Reply

Jangan lupa import library gcmnya juga

Reply

Post a Comment