Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Android

ऐप बंद होने पर एंड्रॉइड नोटिफिकेशन कैसे भेजें?

ऐप क्लोज होने के बाद भी नोटिफिकेशन भेजना

जब यूजर ऐप को स्वाइप करके बंद कर देता है, तब भी नोटिफिकेशन भेजने के लिए Foreground Service या WorkManager का उपयोग करना पड़ता है। यह उदाहरण Service + Timer दिखाता है (पुराना तरीका, लेकिन समझने में आसान)।

चरण 1: नया प्रोजेक्ट

Android Studio में नया प्रोजेक्ट बनाएं।

चरण 2: लेआउट — ऐप बंद करने का बटन

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="16dp"
    tools:context=".MainActivity">

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:onClick="closeApp"
        android:text="Close App for Notification" />
</RelativeLayout>

चरण 3: MainActivity — onStop में सर्विस शुरू करें

package app.tutorialspoint.com.notifyme;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    protected void onStop() {
        super.onStop();
        // ऐप बैकग्राउंड/क्लोज होने पर सर्विस शुरू करें
        startService(new Intent(this, NotificationService.class));
    }

    public void closeApp(View view) {
        finish();
    }
}

चरण 4: NotificationService — हर 5 सेकंड में नोटिफिकेशन

package app.tutorialspoint.com.notifyme;

import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.Service;
import android.content.Intent;
import android.os.Handler;
import android.os.IBinder;
import android.support.v4.app.NotificationCompat;
import android.util.Log;
import java.util.Timer;
import java.util.TimerTask;

public class NotificationService extends Service {
    public static final String NOTIFICATION_CHANNEL_ID = "10001";
    private final static String default_notification_channel_id = "default";

    Timer timer;
    TimerTask timerTask;
    String TAG = "Timers";
    int Your_X_SECS = 5;

    @Override
    public IBinder onBind(Intent arg0) { return null; }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.e(TAG, "onStartCommand");
        super.onStartCommand(intent, flags, startId);
        startTimer();
        return START_STICKY;
    }

    @Override
    public void onCreate() { Log.e(TAG, "onCreate"); }

    @Override
    public void onDestroy() {
        Log.e(TAG, "onDestroy");
        stopTimerTask();
        super.onDestroy();
    }

    final Handler handler = new Handler();

    public void startTimer() {
        timer = new Timer();
        initializeTimerTask();
        timer.schedule(timerTask, 5000, Your_X_SECS * 1000);
    }

    public void stopTimerTask() {
        if (timer != null) { timer.cancel(); timer = null; }
    }

    public void initializeTimerTask() {
        timerTask = new TimerTask() {
            public void run() {
                handler.post(new Runnable() {
                    public void run() { createNotification(); }
                });
            }
        };
    }

    private void createNotification() {
        NotificationManager mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(getApplicationContext(), default_notification_channel_id);

        mBuilder.setContentTitle("My Notification");
        mBuilder.setContentText("Notification Listener Service Example");
        mBuilder.setTicker("Notification Listener Service Example");
        mBuilder.setSmallIcon(R.drawable.ic_launcher_foreground);
        mBuilder.setAutoCancel(true);

        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);
            mBuilder.setChannelId(NOTIFICATION_CHANNEL_ID);
            assert mNotificationManager != null;
            mNotificationManager.createNotificationChannel(notificationChannel);
        }

        assert mNotificationManager != null;
        mNotificationManager.notify((int) System.currentTimeMillis(), mBuilder.build());
    }
}

चरण 5: मैनिफेस्ट में सर्विस जोड़ें

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="app.tutorialspoint.com.notifyme">

    <uses-permission android:name="android.permission.VIBRATE" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <service
            android:name=".NotificationService"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="app.tutorialspoint.com.notifyme.NotificationService" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </service>
    </application>
</manifest>

⚠️ आधुनिक विकल्प (बेहतर)

एंड्रॉइड 8+ में बैकग्राउंड सर्विस सीमित हैं। प्रोडक्शन ऐप्स के लिए:

  • WorkManager — डिफर्ड, गारंटीड बैकग्राउंड वर्क
  • Firebase Cloud Messaging (FCM) — सर्वर से पुश नोटिफिकेशन
  • AlarmManager + BroadcastReceiver — सटीक समय पर वेकअप
  • Foreground Service — नोटिफिकेशन के साथ दिखने वाली सर्विस (मीडिया प्लेयर, ट्रैकिंग के लिए)

यह उदाहरण सीखने के लिए ठीक है, लेकिन वास्तविक ऐप में WorkManager/FCM उपयोग करें।

  1. Android TV के लिए Android 11 के 10 सर्वश्रेष्ठ फीचर्स Android TV के लिए Android 11 के 10 सर्वश्रेष्ठ फीचर्स

    Google द्वारा स्मार्टफोन्स के लिए Android 11 के रिलीज की घोषणा के तुरंत बाद, इसने Android TV के लिए भी नवीनतम OS अपडेट पेश किया। Android TV पर, Android 11 सुरक्षा संवर्द्धन, वन-टाइम परमिशन, एन्हांस्ड मेमोरी मैनेजमेंट, और अन्य नई सुविधाओं के साथ आता है जो कोर Android अपडेट के साथ संरेखित होती हैं। कं

  1. एंड्रॉइड स्टूडियो के लिए शुरुआती गाइड एंड्रॉइड स्टूडियो के लिए शुरुआती गाइड

    एंड्रॉइड स्टूडियो एंड्रॉइड का आधिकारिक इंटीग्रेटेड डेवलपमेंट एनवायरनमेंट (IDE) है जो एंड्रॉइड ऐप्स विकसित करने के लिए है। यह इंटेलीजे पर बनाया गया है, वही कोड एडिटर जिसका उपयोग PyCharm में किया जाता है, जो पायथन डेवलपर्स के बीच लोकप्रिय है। यदि आप एंड्रॉइड स्टूडियो में नए हैं, तो IDE से परिचित होने

  1. व्हाट्सएप: एंड्रॉइड के लिए अग्रणी सेल्फ-नोट ऐप व्हाट्सएप: एंड्रॉइड के लिए अग्रणी सेल्फ-नोट ऐप

    व्हाट्सएप इंस्टेंट मैसेजिंग ऐप हाल ही में खबरों में रहा है क्योंकि कंपनी बार-बार नई सुविधाएं पेश कर रही है। व्यूवन्स फीचर जहां प्राप्तकर्ता द्वारा एक बार देखने के बाद छवियां ऑटो-डिलीट हो जाती हैं या उसी व्हाट्सएप से साइन इन किए जा सकने वाले उपकरणों की संख्या को 4 तक बढ़ाना कुछ विशेषताएं हैं। लेकिन आ