ওরিওতে বিজ্ঞপ্তি প্রদর্শিত হচ্ছে না


183

সাধারণ বিজ্ঞপ্তি নির্মাতা অ্যান্ড্রয়েড ও তে বিজ্ঞপ্তিগুলি দেখায় না

অ্যান্ড্রয়েড 8 ওরিওতে আমি কীভাবে বিজ্ঞপ্তিটি প্রদর্শন করতে পারি?

অ্যান্ড্রয়েড ও-তে বিজ্ঞপ্তি প্রদর্শনের জন্য যুক্ত করার জন্য কোডের নতুন কোনও টুকরা রয়েছে?


3
আমি নোটিফিকেশন কমপ্যাট.বিল্ডারে ".setChannelId" সেট করতে ভুলে গেছি এবং এখন এরিয়োতে ​​এটির কাজ করছে (8.0)
varotariya vajsi

উত্তর:


264

অ্যান্ড্রয়েড ওয়ে আপনার নোটিফিকেশন বিল্ডার সহ একটি চ্যানেল ব্যবহার করা আবশ্যক

নীচে একটি নমুনা কোড রয়েছে:

// Sets an ID for the notification, so it can be updated.
int notifyID = 1; 
String CHANNEL_ID = "my_channel_01";// The id of the channel. 
CharSequence name = getString(R.string.channel_name);// The user-visible name of the channel.
int importance = NotificationManager.IMPORTANCE_HIGH;
NotificationChannel mChannel = new NotificationChannel(CHANNEL_ID, name, importance);
// Create a notification and set the notification channel.
Notification notification = new Notification.Builder(MainActivity.this)
            .setContentTitle("New Message")
            .setContentText("You've received new messages.")
            .setSmallIcon(R.drawable.ic_notify_status)
            .setChannelId(CHANNEL_ID)
            .build();

অথবা হ্যান্ডলিং সামঞ্জস্য সহ:

NotificationCompat notification =
        new NotificationCompat.Builder(this)
        .setSmallIcon(R.drawable.notification_icon)
        .setContentTitle("My notification")
        .setContentText("Hello World!")
        .setChannelId(CHANNEL_ID).build();



NotificationManager mNotificationManager =
            (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
 mNotificationManager.createNotificationChannel(mChannel);

// Issue the notification.
mNotificationManager.notify(notifyID , notification);

বা যদি আপনি একটি সাধারণ ফিক্স চান তবে নিম্নলিখিত কোডটি ব্যবহার করুন:

NotificationManager mNotificationManager =
            (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
       mNotificationManager.createNotificationChannel(mChannel);
    }

আপডেটস: নোটিফিকেশনকম্প্যাট.বিল্ডার রেফারেন্স

NotificationCompat.Builder(Context context)

এই কনস্ট্রাক্টরটি এআইপিএল স্তরের 26.0.0 এ অবহেলা করা হয়েছিল যাতে আপনার ব্যবহার করা উচিত

Builder(Context context, String channelId)

সুতরাং setChannelIdনতুন নির্মাণকারীর সাথে কোনও দরকার নেই to

এবং আপনার বর্তমানে অ্যাপ্লিকম্প্যাট লাইব্রেরির সর্বশেষতম 26.0.2 ব্যবহার করা উচিত

compile "com.android.support:appcompat-v7:26.0.+"

ইউটিউবে অ্যান্ড্রয়েড বিকাশকারী চ্যানেলের উত্স

এছাড়াও, আপনি অফিসিয়াল অ্যান্ড্রয়েড ডক্স চেক করতে পারেন


4
চ্যানেল ব্যবহার করার আগে আপনাকে অবশ্যই এটি তৈরি করতে হবে। দেখুন developer.android.com/reference/android/app/...
Guillaume, Perrot

2
setChannel setChannelId পক্ষে অবচিত
Guillaume, Perrot

1
আপনি যদি অ্যাপ্লিকেশন ইনস্টল করার সময়কালে অন্তত একবার চ্যানেল তৈরি না করেন তবে আপনি ত্রুটি পাবেন না।
গিলিয়াম পেরেট

1
@ এমোরনেইউ স্পষ্টতই আমার ভুল চ্যানেলের নাম ছিল। এটা এখন কাজ করছে. ধন্যবাদ তবে আপনার উত্তরটি সম্পূর্ণ নয় ... আপনাকে অবশ্যই প্রথমে একটি চ্যানেল তৈরি করতে হবে mNotificationsManager.createNotificationsChannel (এমচ্যানেল) ব্যবহার করে; (আমি এটি আমার অ্যাপ্লিকেশন শ্রেণিতে করেছি) ... এর জন্য গুগল ডক্স দেখুন। হতে পারে এটি আপনার উত্তরে যুক্ত করুন।
জেপিএম

2
নতুন NotificationCompat.Builder(Context, String)কনস্ট্রাক্টরটি পেতে আমার কী নির্ভরতা / সংস্করণগুলি লক্ষ্য করা উচিত ? আমি ব্যবহার করছি (অন্যান্য বিষয় ছাড়াও): - compileSdkVersion 26- buildToolsVersion '26.0.2'- compile 'com.android.support:appcompat-v7:26.0.0-beta2' এবং এখনো এটি এখনও আমার কন্সট্রাকটর একটি প্রসঙ্গ এবং স্ট্রিং ব্যবহার গ্রহণ না। কোন ধারনা?
লুইসাইদা স্যাম স্যান্ডবার্গ

91

এখানে আমি অভিপ্রায় পরিচালনা সহ কিছু দ্রুত সমাধানের ফাংশন পোস্ট করি

public void showNotification(Context context, String title, String body, Intent intent) {
    NotificationManager notificationManager = (NotificationManager) context.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);
        notificationManager.createNotificationChannel(mChannel);
    }

    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context, channelId)
            .setSmallIcon(R.mipmap.ic_launcher)
            .setContentTitle(title)
            .setContentText(body);

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

    notificationManager.notify(notificationId, mBuilder.build());
}

