Custom Push Notifications
In Android Push Notifications, it often happens that the a complete message/text is not visible. For small message/text it is ok but in case of longer message/text it is necessary to show complete message/text on a single push notification. It can be easily done by creating custom push notification in android. By using custom notification it does not matter how longer message/text you want to display on a single notification.
For custom push notification, first you need to create a custom layout. Here is sample layout which you can use or create your own custom layout for push notification. Then you can use this custom layout for notification.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="100dp"
android:gravity="center_vertical"
android:background="#f0f0f0">
<ImageView
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher"
android:layout_width="wrap_content"
android:id="@+id/image"
android:layout_marginLeft="10dip"
android:layout_centerVertical="true"
android:contentDescription="icon" />
<LinearLayout
android:gravity="center_vertical"
android:layout_height="match_parent"
android:layout_width="fill_parent"
android:layout_toRightOf="@+id/image"
android:orientation="vertical">
<TextView
android:text="TextView"
android:textStyle="bold"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:textSize="14sp"
android:id="@+id/title"
android:textColor="#3D3A34"
android:layout_marginLeft="10dip"/>
<TextView
android:gravity="center_vertical"
android:text="TextView"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:textSize="12sp"
android:id="@+id/text"
android:textColor="#3D3A34"
android:layout_marginLeft="10dip"
android:singleLine="false"
android:maxLines="8"/>
</LinearLayout>
</RelativeLayout>
Save this layout with "custom_notification.xml". This layout will be used in GCMIntentService Class.
After creating custom layout, create a method in GCMIntentService class as given below:
private static void generateCustomNotification(Context context,
String message, String title) {
try{
int icon = R.drawable.applogo; // this is the icon which you can set for notification, I set applogo as icon.
long when = System.currentTimeMillis();
RemoteViews contentView = new RemoteViews("com.yourpackname", R.layout.custom_notification);// custom_notification.xml layout used here
contentView.setImageViewResource(R.id.image,icon);
contentView.setTextViewText(R.id.title, title); // title of push notification
contentView.setTextViewText(R.id.text, message); //// message/text of push notification
NotificationManager notificationManager = (NotificationManager)
context.getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = new Notification(icon, message, when);
Intent notificationIntent = new Intent(context, YourActivity.class); //YourActivity will be activity of your project where you want to redirect user when he/she taps on push notification.
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
// set intent so it does not start a new activity
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |
Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
PendingIntent intent =PendingIntent.getActivity(context, 0, notificationIntent, Intent.FLAG_ACTIVITY_NEW_TASK);
notification.contentIntent = intent ;
notification.flags |= Notification.FLAG_AUTO_CANCEL;
notification.flags |= Notification.FLAG_SHOW_LIGHTS;
notification.defaults |= Notification.DEFAULT_VIBRATE; //Whenever a push notification receives, phone vibrates. For this, you need Vibrate permission in Manifest file. Otherwise, app crashes.
notification.defaults |= Notification.DEFAULT_LIGHTS;
notification.contentView = contentView;
notificationManager.notify(counter, notification); //static int counter = 0; this counter will be used if you send multiple push notifications so each notification displays as separate notification.
counter ++;
}catch (Exception e) {
}
}
That's all about Custom push notification.
Thanks visiting my blog. Please don't forget to give your feedback.
I welcome your valuable suggestions.
This comment has been removed by a blog administrator.
ReplyDelete