Android FCM通知未显示Oreo

Android FCM通知未显示Oreo,android,firebase-cloud-messaging,android-notifications,android-8.0-oreo,Android,Firebase Cloud Messaging,Android Notifications,Android 8.0 Oreo,我已经尝试了许多创建频道的解决方案,但当它在Oreo设备中接收时,我仍然没有收到通知内容。通知声音正在发出,但通知抽屉中没有实际通知 下面是我现有的代码 public class SendNotificationTask extends AsyncTask<Void, Void, Void> { private static final long DEFAULT_VIBRATION = 300L; private Context mContext; private Bundle b

我已经尝试了许多创建频道的解决方案,但当它在Oreo设备中接收时,我仍然没有收到通知内容。通知声音正在发出,但通知抽屉中没有实际通知

下面是我现有的代码

public class SendNotificationTask extends AsyncTask<Void, Void, Void> {
private static final long DEFAULT_VIBRATION = 300L;

private Context mContext;
private Bundle bundle;
private SharedPreferences sharedPreferences;
private Boolean mIsForeground;

String title;

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();

        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((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")) {
            getNotificationBuilder().setOngoing(bundle.getBoolean("ongoing"));
        }

        //priority
        String priority = bundle.getString("priority", "");
        switch(priority) {
            case "min":
                getNotificationBuilder().setPriority(NotificationCompat.PRIORITY_MIN);
                break;
            case "high":
                getNotificationBuilder().setPriority(NotificationCompat.PRIORITY_HIGH);
                break;
            case "max":
                getNotificationBuilder().setPriority(NotificationCompat.PRIORITY_MAX);
                break;
            default:
                getNotificationBuilder().setPriority(NotificationCompat.PRIORITY_DEFAULT);
        }

        //icon
        String smallIcon = bundle.getString("icon", "ic_launcher");
        int smallIconResId = res.getIdentifier(smallIcon, "mipmap", packageName);
        if(smallIconResId == 0){
            smallIconResId = res.getIdentifier(smallIcon, "drawable", packageName);
        }
        if(smallIconResId != 0){
            getNotificationBuilder().setSmallIcon(smallIconResId);
        }

        //large icon
        String largeIcon = bundle.getString("large_icon");
        if(largeIcon != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
            if (largeIcon.startsWith("http://") || largeIcon.startsWith("https://")) {
                Bitmap bitmap = getBitmapFromURL(largeIcon);
                getNotificationBuilder().setLargeIcon(bitmap);
            } else {
                int largeIconResId = res.getIdentifier(largeIcon, "mipmap", packageName);
                Bitmap largeIconBitmap = BitmapFactory.decodeResource(res, largeIconResId);

                if (largeIconResId != 0) {
                    getNotificationBuilder().setLargeIcon(largeIconBitmap);
                }
            }
        }

        //big text
        String bigText = bundle.getString("big_text");
        if(bigText != null){
            getNotificationBuilder().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"));

            getNotificationBuilder().setStyle(bigPicture);
        }

        //sound
        String soundName = bundle.getString("sound");
        if (soundName != null) {
            if (soundName.equalsIgnoreCase("default")) {
                getNotificationBuilder().setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));
            } else {
                int soundResourceId = res.getIdentifier(soundName, "raw", packageName);
                if (soundResourceId == 0) {
                    soundName = soundName.substring(0, soundName.lastIndexOf('.'));
                    soundResourceId = res.getIdentifier(soundName, "raw", packageName);
                }
                getNotificationBuilder().setSound(Uri.parse("android.resource://" + packageName + "/" + soundResourceId));
            }
        }

        //color
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            getNotificationBuilder().setCategory(NotificationCompat.CATEGORY_CALL);

            String color = bundle.getString("color");
            if (color != null) {
                getNotificationBuilder().setColor(Color.parseColor(color));
            }
        }

        //vibrate
        if(bundle.containsKey("vibrate")){
            long vibrate = Math.round(bundle.getDouble("vibrate", DEFAULT_VIBRATION));
            if(vibrate > 0){
                getNotificationBuilder().setVibrate(new long[]{0, vibrate});
            }else{
                getNotificationBuilder().setVibrate(null);
            }
        }

        //lights
        if (bundle.getBoolean("lights")) {
            getNotificationBuilder().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);

            getNotificationBuilder().setContentIntent(pendingIntent);

            Notification info = getNotificationBuilder().build();

            NotificationManagerCompat.from(mContext).notify(notificationID, info);
        }
        //clear out one time scheduled notification once fired
        if(!bundle.containsKey("repeat_interval") && bundle.containsKey("fire_date")) {
            SharedPreferences.Editor editor = sharedPreferences.edit();
            editor.remove(bundle.getString("id"));
            editor.apply();
        }




        String body=bundle.getString("body");


        NotificationManager notificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && notificationManager != null) {
            String channelID = "Your Channel ID";// The id of the channel.
            int importance = NotificationManager.IMPORTANCE_HIGH;
            NotificationChannel mChannel = new NotificationChannel(channelID, "My_Name", importance);
            // Create a notification and set the notification channel.

            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);

            getNotificationBuilder().setContentIntent(pendingIntent);

            Notification notification = getNotificationBuilder()
                    .setChannelId(channelID)
                    .build();

            notificationManager.createNotificationChannel(mChannel);
            notificationManager.notify(101, notification);
        }

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {

            int importance = NotificationManager.IMPORTANCE_HIGH;
            NotificationChannel mChannel = new
                    NotificationChannel("1", title, importance);
            mChannel.setDescription(body);
            mChannel.enableLights(true);
            mChannel.setLightColor(ContextCompat.getColor
                    (mContext.getApplicationContext(), R.color.colorPrimary));
            notificationManager.createNotificationChannel(mChannel);

        }










    } catch (Exception e) {
        Log.e(TAG, "failed to send local notification", e);
    }
    return null;
}