একই অবস্থা. কেবলমাত্র একজন যা আমাকে এফসিএম এবং অ্যান্ড্রয়েড> = 8 এর জন্য 4 কাজ করেছে
ইং ইয়ং ইয়াং

1
দ্রুত এবং সরল
alfian5229

তোমাকে অনেক ধন্যবাদ. বিজ্ঞপ্তিগুলি কেন প্রদর্শিত হয় না তা সমস্যা সমাধানের জন্য আমি কয়েক ঘন্টা ব্যয় করেছি। সুতরাং আপনি যদি কেবল একটি পপ আপ চান তবে কেবল অ্যান্ড্রয়েড ওরিও + এর জন্য নোটিফিকেশন ম্যানেজার ব্যবহার করে আপনি নোটিফিকেশন চ্যানেল তৈরি করেছেন তা নিশ্চিত করুন।
জোকসন

এই কোডটি প্রয়োগ করা এবং বোঝা সহজ, এটি 2019 সালের ডিসেম্বরের পরেও আধুনিক। ধন্যবাদ।
প্রদীপ ধাওয়ান

অ্যান্ড্রয়েডে নোটিফিকেশন ম্যানেজ.নোটিফাইফ এবং স্টার্টফোরগ্রাউন্ডের মধ্যে পার্থক্য কী?
ব্যবহারকারী 1090751

76

এই উত্তর ছাড়াও , আপনাকে বিজ্ঞপ্তি চ্যানেলটি ব্যবহারের আগে তৈরি করতে হবে।

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

      /* Create or update. */
      NotificationChannel channel = new NotificationChannel("my_channel_01",
          "Channel human readable title", 
          NotificationManager.IMPORTANCE_DEFAULT);
      mNotificationManager.createNotificationChannel(channel);
  }

এছাড়াও আপনার চ্যানেলগুলি কেবল তখনই ব্যবহার করতে হবে যদি আপনার টার্গেটএসডিভি ভার্সনটি 26 বা তার বেশি হয়।

আপনি যদি নোটিফিকেশন কমপ্যাট.বিল্ডার ব্যবহার করে থাকেন তবে আপনাকে সমর্থন লাইব্রেরির বিটা সংস্করণেও আপডেট করতে হবে: https://developer.android.com/topic/libraries/support-library/revisions.html#26-0-0- বিটা 2 ( কম্প্যাক্টsetChannelId নির্মাতাকে কল করতে সক্ষম হতে )।

এই লাইব্রেরি আপডেটটি minSdkLevel 14 এ বাড়ায় তাই সাবধান হন।


মিনিট এপিআই ২ 26 এর চেয়ে কম হলে এটি একটি সতর্কতা বাড়িয়ে তুলবে @
এস-শিকারি

আপনার যদি কোড নমুনার মতো থাকে তবে এটি সতর্কতা তৈরি করবে না, দ্রুত ফিক্সের বিভিন্ন পরামর্শ রয়েছে, তাদের মধ্যে একটি হ'ল সংস্করণটি যাচাই করে যদি কোডটি ঘিরে থাকে। আপনি যদি সংস্করণ চেকটি টিউন করেন তবে অ্যান্ড্রয়েড স্টুডিওগুলি বিভ্রান্ত হতে পারে এবং এটি সনাক্ত করতে পারে না।
গিলিয়াম পেরেট

