Skip to content

Instantly share code, notes, and snippets.

@irshu355
Created January 15, 2019 15:05
Show Gist options
  • Select an option

  • Save irshu355/2fcb4fa6b0954d4b626397a3e62f1832 to your computer and use it in GitHub Desktop.

Select an option

Save irshu355/2fcb4fa6b0954d4b626397a3e62f1832 to your computer and use it in GitHub Desktop.

Revisions

  1. irshu355 created this gist Jan 15, 2019.
    169 changes: 169 additions & 0 deletions CustomFcmMessageListenerService.java
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,169 @@
    public class CustomFcmMessageListenerService extends FirebaseMessagingService {
    @Override
    public void onMessageReceived(final RemoteMessage remoteMessage) {
    super.onMessageReceived(remoteMessage);

    Log.i("UID",SPUtils.getSharedStringData(this,BundleKey.Uid));
    //if user already logout, don't trigger push notification
    if(SPUtils.getSharedStringData(this,BundleKey.Uid).equals("")){
    return;
    }


    /**
    * track the push recevied event
    */


    try {
    if (remoteMessage.getData().size() > 0) {
    final Bundle extras = new Bundle();
    List<String> keys = new ArrayList<>();
    for (Map.Entry<String, String> entry : remoteMessage.getData().entrySet()) {
    extras.putString(entry.getKey(), entry.getValue());
    keys.add(entry.getKey());
    }
    NotificationInfo info = CleverTapAPI.getNotificationInfo(extras);
    EventHelper.trackNotificationReceived(info, extras);
    if (info.fromCleverTap) {
    // Log.v(getClass().getCanonicalName(),"app status:"+ status);
    if (extras.containsKey("sound")) {
    extras.putString("wzrk_sound", extras.getString("sound"));
    }
    extras.putString("LaunchType",LaunchTypeNotif);
    extras.putString("Type", "Campaign");
    extras.putString("Text", extras.getString("nt"));
    //sendNotificationClevertap(remoteMessage,extras);
    CleverTapAPI.createNotification(getApplicationContext(), extras);
    } else {
    sendNotificationCustom(remoteMessage, extras);
    }
    // not from CleverTap handle yourself or pass to another provider
    }
    } catch (Throwable ignored) {

    }
    }


    private PendingIntent getLiveScreenIntent(int notifId,String action,String screenType, String cid){
    Intent intent = new Intent(this,PlayerActivity.class);
    MediaInfo mediaInfo = new MediaInfo("" + cid, ScreenType.getScreenTypeByType(screenType));

    intent.putExtra(TamagoConstant.MEDIA_INFO, mediaInfo);

    Bundle bundle = new Bundle();
    bundle.putString("action", action);
    intent.putExtra("LaunchType",LaunchTypeNotif);
    intent.putExtra("Type", "Followers");
    intent.putExtra("Room Id", cid);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
    intent.putExtras(bundle);

    TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
    // Adds the back stack for the Intent
    stackBuilder.addNextIntentWithParentStack(new Intent(this, MainActivity.class));
    stackBuilder.addNextIntent(intent);
    PendingIntent pendingIntent = stackBuilder.getPendingIntent(notifId, PendingIntent.FLAG_ONE_SHOT);
    return pendingIntent;
    }

    private void sendNotificationCustom(RemoteMessage remoteMessage, Bundle extras) {
    Intent intent;
    PendingIntent pendingIntent;
    String message = extras.getString("message");
    String title = extras.getString("title");
    String action = extras.getString("action");
    String thumbImg = extras.getString("mediaUrl");
    // message = "mesage hre";
    // title = "title here";
    // action = AppConstant.BROADCASTER_LIVE;
    // thumbImg = "https://miscmedia-9gag-fun.9cache.com/images/thumbnail-facebook/1481536354.227_YsUzaZ_100x100.jpg";

    int notificationId = 0;
    if (!TextUtils.isEmpty(action) && action.equals(TamagoConstant.BROADCASTER_LIVE)) {
    String screenType = extras.getString("screenType");
    String cid = extras.getString("cid");
    // screenType = "2";
    // cid = "186195";
    try {
    notificationId = Integer.parseInt(cid);
    } catch (Exception ex) {
    Crashlytics.logException(ex);
    }
    if(isInForeground(getApplicationContext())) { //in foreground
    if (TextUtils.isEmpty(screenType)) screenType = "2";
    // Create an Intent for the activity you want to
    pendingIntent = getLiveScreenIntent(notificationId,action,screenType,cid);
    }else{
    if (TextUtils.isEmpty(screenType)) screenType = "2";
    // Create an Intent for the activity you want to start
    pendingIntent = getLiveScreenIntent(notificationId, action,screenType,cid);
    }
    } else {
    intent = new Intent(this, MainActivity.class);
    intent.putExtra("LaunchType",LaunchTypeNotif);
    intent.putExtra("Type", "Campaign");
    intent.putExtra("Text", message);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
    pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT);
    }
    if(thumbImg!=null) {
    JSONObject obj;
    try {
    obj = new JSONObject(thumbImg);
    thumbImg = obj.getString("normal");
    } catch (JSONException e) {
    Log.e("My App", "Could not parse malformed JSON: \"" + thumbImg + "\"");
    }
    }
    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this,"live_updates")
    .setSmallIcon(R.drawable.logo_default)
    .setLargeIcon(!TextUtils.isEmpty(thumbImg)? getBitmapFromURL(thumbImg) : BitmapFactory.decodeResource(getResources(), R.drawable.logo_default))
    // .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.logo_default))
    .setContentTitle(title)
    .setContentText(message)
    .setAutoCancel(true)
    .setWhen(System.currentTimeMillis()+(6 * 1000))
    .setContentIntent(pendingIntent);
    NotificationManager notificationManager =
    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    notificationManager.notify(notificationId, notificationBuilder.build());
    }

    private boolean isInForeground(Context context) {
    int numActivities = 0;
    if(numActivities==0){
    ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
    List<ActivityManager.RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses();
    if (appProcesses == null) {
    Log.v(getClass().getCanonicalName(),"app processes are emoty");
    return false;
    }
    final String packageName = context.getPackageName();
    for (ActivityManager.RunningAppProcessInfo appProcess : appProcesses) {
    if (appProcess.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND && appProcess.processName.equals(packageName)) {
    return true;
    }
    }
    }
    return false;
    }


    public Bitmap getBitmapFromURL(String src) {
    try {
    URL url = new URL(src);
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    connection.setDoInput(true);
    connection.connect();
    InputStream input = connection.getInputStream();
    Bitmap bitmap = BitmapFactory.decodeStream(input);
    return BitmapUtils.getRoundedBitmap(bitmap,10);
    } catch (IOException e) {
    // Log exception
    return null;
    }
    }

    }