Skip to content Skip to sidebar Skip to footer

Gcm Intentservice How To Display A Pop Up On Notification Receive

I would like to, on receive of a GCM, display a Popup on my current Activity if my app is active. I wanted to access my current activity in GcmIntentService but I dont think it is

Solution 1:

Well, you can use LocalBroadcast. See LocalBroadcast Manager. For how to implement is, there is a great example on how to use LocalBroadcastManager?.

LocalBroadcast Manager is a helper to register for and send broadcasts of Intents to local objects within your process. The data you are broadcasting won't leave your app, so don't need to worry about leaking private data.`

Your activity registers for this local broadcast. From the service you send a LocalBroadcast from within the onMessage (saying that hey, I received a message. Show it activity). Then inside your Activity you can listen to the broadcast. This way if the activity is in the forefront/is active, it will receive the broadcast otherwise it won't. So, whenever you receive that local broadcast, you may do the desired action if activity is open.

If you want to do for the whole app, then you can make all your activities extend an abstract activity. And inside this abstract activity class you can register it for this 'LocalBroadcast'. Other way is to register for LocalBroadcast inside all your activities (but then you'll have to manage how you'll show the message only once).

Hope it helps you.

Solution 2:

I have something like this:

In your GCM broadcast receiver

Intentintent=newIntent(NOTIFICATION_ACTION);
intent.putExtra(EXTRA_PARAMETER, "something you want to pass as an extra");
context.sendBroadcast(intent);

In your BaseActivity (an Activity that is extended by all the activities that you want to show the pop up)

privateBroadcastReceivernotificationBroadcastReceiver=newNotificationBroadcastReceiver();

@OverrideprotectedvoidonStart() {
    super.onStart();
    IntentFilterintentFilter=newIntentFilter(NOTIFICATION_ACTION);
    registerReceiver(notificationBroadcastReceiver, intentFilter);
}

@OverrideprotectedvoidonStop() {
    super.onStop();
    unregisterReceiver(notificationBroadcastReceiver);
}

privateclassNotificationBroadcastReceiverextendsBroadcastReceiver {
    @OverridepublicvoidonReceive(Context context, Intent intent) {
        //Show popup
    }
}

NOTIFICATION_ACTION is a constant you should define somewhere

Post a Comment for "Gcm Intentservice How To Display A Pop Up On Notification Receive"