11
public class MyFirebaseMessagingServices extends FirebaseMessagingService {
    private NotificationChannel mChannel;
    private NotificationManager notifManager;
    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        if (remoteMessage.getData().size() > 0) {
            try {
                JSONObject jsonObject = new JSONObject(remoteMessage.getData());
                displayCustomNotificationForOrders(jsonObject.getString("title"), jsonObject.getString("description"));
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }

    private void displayCustomNotificationForOrders(String title, String description) {
        if (notifManager == null) {
            notifManager = (NotificationManager) getSystemService
                    (Context.NOTIFICATION_SERVICE);
        }
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            NotificationCompat.Builder builder;
            Intent intent = new Intent(this, Dashboard.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            PendingIntent pendingIntent;
            int importance = NotificationManager.IMPORTANCE_HIGH;
            if (mChannel == null) {
                mChannel = new NotificationChannel
                        ("0", title, importance);
                mChannel.setDescription(description);
                mChannel.enableVibration(true);
                notifManager.createNotificationChannel(mChannel);
            }
            builder = new NotificationCompat.Builder(this, "0");

            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |
                    Intent.FLAG_ACTIVITY_SINGLE_TOP);
            pendingIntent = PendingIntent.getActivity(this, 1251, intent, PendingIntent.FLAG_ONE_SHOT);
            builder.setContentTitle(title)  
                    .setSmallIcon(getNotificationIcon()) // required
                    .setContentText(description)  // required
                    .setDefaults(Notification.DEFAULT_ALL)
                    .setAutoCancel(true)
                    .setLargeIcon(BitmapFactory.decodeResource
                            (getResources(), R.mipmap.logo))
                    .setBadgeIconType(R.mipmap.logo)
                    .setContentIntent(pendingIntent)
                    .setSound(RingtoneManager.getDefaultUri
                            (RingtoneManager.TYPE_NOTIFICATION));
            Notification notification = builder.build();
            notifManager.notify(0, notification);
        } else {

            Intent intent = new Intent(this, Dashboard.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            PendingIntent pendingIntent = null;

            pendingIntent = PendingIntent.getActivity(this, 1251, intent, PendingIntent.FLAG_ONE_SHOT);

            Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
            NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
                    .setContentTitle(title)
                    .setContentText(description)
                    .setAutoCancel(true)
                    .setColor(ContextCompat.getColor(getBaseContext(), R.color.colorPrimary))
                    .setSound(defaultSoundUri)
                    .setSmallIcon(getNotificationIcon())
                    .setContentIntent(pendingIntent)
                    .setStyle(new NotificationCompat.BigTextStyle().setBigContentTitle(title).bigText(description));

            NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
            notificationManager.notify(1251, notificationBuilder.build());
        }
    }

    private int getNotificationIcon() {
        boolean useWhiteIcon = (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP);
        return useWhiteIcon ? R.mipmap.logo : R.mipmap.logo;
    }
}

NotificationsCompat এ setChannelId (CHANNEL_ID) সেট না করে u বিল্ডার বিজ্ঞপ্তিগুলি দেখায় না।
শিহাব উদ্দিন

7

আপনি যদি 26+ SDK সংস্করণে পুশ বিজ্ঞপ্তিটি না পান?

আপনার সমাধান এখানে:

public static void showNotification(Context context, String title, String messageBody) {

        boolean isLoggedIn = SessionManager.getInstance().isLoggedIn();
        Log.e(TAG, "User logged in state: " + isLoggedIn);

        Intent intent = null;
        if (isLoggedIn) {
            //goto notification screen
            intent = new Intent(context, MainActivity.class);
            intent.putExtra(Extras.EXTRA_JUMP_TO, DrawerItems.ITEM_NOTIFICATION);
        } else {
            //goto login screen
            intent = new Intent(context, LandingActivity.class);
        }

        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        PendingIntent pendingIntent = PendingIntent.getActivity(context, 0 /* Request code */, intent, PendingIntent.FLAG_ONE_SHOT);

        //Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        //Bitmap largeIcon = BitmapFactory.decodeResource(getResources(), R.drawable.ic_app_notification_icon);

        String channel_id = createNotificationChannel(context);

        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context, channel_id)
                .setContentTitle(title)
                .setContentText(messageBody)
                .setStyle(new NotificationCompat.BigTextStyle().bigText(messageBody))
                /*.setLargeIcon(largeIcon)*/
                .setSmallIcon(R.drawable.app_logo_color) //needs white icon with transparent BG (For all platforms)
                .setColor(ContextCompat.getColor(context, R.color.colorPrimaryDark))
                .setVibrate(new long[]{1000, 1000})
                .setSound(Settings.System.DEFAULT_NOTIFICATION_URI)
                .setContentIntent(pendingIntent)
                .setPriority(Notification.PRIORITY_HIGH)
                .setAutoCancel(true);

        NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        notificationManager.notify((int) ((new Date(System.currentTimeMillis()).getTime() / 1000L) % Integer.MAX_VALUE) /* ID of notification */, notificationBuilder.build());
    }

public static String createNotificationChannel(Context context) {

        // NotificationChannels are required for Notifications on O (API 26) and above.
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {

            // The id of the channel.
            String channelId = "Channel_id";

            // The user-visible name of the channel.
            CharSequence channelName = "Application_name";
            // The user-visible description of the channel.
            String channelDescription = "Application_name Alert";
            int channelImportance = NotificationManager.IMPORTANCE_DEFAULT;
            boolean channelEnableVibrate = true;
//            int channelLockscreenVisibility = Notification.;

            // Initializes NotificationChannel.
            NotificationChannel notificationChannel = new NotificationChannel(channelId, channelName, channelImportance);
            notificationChannel.setDescription(channelDescription);
            notificationChannel.enableVibration(channelEnableVibrate);
//            notificationChannel.setLockscreenVisibility(channelLockscreenVisibility);

            // Adds NotificationChannel to system. Attempting to create an existing notification
            // channel with its original values performs no operation, so it's safe to perform the
            // below sequence.
            NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
            assert notificationManager != null;
            notificationManager.createNotificationChannel(notificationChannel);

            return channelId;
        } else {
            // Returns null for pre-O (26) devices.
            return null;
        }
    }

নোটিফিকেশনকম্প্যাট.বিল্ডার নোটিফিকেশন বিল্ডার = নতুন নোটিফিকেশনকমপ্যাট.বিল্ডার (প্রসঙ্গ, চ্যানেল_আইডি)

-> এখানে আপনি channel_idআপনার ডিভাইসে 26+ SDK সংস্করণ সমন্বিত ব্যবহার করে পুশ বিজ্ঞপ্তি পাবেন ।

-> কারণ, NotificationCompat.Builder(context)এখন অবচিত পদ্ধতিটি আপনি এখন একটি আপডেট সংস্করণ ব্যবহার করবেন যার দুটি পরামিতি রয়েছে যার একটি প্রসঙ্গ, অন্যটি চ্যানেল_আইডি।

-> NotificationCompat.Builder(context, channel_id)আপডেট পদ্ধতি। এটি চেষ্টা করুন।

-> ডিভাইসের 26+ SDK সংস্করণে আপনি প্রতিবার চ্যানেল_আইডি তৈরি করবেন।


ধন্যবাদ আমি অবহিত করার জন্য একটি স্থির notifcation_id ব্যবহার করছিলাম
প্রথম কেশারকর

5

অ্যান্ড্রয়েড 8 বিজ্ঞপ্তির জন্য এই শ্রেণিটি ব্যবহার করুন

