1

I am creating an application with push notification from my server. I am successful in registering the device with GCM and got the regID. Later, when I used to send the notification using the ID it’s not receiving any notification. I have listed all the code below and I am not sure where I am making mistake. Please Help me. Thank you.

Manifest

                <uses-sdk
                    android:minSdkVersion="14"
                    android:targetSdkVersion="22" />

                <permission
                    android:name="com.example.mycab.permission.C2D_MESSAGE"
                    android:protectionLevel="signature" />

                <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
                <uses-permission android:name="com.example.mycab.permission.C2D_MESSAGE" />
                <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
                <uses-permission android:name="android.permission.VIBRATE" />
                <uses-permission android:name="android.permission.READ_PHONE_STATE" />
                <uses-permission android:name="android.permission.INTERNET" />
                <uses-permission android:name="android.permission.GET_ACCOUNTS" />
                <uses-permission android:name="android.permission.WAKE_LOCK" />

                <application
                    android:name=".AppController"
                    android:allowBackup="true"
                    android:icon="@drawable/ic_launcher"
                    android:label="@string/app_name"
                    android:theme="@style/AppTheme" >

                    <!-- Splash screen -->
                    <activity
                        android:name=".SplashScreen"
                        android:label="@string/app_name"
                        android:screenOrientation="portrait"
                        android:theme="@android:style/Theme.Black.NoTitleBar" >
                        <intent-filter>
                            <action android:name="android.intent.action.MAIN" />

                            <category android:name="android.intent.category.LAUNCHER" />
                        </intent-filter>
                    </activity>
                    <activity
                        android:name=".LoginActivity"
                        android:label="@string/app_name"
                        android:launchMode="singleTop"
                        android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
                        android:windowSoftInputMode="adjustPan" />
                    <!-- Main activity -->
                    <activity
                        android:name=".MainActivity"
                        android:label="@string/app_name"
                        android:launchMode="singleTop"
                        android:windowSoftInputMode="adjustPan" />
                    <activity
                        android:name=".RegisterActivity"
                        android:label="@string/app_name"
                        android:launchMode="singleTop"
                        android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
                        android:windowSoftInputMode="adjustPan" />

                    <meta-data android:name="com.google.android.gms.version"
                       android:value="@integer/google_play_services_version" />

                    <receiver
                        android:name=".GcmBroadcastReceiver"
                        android:exported="true"
                        android:permission="com.google.android.c2m.permission.SEND" >
                        <intent-filter>
                            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
                            <category android:name="com.example.mycab" />
                        </intent-filter>
                    </receiver>
                    <service android:name=".GCMIntentService" />
                </application>

            </manifest>

GcmBroadcastReceiver.java

            package com.example.mycab;

            import android.app.Activity;
            import android.content.ComponentName;
            import android.content.Context;
            import android.content.Intent;
            import android.support.v4.content.WakefulBroadcastReceiver;

            public class GcmBroadcastReceiver extends WakefulBroadcastReceiver{

                @Override
                public void onReceive(Context context, Intent intent) {
                    System.out.println("PUSH RECEIVED!!!");

                    ComponentName comp = new ComponentName(context.getPackageName(),GCMNotificationIntentService.class.getName());
                    startWakefulService(context, (intent.setComponent(comp)));
                    setResultCode(Activity.RESULT_OK);

                }

            }

GCMIntentService.java

            package com.example.mycab;

            import com.google.android.gms.gcm.GoogleCloudMessaging;

            import android.app.IntentService;
            import android.app.NotificationManager;
            import android.app.PendingIntent;
            import android.content.Context;
            import android.content.Intent;
            import android.os.Bundle;
            import android.os.SystemClock;
            import android.support.v4.app.NotificationCompat;
            import android.util.Log;


            public class GCMIntentService extends IntentService {

                public static final int NOTIFICATION_ID = 1;
                private NotificationManager mNotificationManager;
                NotificationCompat.Builder builder;

                public GCMIntentService() {
                    super("GcmIntentService");
                }
                public static final String TAG = "GCM Demo";

                @Override
                protected void onHandleIntent(Intent intent) {

                    Bundle extras = intent.getExtras();
                    GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(this);
                    String messageType = gcm.getMessageType(intent);

                    if (!extras.isEmpty()) {  

                        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());
                        } else if (GoogleCloudMessaging.MESSAGE_TYPE_MESSAGE.equals(messageType)) {

                            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());
                            sendNotification("Received: " + extras.toString());
                            Log.i(TAG, "Received: " + extras.toString());
                        }
                    }
                    GcmBroadcastReceiver.completeWakefulIntent(intent);
                }


                private void sendNotification(String msg) {

                    mNotificationManager = (NotificationManager)
                            this.getSystemService(Context.NOTIFICATION_SERVICE);

                    PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
                            new Intent(this, MainActivity.class), 0);

                    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this).setSmallIcon(R.drawable.ic_home)
                    .setContentTitle("GCM Notification")
                    .setStyle(new NotificationCompat.BigTextStyle()
                    .bigText(msg))
                    .setContentText(msg);

                    mBuilder.setContentIntent(contentIntent);
                    mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());
                }
            }
user3543888
  • 85
  • 1
  • 8
  • Is your server getting successful acknowledgement from the GCM server after sending the notification message ? could you post your server code ? – adhithiyan Sep 21 '15 at 04:56
  • Does logcat show any GCM messages being recieved by the device ? what of your server code? – e4c5 Sep 21 '15 at 05:10
  • Yes, I am getting successful acknowledgement from GCM and Logcat shows nothing seems like its not working. – user3543888 Sep 22 '15 at 15:37
  • I also followed steps in below thread. http://stackoverflow.com/questions/22168819/android-test-push-notification-online-google-cloud-messaging – user3543888 Sep 22 '15 at 15:38
  • The code is outdated, you should follow the official quick start [here](https://developers.google.com/cloud-messaging/android/start) and get the code [here](https://github.com/googlesamples/google-services/tree/master/android/gcm). – bjiang Sep 22 '15 at 21:23

0 Answers0