public Bitmap getBitmapFromURL(String strURL) {
    try {
        URL url = new URL(strURL);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setDoInput(true);
        connection.connect();
        InputStream input = connection.getInputStream();
        return BitmapFactory.decodeStream(input);
    } catch (IOException e) {
        e.printStackTrace();
        return null;
    }
}

public String getMainActivityClassName() {
    String packageName = mContext.getPackageName();
    Intent launchIntent = mContext.getPackageManager().getLaunchIntentForPackage(packageName);
    String className = launchIntent.getComponent().getClassName();
    return className;
}



//....................................>>>CHANNEL
private NotificationCompat.Builder getNotificationBuilder() {
    return 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((int)bundle.getDouble("number"))
            .setSubText(bundle.getString("sub_text"))
            .setGroup(bundle.getString("group"))
            .setVibrate(new long[]{0, DEFAULT_VIBRATION})
            .setExtras(bundle.getBundle("data"));
}


}
公共类SendNotificationTask扩展了AsyncTask{
专用静态最终长默认_振动=300L;
私有上下文;
私有包;
私人共享引用共享引用;
私人布尔型失利地;
字符串标题;
public SendNotificationTask(上下文上下文、SharedReferences SharedReferences、Boolean mIsForeground、Bundle){
this.mContext=上下文;
this.bundle=bundle;
this.SharedReferences=SharedReferences;
此项。失稳接地=失稳接地;
}
受保护的Void doInBackground(Void…参数){
试一试{
字符串intentClassName=getMainActivityClassName();
if(intentClassName==null){
返回null;
}
if(bundle.getString(“body”)==null){
返回null;
}
Resources res=mContext.getResources();
字符串packageName=mContext.getPackageName();
title=bundle.getString(“title”);
if(title==null){
ApplicationInfo appInfo=mContext.getApplicationInfo();
title=mContext.getPackageManager().getApplicationLabel(appInfo.toString();
}
/*NotificationCompat.Builder通知=新建NotificationCompat.Builder(mContext)
.setContentTitle(标题)
.setContentText(bundle.getString(“正文”))
.setTicker(bundle.getString(“ticker”))
.setVisibility(NotificationCompat.VISIBILITY\u PRIVATE)
.setAutoCancel(bundle.getBoolean(“自动取消”,true))
.setNumber((int)bundle.getDouble(“number”))
.setSubText(bundle.getString(“sub_text”))
.setGroup(bundle.getString(“组”))
.setVibration(新的长[]{0,默认值_振动})
.setExtras(bundle.getBundle(“数据”))*/
if(bundle.containsKey(“进行中”)和&bundle.getBoolean(“进行中”)){
getNotificationBuilder().setContinuous(bundle.getBoolean(“Continuous”);
}
//优先权
String priority=bundle.getString(“priority”,即“”);
交换机(优先级){
案例“min”:
getNotificationBuilder().setPriority(NotificationCompat.PRIORITY_MIN);
打破
案例“高”:
getNotificationBuilder().setPriority(NotificationCompat.PRIORITY_HIGH);
打破
案例“max”:
getNotificationBuilder().setPriority(NotificationCompat.PRIORITY_MAX);
打破
违约:
getNotificationBuilder().setPriority(NotificationCompat.PRIORITY_默认值);
}
//图标
String smallIcon=bundle.getString(“icon”、“ic_启动器”);
int smallIconResId=res.getIdentifier(smallIcon,“mipmap”,packageName);
如果(smallIconResId==0){
smallIconResId=res.getIdentifier(smallIcon,“可绘制”,packageName);
}
如果(smallIconResId!=0){
getNotificationBuilder().setSmallIcon(smallIconResId);
}
//大图标
String largeIcon=bundle.getString(“大图标”);
if(largeIcon!=null&&Build.VERSION.SDK\u INT>=Build.VERSION\u code.LOLLIPOP){
if(largeIcon.startsWith(“http:/”)| | largeIcon.startsWith(“https:/”){
位图位图=getBitmapFromURL(大图标);
getNotificationBuilder().setLargeIcon(位图);
}否则{
int largeIconResId=res.getIdentifier(largeIcon,“mipmap”,packageName);
位图largeIconBitmap=BitmapFactory.decodeResource(res,largeIconResId);
如果(最大剩余量!=0){
getNotificationBuilder().setLargeIcon(largeIconBitmap);
}
}
}
//大文本
String bigText=bundle.getString(“大文本”);
if(bigText!=null){
getNotificationBuilder().setStyle(新的NotificationCompat.BigTextStyle().bigText(bigText));
}
//图画
String picture=bundle.getString(“picture”);
如果(图片!=null){
NotificationCompat.BigPictureStyle bigPicture=新建NotificationCompat.BigPictureStyle();
if(picture.startsWith(“http:/”)| | picture.startsWith(“https:/”){
位图位图=getBitmapFromURL(图片);
bigPicture.bigPicture(位图);
}否则{
int pictureResId=res.getIdentifier(图片“mipmap”,packageName);
位图PictureSidBitmap=BitmapFactory.decodeResource(res,PictureSid);
如果(pictureResId!=0){
bigPicture.bigPicture(PictureSidBitmap);
}
}
bigPicture.setBigContentTitle(标题);
bigPicture.setSummaryText(bundle.getString(“body”);
getNotificationBuilder().setStyle(bigPicture);
}
//声音
String soundName=bundle.getString(“声音”);
if(soundName!=null){
if(soundName.equalsIgnoreCase(“默认”)){
getNotificationBuilder().setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_通知));
}否则{
int soundResourceId=res.getIdentifier(soundName,“raw”,packageName);
如果(soundResourceId==0){
soundName=soundName.substring(0,soundName.lastIndexOf('.');
soundResourceId=res.getIdentifier(soundName,“原始”,packageName);
}
getNotificationBuilder().setSound(Uri.parse(“android.resource://“+packageName+”/“+soundResourceId));
}
}
//颜色
if(Build.VERSION.SDK\u INT>=Build.VERSION\u code.LOLLIPOP){
getNotificationBuilder().setCategory(不是
 private void showNotificationMessage(Context context, String title, String message, String timeStamp, Intent intent) {


            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);


            NotificationManager notificationManager =
                    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

            int notificationId = 1;
            String channelId = "channel-01";
            String channelName = "Channel Name";
            int importance = NotificationManager.IMPORTANCE_HIGH;

            if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
                NotificationChannel mChannel = new NotificationChannel(
                        channelId, channelName, importance);

                assert notificationManager != null;
                notificationManager.createNotificationChannel(mChannel);
            }

            PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent,
                    PendingIntent.FLAG_UPDATE_CURRENT);
            Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);

            NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context, channelId)
                    .setSmallIcon(R.drawable.gg_logo)
                    .setContentTitle(title)
                    .setContentText(message)
                    .setAutoCancel(true)
                    .setSound(defaultSoundUri)
                    .setDefaults(Notification.DEFAULT_LIGHTS | Notification.DEFAULT_SOUND)
                    .setContentIntent(pendingIntent);

            TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
            stackBuilder.addNextIntent(intent);
            PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(
                    0,
                    PendingIntent.FLAG_UPDATE_CURRENT
            );
            mBuilder.setContentIntent(resultPendingIntent);

            notificationManager.notify((int) System.currentTimeMillis(), mBuilder.build());


        }