public class NotificationHelper {

private Context mContext;
private NotificationManager mNotificationManager;
private NotificationCompat.Builder mBuilder;
public static final String NOTIFICATION_CHANNEL_ID = "10001";

public NotificationHelper(Context context) {
    mContext = context;
}

/**
 * Create and push the notification 
 */
public void createNotification(String title, String message)
{    
    /**Creates an explicit intent for an Activity in your app**/
    Intent resultIntent = new Intent(mContext , SomeOtherActivity.class);
    resultIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

    PendingIntent resultPendingIntent = PendingIntent.getActivity(mContext,
            0 /* Request code */, resultIntent,
            PendingIntent.FLAG_UPDATE_CURRENT);

    mBuilder = new NotificationCompat.Builder(mContext);
    mBuilder.setSmallIcon(R.mipmap.ic_launcher);
    mBuilder.setContentTitle(title)
            .setContentText(message)
            .setAutoCancel(false)
            .setSound(Settings.System.DEFAULT_NOTIFICATION_URI)
            .setContentIntent(resultPendingIntent);

    mNotificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);

    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O)
    {
        int importance = NotificationManager.IMPORTANCE_HIGH;
        NotificationChannel notificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, "NOTIFICATION_CHANNEL_NAME", importance);
        notificationChannel.enableLights(true);
        notificationChannel.setLightColor(Color.RED);
        notificationChannel.enableVibration(true);
        notificationChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400});
        assert mNotificationManager != null;
        mBuilder.setChannelId(NOTIFICATION_CHANNEL_ID);
        mNotificationManager.createNotificationChannel(notificationChannel);
    }
    assert mNotificationManager != null;
    mNotificationManager.notify(0 /* Request Code */, mBuilder.build());
  }
}

4

এই কোড ব্যবহার করে দেখুন:

public class FirebaseMessagingServices extends com.google.firebase.messaging.FirebaseMessagingService {
    private static final String TAG = "MY Channel";
    Bitmap bitmap;

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        super.onMessageReceived(remoteMessage);
        Utility.printMessage(remoteMessage.getNotification().getBody());

        // Check if message contains a data payload.
        if (remoteMessage.getData().size() > 0) {
            Log.d(TAG, "Message data payload: " + remoteMessage.getData());

            String title = remoteMessage.getData().get("title");
            String body = remoteMessage.getData().get("body");
            String message = remoteMessage.getData().get("message");
            String imageUri = remoteMessage.getData().get("image");
            String msg_id = remoteMessage.getData().get("msg-id");
          

            Log.d(TAG, "1: " + title);
            Log.d(TAG, "2: " + body);
            Log.d(TAG, "3: " + message);
            Log.d(TAG, "4: " + imageUri);
          

            if (imageUri != null)
                bitmap = getBitmapfromUrl(imageUri);

            }

            sendNotification(message, bitmap, title, msg_id);
                    
        }


    }

    private void sendNotification(String message, Bitmap image, String title,String msg_id) {
        int notifyID = 0;
        try {
            notifyID = Integer.parseInt(msg_id);
        } catch (NumberFormatException e) {
            e.printStackTrace();
        }

        String CHANNEL_ID = "my_channel_01";            // The id of the channel.
        Intent intent = new Intent(this, HomeActivity.class);
        intent.putExtra("title", title);
        intent.putExtra("message", message);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);


        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent,
                PendingIntent.FLAG_ONE_SHOT);

        Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, "01")
                .setContentTitle(title)
                .setSmallIcon(R.mipmap.ic_notification)
                .setStyle(new NotificationCompat.BigTextStyle()
                        .bigText(message))
                .setContentText(message)
                .setAutoCancel(true)
                .setSound(defaultSoundUri)
                .setChannelId(CHANNEL_ID)
                .setContentIntent(pendingIntent);

        if (image != null) {
            notificationBuilder.setStyle(new NotificationCompat.BigPictureStyle()   //Set the Image in Big picture Style with text.
                    .bigPicture(image)
                    .setSummaryText(message)
                    .bigLargeIcon(null));
        }


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

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {       // For Oreo and greater than it, we required Notification Channel.
           CharSequence name = "My New Channel";                   // The user-visible name of the channel.
            int importance = NotificationManager.IMPORTANCE_HIGH;

            NotificationChannel channel = new NotificationChannel(CHANNEL_ID,name, importance); //Create Notification Channel
            notificationManager.createNotificationChannel(channel);
        }

        notificationManager.notify(notifyID /* ID of notification */, notificationBuilder.build());
    }

    public Bitmap getBitmapfromUrl(String imageUrl) {     //This method returns the Bitmap from Url;
        try {
            URL url = new URL(imageUrl);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setDoInput(true);
            connection.connect();
            InputStream input = connection.getInputStream();
            Bitmap bitmap = BitmapFactory.decodeStream(input);
            return bitmap;

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return null;

        }

    }

}


আমি এই কোডটি ব্যবহার করেছি তবে চিত্রের সাথে প্রিয় বিজ্ঞপ্তিটি দৃশ্যমান নয় যখন পটভূমিতে অ্যাপের কোনও সমাধান থাকে দয়া করে সহায়তা করুন।
মহসিন খান

এটি কিছু বিষয়গুলির উপর নির্ভর করে যেমন: - ১. আপনি কি নেটওয়ার্কের সাথে সংযুক্ত রয়েছেন .. ??? ২) কি চিত্র ইউআরএল উপযুক্ত (ব্রাউজারে চিত্রমুখে আঘাত করে চিত্র চেক করুন)
রোহিত Mhatre

3

অ্যান্ড্রয়েড ওের জন্য অ্যান্ড্রয়েড নোটিফিকেশন ডেমো অ্যাপ্লিকেশন পাশাপাশি নিম্নের API সংস্করণ। এখানে গিটহাব-ডেমো 1 এবং গিটহাব-ডেমো 2- তে সেরা ডেমো অ্যাপ্লিকেশন রয়েছে ।

এখানে চিত্র বর্ণনা লিখুন


সোর্সগুলির মালিকানাধীন কোনও অ্যাট্রিবিউশন / এফিলিয়েশন ছাড়াই বাহ্যিক উত্সের লিঙ্ক সরবরাহ করার পরিবর্তে অ্যাপটি কীভাবে কাজ করে তার নূন্যতম কোড স্নিপেট পোস্ট করার বিষয়টি দয়া করে বিবেচনা করুন। (এই উত্সগুলি অ্যাক্সেসের অন্য কোনও উপায় ছাড়াই যে কোনও মুহুর্তে নীচে নেমে যেতে পারে))
এড্রিক

