diff --git a/android/src/main/java/com/evollu/react/fcm/SendNotificationTask.java b/android/src/main/java/com/evollu/react/fcm/SendNotificationTask.java index 1068278c8ee6746ab448bc464f0c54917c07e59a..48bf8789300cf3535a37bc3d7330411a6b7b073e 100644 --- a/android/src/main/java/com/evollu/react/fcm/SendNotificationTask.java +++ b/android/src/main/java/com/evollu/react/fcm/SendNotificationTask.java @@ -28,55 +28,55 @@ import static com.facebook.react.common.ReactConstants.TAG; public class SendNotificationTask extends AsyncTask { private static final long DEFAULT_VIBRATION = 300L; - + private Context mContext; private Bundle bundle; private SharedPreferences sharedPreferences; private Boolean mIsForeground; - + public SendNotificationTask(Context context, SharedPreferences sharedPreferences, Boolean mIsForeground, Bundle bundle){ this.mContext = context; this.bundle = bundle; this.sharedPreferences = sharedPreferences; this.mIsForeground = mIsForeground; } - + protected Void doInBackground(Void... params) { try { String intentClassName = getMainActivityClassName(); if (intentClassName == null) { return null; } - + if (bundle.getString("body") == null) { return null; } - + Resources res = mContext.getResources(); String packageName = mContext.getPackageName(); - + String title = bundle.getString("title"); if (title == null) { ApplicationInfo appInfo = mContext.getApplicationInfo(); title = mContext.getPackageManager().getApplicationLabel(appInfo).toString(); } - + NotificationCompat.Builder notification = new NotificationCompat.Builder(mContext) .setContentTitle(title) .setContentText(bundle.getString("body")) .setTicker(bundle.getString("ticker")) .setVisibility(NotificationCompat.VISIBILITY_PRIVATE) .setAutoCancel(bundle.getBoolean("auto_cancel", true)) - .setNumber(bundle.getInt("number")) + .setNumber((int)bundle.getDouble("number")) .setSubText(bundle.getString("sub_text")) .setGroup(bundle.getString("group")) .setVibrate(new long[]{0, DEFAULT_VIBRATION}) .setExtras(bundle.getBundle("data")); - + if (bundle.containsKey("ongoing") && bundle.getBoolean("ongoing")) { notification.setOngoing(bundle.getBoolean("ongoing")); } - + //priority String priority = bundle.getString("priority", ""); switch(priority) { @@ -92,7 +92,7 @@ public class SendNotificationTask extends AsyncTask { default: notification.setPriority(NotificationCompat.PRIORITY_DEFAULT); } - + //icon String smallIcon = bundle.getString("icon", "ic_launcher"); int smallIconResId = res.getIdentifier(smallIcon, "mipmap", packageName); @@ -102,7 +102,7 @@ public class SendNotificationTask extends AsyncTask { if(smallIconResId != 0){ notification.setSmallIcon(smallIconResId); } - + //large icon String largeIcon = bundle.getString("large_icon"); if(largeIcon != null && android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP){ @@ -112,41 +112,41 @@ public class SendNotificationTask extends AsyncTask { } else { int largeIconResId = res.getIdentifier(largeIcon, "mipmap", packageName); Bitmap largeIconBitmap = BitmapFactory.decodeResource(res, largeIconResId); - + if (largeIconResId != 0) { notification.setLargeIcon(largeIconBitmap); } } } - + //big text String bigText = bundle.getString("big_text"); if(bigText != null){ notification.setStyle(new NotificationCompat.BigTextStyle().bigText(bigText)); } - + //picture String picture = bundle.getString("picture"); if(picture!=null){ NotificationCompat.BigPictureStyle bigPicture = new NotificationCompat.BigPictureStyle(); - + if (picture.startsWith("http://") || picture.startsWith("https://")) { Bitmap bitmap = getBitmapFromURL(picture); bigPicture.bigPicture(bitmap); } else { int pictureResId = res.getIdentifier(picture, "mipmap", packageName); Bitmap pictureResIdBitmap = BitmapFactory.decodeResource(res, pictureResId); - + if (pictureResId != 0) { bigPicture.bigPicture(pictureResIdBitmap); } } bigPicture.setBigContentTitle(title); bigPicture.setSummaryText(bundle.getString("body")); - + notification.setStyle(bigPicture); } - + //sound String soundName = bundle.getString("sound"); if (soundName != null) { @@ -161,17 +161,17 @@ public class SendNotificationTask extends AsyncTask { notification.setSound(Uri.parse("android.resource://" + packageName + "/" + soundResourceId)); } } - + //color if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { notification.setCategory(NotificationCompat.CATEGORY_CALL); - + String color = bundle.getString("color"); if (color != null) { notification.setColor(Color.parseColor(color)); } } - + //vibrate if(bundle.containsKey("vibrate")){ long vibrate = Math.round(bundle.getDouble("vibrate", DEFAULT_VIBRATION)); @@ -181,40 +181,35 @@ public class SendNotificationTask extends AsyncTask { notification.setVibrate(null); } } - + //lights if (bundle.getBoolean("lights")) { notification.setDefaults(NotificationCompat.DEFAULT_LIGHTS); } - + if(bundle.containsKey("fire_date")) { Log.d(TAG, "broadcast intent if it is a scheduled notification"); Intent i = new Intent("com.evollu.react.fcm.ReceiveLocalNotification"); i.putExtras(bundle); mContext.sendOrderedBroadcast(i, null); } - + if(!mIsForeground || bundle.getBoolean("show_in_foreground")){ Intent intent = new Intent(); intent.setClassName(mContext, intentClassName); intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); intent.putExtras(bundle); intent.setAction(bundle.getString("click_action")); - + int notificationID = bundle.containsKey("id") ? bundle.getString("id", "").hashCode() : (int) System.currentTimeMillis(); PendingIntent pendingIntent = PendingIntent.getActivity(mContext, notificationID, intent, PendingIntent.FLAG_UPDATE_CURRENT); - + notification.setContentIntent(pendingIntent); - + Notification info = notification.build(); - - if (bundle.containsKey("tag")) { - String tag = bundle.getString("tag"); - NotificationManagerCompat.from(mContext).notify(tag, notificationID, info); - } else { - NotificationManagerCompat.from(mContext).notify(notificationID, info); - } + + NotificationManagerCompat.from(mContext).notify(notificationID, info); } //clear out one time scheduled notification once fired if(!bundle.containsKey("repeat_interval") && bundle.containsKey("fire_date")) { @@ -227,7 +222,7 @@ public class SendNotificationTask extends AsyncTask { } return null; } - + public Bitmap getBitmapFromURL(String strURL) { try { URL url = new URL(strURL); @@ -241,7 +236,7 @@ public class SendNotificationTask extends AsyncTask { return null; } } - + public String getMainActivityClassName() { String packageName = mContext.getPackageName(); Intent launchIntent = mContext.getPackageManager().getLaunchIntentForPackage(packageName); @@ -249,3 +244,4 @@ public class SendNotificationTask extends AsyncTask { return className; } } +