2

এটি ফায়ারবেস এপিআই সংস্করণ 11.8.0 এ বাগ রয়েছে, সুতরাং আপনি যদি API সংস্করণ হ্রাস করেন তবে আপনি এই সমস্যার মুখোমুখি হবেন না।


আসলে আমি এটি যাচাই করেছি। যদি আপনি অ্যান্ড্রয়েড এমুলেটরটিতে কাজ করে থাকেন - আপনার অ্যাপ্লিকেশনটি শারীরিক ডিভাইসে পরীক্ষা করুন। নতুন এক এমুলেটর কোনওভাবে বিজ্ঞপ্তিগুলি দেখায় না।
ডেডফিশ

না, প্রকৃতপক্ষে এটি ফায়ারবেস সংস্করণ 11.8.0 এ একটি বাগ ছিল এবং এখন এটি নতুন সংস্করণ 12.0.0 এ স্থির হয়েছে। : অবগতির জন্য আপনি অফিসিয়াল রিলিজ নোট দেখতে পারেন firebase.google.com/support/release-notes/android
M.Noman

2

ওরিওতে আমার একই সমস্যা ছিল এবং এটি আবিষ্কার করেছিলাম যে আপনি যদি প্রথমে নোটিফিকেশন ম্যানেজ.আইএমপোর্টটিএনএসএনও দিয়ে আপনার চ্যানেল তৈরি করেন, তবে পরে এটি আপডেট করুন, চ্যানেলটি মূল গুরুত্বের স্তরটি ধরে রাখবে।

এটি গুগল বিজ্ঞপ্তি প্রশিক্ষণ নথি দ্বারা ব্যাক আপ করা হয় যা বলে:

আপনি একটি বিজ্ঞপ্তি চ্যানেল তৈরি করার পরে, আপনি বিজ্ঞপ্তি আচরণগুলি পরিবর্তন করতে পারবেন না that সেই সময়ে ব্যবহারকারীর সম্পূর্ণ নিয়ন্ত্রণ থাকে।

অ্যাপ্লিকেশন সরানো এবং পুনরায় ইনস্টল করা আপনাকে চ্যানেল আচরণগুলি পুনরায় সেট করতে দেয়।

আপনি যদি চ্যানেলের জন্য বিজ্ঞপ্তিগুলি দমন করতে না চান, তবে নিঃশব্দ বিজ্ঞপ্তিগুলি ব্যবহার না করা অবধি IMPORTANCE_NONE ব্যবহার এড়ানো ভাল Best


1

আপনি এটি কীভাবে করেন তা এখানে

private fun sendNotification() {
    val notificationId = 100
    val chanelid = "chanelid"
    val intent = Intent(this, MainActivity::class.java)
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK)
    val pendingIntent = PendingIntent.getActivity(this, 0, intent, 0)
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { // you must create a notification channel for API 26 and Above
        val name = "my channel"
        val description = "channel description"
        val importance = NotificationManager.IMPORTANCE_DEFAULT
        val channel = NotificationChannel(chanelid, name, importance);
        channel.setDescription(description);
        // Register the channel with the system; you can't change the importance
        // or other notification behaviors after this
        val notificationManager = getSystemService(NotificationManager::class.java)
        notificationManager.createNotificationChannel(channel)
    }

    val mBuilder = NotificationCompat.Builder(this, chanelid)
            .setSmallIcon(R.drawable.ic_notification)
            .setContentTitle("Want to Open My App?")
            .setContentText("Open my app and see good things")
            .setPriority(NotificationCompat.PRIORITY_DEFAULT)
            .setContentIntent(pendingIntent)
            .setAutoCancel(true) // cancel the notification when clicked
            .addAction(R.drawable.ic_check, "YES", pendingIntent) //add a btn to the Notification with a corresponding intent

    val notificationManager = NotificationManagerCompat.from(this);
    notificationManager.notify(notificationId, mBuilder.build());
}

=> Https://developer.android.com/training/notify-user/build-notifications এ সম্পূর্ণ টিউটোরিয়াল পড়ুন


1

CHANNEL_IDমধ্যে NotificationChannel এবং Notification.Builder একই হতে হবে, এই কোড ব্যবহার করে দেখুন:

String CHANNEL_ID = "my_channel_01";
NotificationChannel channel = new NotificationChannel(CHANNEL_ID, "Solveta Unread", NotificationManager.IMPORTANCE_DEFAULT);


Notification.Builder notification = new Notification.Builder(getApplicationContext(), CHANNEL_ID);

1

ওয়েল আমার ক্ষেত্রে, আমি অ্যান্ড্রয়েড আছে 8.1.0 এবং মডেল নম্বর vivo1811 , এবং আমি উপরে সমাধান কিন্তু কিছুই কাজ করে সব চেষ্টা করেছি।

সুতরাং শেষ অবধি, আমি ফায়ারবেস সাপোর্টকে লিখেছি তারপরে আরও ডিবাগিংয়ের সময়, আমি এটি পেয়েছিলাম - "থামানো অ্যাপ্লিকেশনটিতে সম্প্রচারে ব্যর্থ": নিশ্চিত করুন যে অ্যাপটি জোর করে বন্ধ করা হয়নি "

এবং এটি ফায়ারবেস টিমের জবাব ছিল ->

এটি একটি ज्ञিত সমস্যা যা কিছু OEM এর দ্বারা প্রয়োগ করা ব্যাটারি অপ্টিমাইজেশনের কারণে ঘটে। যখন কোনও অ্যাপ্লিকেশনটির স্যুইচারটিতে কোনও অ্যাপ সরিয়ে দেওয়া হয়, তখন অ্যাপ্লিকেশনটিকে এমনভাবে বিবেচনা করা হয় যেন এটি জোর করে থামানো হয়েছিল, এটি ডিফল্ট অ্যান্ড্রয়েড আচরণ নয়। এর দুর্ভাগ্যজনক পার্শ্ব প্রতিক্রিয়া হ'ল এটি আপনার অ্যাপ্লিকেশনটির জন্য এফসিএম পরিষেবাটি চলমান বন্ধ করতে পারে। আমরা এই আচরণটি আমাদের শেষ থেকে উন্নত করতে কাজ করছি, তবে আসল ফিক্সটি OEM দিক থেকে আসতে হবে।

এখানে ওএম এর অর্থ আসল সরঞ্জাম প্রস্তুতকারক


0

উপরের সমাধানগুলি চেষ্টা করার পরে যে কারও সাথে এটির জন্য লড়াই করছেন, নিশ্চিত করুন যে নোটিফিকেশন চ্যানেল তৈরি করার সময় ব্যবহৃত চ্যানেল আইডি আপনি বিজ্ঞপ্তি নির্মাতায় সেট করা চ্যানেল আইডির অনুরূপ

const val CHANNEL_ID = "EXAMPLE_CHANNEL_ID"

// create notification channel
val notificationChannel = NotificationChannel(CHANNEL_ID, 
NOTIFICATION_NAME, NotificationManager.IMPORTANCE_HIGH)

// building notification
NotificationCompat.Builder(context)
                    .setSmallIcon(android.R.drawable.ic_input_add)
                    .setContentTitle("Title")
                    .setContentText("Subtitle")   
                    .setPriority(NotificationCompat.PRIORITY_MAX)
                    .setChannelId(CHANNEL_ID)

0
private void addNotification() {
                NotificationCompat.Builder builder =
                new NotificationCompat.Builder(this)
                .setSmallIcon(R.drawable.ic_launcher_background)
                .setContentTitle("Notifications Example")
                .setContentText("This is a test notification");
                Intent notificationIntent = new Intent(this, MainActivity.class);
                PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent,
                PendingIntent.FLAG_UPDATE_CURRENT);
                builder.setContentIntent(contentIntent);
                // Add as notification
                NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
                if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O)
                {
                NotificationChannel nChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, "NOTIFICATION_CHANNEL_NAME", NotificationManager.IMPORTANCE_HIGH);
                nChannel.enableLights(true);
                assert manager != null;
                builder.setChannelId(NOTIFICATION_CHANNEL_ID);
                manager.createNotificationChannel(nChannel);
                }
                assert manager != null;
                manager.notify(0, builder.build());
    }

0

নিম্নলিখিত পদ্ধতি হবে বিজ্ঞপ্তি দেখান , বড় টেক্সট এবং নিশ্চল সক্রিয় (নোটিফিকেশন ব্যবহারকারী সোয়াইপ পরেও সরানো হবে না) হচ্ছে। আমাদের নোটিফিকেশন ম্যানেজার পরিষেবা দরকার

public static void showNotificationOngoing(Context context,String title) {
        NotificationManager notificationManager =
                (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE);

        PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
                new Intent(context, MainActivity.class), PendingIntent.FLAG_UPDATE_CURRENT);

        Notification.Builder notificationBuilder = new Notification.Builder(context)
                .setContentTitle(title + DateFormat.getDateTimeInstance().format(new Date()) + ":" + accuracy)
                .setContentText(addressFragments.toString())
                .setSmallIcon(R.mipmap.ic_launcher)
                .setContentIntent(contentIntent)
                .setOngoing(true)
                .setStyle(new Notification.BigTextStyle().bigText(addressFragments.toString()))
                .setAutoCancel(true);
        notificationManager.notify(3, notificationBuilder.build());
}

বিজ্ঞপ্তিগুলি সরানোর পদ্ধতি

public static void removeNotification(Context context){
    NotificationManager notificationManager =
            (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE);
    notificationManager.cancelAll();
}

উত্স লিঙ্ক


0
NotificationCompat.Builder(Context context)

অ্যান্ড্রয়েড ওরিওর চেয়ে বড় বা সমান ভার্সনের জন্য ইতিমধ্যে অবচয়। আপনি ব্যবহারের মধ্যে বাস্তবায়ন পরিবর্তন করতে পারেন

NotificationCompat.Builder(Context context, String channelId)

0
fun pushNotification(message: String?, clickAtion: String?) {
        val ii = Intent(clickAtion)
        ii.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
        val pendingIntent = PendingIntent.getActivity(this, REQUEST_CODE, ii, PendingIntent.FLAG_ONE_SHOT)

        val soundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)

        val largIcon = BitmapFactory.decodeResource(applicationContext.resources,
                R.mipmap.ic_launcher)


        val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager

        val channelId = "default_channel_id"
        val channelDescription = "Default Channel"
// Since android Oreo notification channel is needed.
//Check if notification channel exists and if not create one
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
            var notificationChannel = notificationManager.getNotificationChannel(channelId)
            if (notificationChannel != null) {
                val importance = NotificationManager.IMPORTANCE_HIGH //Set the importance level
                notificationChannel = NotificationChannel(channelId, channelDescription, importance)
               // notificationChannel.lightColor = Color.GREEN //Set if it is necesssary
                notificationChannel.enableVibration(true) //Set if it is necesssary
                notificationManager.createNotificationChannel(notificationChannel)


                val noti_builder = NotificationCompat.Builder(this)
                        .setContentTitle("MMH")
                        .setContentText(message)
                        .setSmallIcon(R.drawable.ic_launcher_background)
                        .setChannelId(channelId)
                        .build()
                val random = Random()
                val id = random.nextInt()
                notificationManager.notify(id,noti_builder)

            }

        }
        else
        {
            val notificationBuilder = NotificationCompat.Builder(this)
                    .setSmallIcon(R.mipmap.ic_launcher).setColor(resources.getColor(R.color.colorPrimary))
                    .setVibrate(longArrayOf(200, 200, 0, 0, 0))
                    .setContentTitle(getString(R.string.app_name))

                    .setLargeIcon(largIcon)
                    .setContentText(message)
                    .setAutoCancel(true)
                    .setStyle(NotificationCompat.BigTextStyle().bigText(message))
                    .setSound(soundUri)
                    .setContentIntent(pendingIntent)


            val random = Random()
            val id = random.nextInt()
            notificationManager.notify(id, notificationBuilder.build())

        }



    }

1
যদিও এই কোড স্নিপেট সমস্যার সমাধান করতে পারে, এটি কেন বা কীভাবে প্রশ্নের উত্তর দেয় তা ব্যাখ্যা করে না। আপনার কোডটির জন্য একটি ব্যাখ্যা অন্তর্ভুক্ত করুন , কারণ এটি সত্যিই আপনার পোস্টের মান উন্নত করতে সহায়তা করে। মনে রাখবেন যে আপনি ভবিষ্যতে পাঠকদের জন্য প্রশ্নের উত্তর দিচ্ছেন, এবং সেই লোকেরা আপনার কোড পরামর্শের কারণগুলি জানেন না। আপনি আরও উত্তর এবং খ্যাতি পেতে এই উত্তরটি উন্নত করতে সম্পাদনা বোতামটি ব্যবহার করতে পারেন !
ব্রায়ান টম্পসেট - :

0

নীচের কোডটির টুকরোটি ওরিওতে আমার জন্য কাজ করছে, আপনি এটি চেষ্টা করতে পারেন। আশা করি এটি আপনার জন্য কাজ করবে

প্রাইভেট শূন্য প্রেরণনোটিকেশন (প্রবন্ধ সিটিএক্স, স্ট্রিং শিরোনাম, int বিজ্ঞপ্তি নম্বর, স্ট্রিং বার্তা, স্ট্রিং সাবটেক্সট, ইনটেন্ট ইন্টেন্ট) {
চেষ্টা করুন

            PendingIntent pendingIntent = PendingIntent.getActivity(ctx, notificationNumber, intent,
                    PendingIntent.FLAG_UPDATE_CURRENT);
            Uri url = null;           
            NotificationCompat.Builder notificationBuilder = null;
            try {
                if (Build.VERSION.SDK_INT >= 26) {

                    try{
                        NotificationManager notificationManager = (NotificationManager)getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);
                        notificationManager.deleteNotificationChannel(CHANNEL_ID_1);
                        notificationManager.deleteNotificationChannel(CHANNEL_ID_2);

                        if(!intent.getStringExtra("type").equalsIgnoreCase(""+TYPE_REQUEST)){
                            NotificationChannel breaking = new NotificationChannel(CHANNEL_ID_1, CHANNEL_ID_1_NAME, NotificationManager.IMPORTANCE_HIGH);
                            breaking.setShowBadge(false);
                            breaking.enableLights(true);
                            breaking.enableVibration(true);
                            breaking.setLightColor(Color.WHITE);
                            breaking.setVibrationPattern(new long[]{100, 200, 100, 200, 100, 200, 100});
                            breaking.setSound(url,new AudioAttributes.Builder().build());

                            notificationBuilder = new NotificationCompat.Builder(this,CHANNEL_ID_1)
                                    .setSmallIcon(R.mipmap.ic_launcher);
                            notificationManager.createNotificationChannel(breaking);

                        }else{

                            NotificationChannel politics = new NotificationChannel(CHANNEL_ID_2,CHANNEL_ID_2_NAME, NotificationManager.IMPORTANCE_DEFAULT);
                            politics.setShowBadge(false);
                            politics.enableLights(true);
                            politics.enableVibration(true);
                            politics.setLightColor(Color.BLUE);
                            politics.setVibrationPattern(new long[]{100, 200, 100, 200, 100});
                            politics.setSound(url,new AudioAttributes.Builder().build());

                            notificationBuilder = new NotificationCompat.Builder(this,CHANNEL_ID_2)
                                    .setSmallIcon(R.mipmap.ic_launcher);
                            notificationManager.createNotificationChannel(politics);
                        }
                    }catch (Exception e){
                        e.printStackTrace();
                    }

                } else {
                    notificationBuilder = new NotificationCompat.Builder(ctx)
                            .setSmallIcon(R.mipmap.ic_launcher);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }

            if (notificationBuilder == null) {
                notificationBuilder = new NotificationCompat.Builder(ctx)
                        .setSmallIcon(R.mipmap.ic_launcher);
            }


            notificationBuilder.setContentTitle(title);          
            notificationBuilder.setSubText(subtext);
            notificationBuilder.setAutoCancel(true);

            notificationBuilder.setContentIntent(pendingIntent);
            notificationBuilder.setNumber(notificationNumber);
            NotificationManager notificationManager =
                    (NotificationManager) ctx.getSystemService(Context.NOTIFICATION_SERVICE);

            notificationManager.notify(notificationNumber, notificationBuilder.build());

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

0

অ্যান্ড্রয়েড ওরিওতে, বিজ্ঞপ্তি অ্যাপ্লিকেশনগুলি চ্যানেল এবং বিজ্ঞপ্তিহেল্পার ক্লাস ব্যবহার করে করা হয় t এটির একটি চ্যানেল আইডি এবং চ্যানেলের নাম থাকা উচিত।

প্রথমে আপনাকে একটি নোটিফিকেশন হেল্পার ক্লাস তৈরি করতে হবে

public class NotificationHelper extends ContextWrapper {

private static final String EDMT_CHANNEL_ID="com.example.safna.notifier1.EDMTDEV";
private static final String EDMT_CHANNEL_NAME="EDMTDEV Channel";
private NotificationManager manager;

public  NotificationHelper(Context base)
{
    super(base);
    createChannels();
}
private void createChannels()
{
    NotificationChannel edmtChannel=new NotificationChannel(EDMT_CHANNEL_ID,EDMT_CHANNEL_NAME,NotificationManager.IMPORTANCE_DEFAULT);
    edmtChannel.enableLights(true);
    edmtChannel.enableVibration(true);
    edmtChannel.setLightColor(Color.GREEN);
    edmtChannel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);

    getManager().createNotificationChannel(edmtChannel);

}
public NotificationManager getManager()
{
   if (manager==null)
       manager=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
   return manager;

}
public NotificationCompat.Builder getEDMTChannelNotification(String title,String body)
{
    return new NotificationCompat.Builder(getApplicationContext(),EDMT_CHANNEL_ID)
            .setContentText(body)
            .setContentTitle(title)
            .setSmallIcon(R.mipmap.ic_launcher_round)
            .setAutoCancel(true);
    }
}

ক্রিয়াকলাপের এক্সএমএল ফাইলে একটি বোতাম তৈরি করুন, তারপরে মূল ক্রিয়াকলাপে

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    helper=new NotificationHelper(this);

    btnSend=(Button)findViewById(R.id.btnSend);

    btnSend.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String title="Title";
            String content="Content";
            Notification.Builder builder=helper.getEDMTChannelNotification(title,content);
            helper.getManager().notify(new Random().nextInt(),builder.build());
        }
    });

}

তারপরে আপনার প্রকল্পটি চালান


0

আপনাকে 26 (ওরিও) উপরে স্তরের এপিআই স্তরের জন্য একটি বিজ্ঞপ্তি চ্যানেল তৈরি করতে হবে।

`NotificationChannel channel = new NotificationChannel(STRING_ID,CHANNEL_NAME,NotificationManager.IMPORTANCE_HIGH);

STRING_ID = স্ট্রিং বিজ্ঞপ্তি চ্যানেলআইডিটি বিজ্ঞপ্তি হিসাবে একই B বিল্ডার এটির মতো

`Notification notification = new Notification.Builder(this,STRING_ID)
            .setSmallIcon(android.R.drawable.ic_menu_help)
            .setContentTitle("Hello Notification")
            .setContentText("It is Working")
            .setContentIntent(pendingIntent)
            .build();`

বিজ্ঞপ্তিতে এবং বিজ্ঞপ্তিতে চ্যানেল আইডি একই রকম হতে হবে পুরো কোডটি এই জাতীয় .. ``

@RequiresApi(api = Build.VERSION_CODES.O)
  private void callNotification2() {

    Intent intent = new Intent(getApplicationContext(),MainActivity.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(this,11, 
    intent,PendingIntent.FLAG_UPDATE_CURRENT);
    Notification notification = new Notification.Builder(this,"22")
            .setSmallIcon(android.R.drawable.ic_menu_help)
            .setContentTitle("Hello Notification")
            .setContentText("It is Working")
            .setContentIntent(pendingIntent)
            .build();
    NotificationChannel channel = new 
    NotificationChannel("22","newName",NotificationManager.IMPORTANCE_HIGH);
    NotificationManager manager = (NotificationManager) 
    getSystemService(NOTIFICATION_SERVICE);
    manager.createNotificationChannel(channel);
    manager.notify(11,notification);

    }'

0

প্রথমত, যদি আপনি না জানেন তবে অ্যান্ড্রয়েড ওরিও অর্থাৎ এপিআই স্তর 26 থেকে এটি বাধ্যতামূলক যে বিজ্ঞপ্তিগুলি একটি চ্যানেলের সাথে পুনরায় সংঘবদ্ধ হয়।

সেক্ষেত্রে অনেক টিউটোরিয়াল আপনাকে বিভ্রান্ত করতে পারে কারণ তারা ওরিওর উপরে এবং নীচে বিজ্ঞপ্তির জন্য বিভিন্ন উদাহরণ দেখায়।

সুতরাং এখানে একটি সাধারণ কোড যা উভয় উপরের এবং নীচে ওরেওতে চালিত হয়:

String CHANNEL_ID = "MESSAGE";
String CHANNEL_NAME = "MESSAGE";

NotificationManagerCompat manager = NotificationManagerCompat.from(MainActivity.this);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    NotificationChannel channel = new NotificationChannel(CHANNEL_ID, CHANNEL_NAME,
    NotificationManager.IMPORTANCE_DEFAULT);
    manager.createNotificationChannel(channel);
}

Notification notification = new NotificationCompat.Builder(MainActivity.this,CHANNEL_ID)
        .setSmallIcon(R.drawable.ic_android_black_24dp)
        .setContentTitle(TitleTB.getText().toString())
        .setContentText(MessageTB.getText().toString())
        .build();
manager.notify(getRandomNumber(), notification); // In case you pass a number instead of getRandoNumber() then the new notification will override old one and you wont have more then one notification so to do so u need to pass unique number every time so here is how we can do it by "getRandoNumber()"
private static int getRandomNumber() {
    Date dd= new Date();
    SimpleDateFormat ft =new SimpleDateFormat ("mmssSS");
    String s=ft.format(dd);
    return Integer.parseInt(s);
}

ভিডিও টিউটোরিয়াল: ইউটিউব ভিডিও

আপনি যদি এই ডেমোটি ডাউনলোড করতে চান তবে: গিটহাব লিংক


-1
    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, "CHANNEL_ID")
            ........

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

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        CharSequence name = "Hello";// The user-visible name of the channel.
        int importance = NotificationManager.IMPORTANCE_HIGH;
        NotificationChannel mChannel = new NotificationChannel(CHANNEL_ID, name, importance);
        mNotificationManager.createNotificationChannel(mChannel);
    }
    mNotificationManager.notify(notificationId, notificationBuilder.build());
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.