0

Ich verwende AWS SNS, um Push-Benachrichtigungen sowohl an SNS-Themen als auch an Geräteendpunkte zu senden. Es wird eine Benachrichtigung angezeigt, wenn die App nicht ausgeführt wird, aber während der Ausführung der App keine Benachrichtigung angezeigt wird.Ich möchte eine Benachrichtigung anzeigen, auch wenn meine Android-App ausgeführt wird

Ich möchte eine Benachrichtigung auch dann anzeigen, wenn die App ausgeführt wird, da die Benachrichtigung den App-Benutzer über Änderungen informiert, die in einem anderen Abschnitt der App geschehen, so dass sie sie überprüfen können, wenn sie fertig sind. So etwas wie die Benachrichtigung über eine neue WhatsApp-Nachricht von einem anderen Gruppenchat, während Sie eine Nachricht an eine andere Person schreiben.

Nachfolgend finden Sie den Code für den Notification Builder. Jeder Hinweis wird wirklich geschätzt. Vielen Dank.

private void displayNotification(final String message) { 

    Intent notificationIntent = new Intent(this, MainActivity.class); 
    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); 

    int requestID = (int) System.currentTimeMillis(); 

    PendingIntent contentIntent = PendingIntent.getActivity(this, requestID, notificationIntent, 
      PendingIntent.FLAG_UPDATE_CURRENT); 

    Bitmap large_icon = BitmapFactory.decodeResource(this.getResources(), 
      R.mipmap.myImage); 

    // Display a notification with an icon, message as content, and default sound. It also 
    // opens the app when the notification is clicked. 

    NotificationCompat.Builder builder = new NotificationCompat.Builder(this) 
      .setLargeIcon(large_icon) 
      .setContentTitle("My Subject Title") 
      .setContentText(message) 
      .setDefaults(Notification.DEFAULT_SOUND) 
      .setAutoCancel(true) 
      .setContentIntent(contentIntent); 

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

    notificationManager.notify(0, builder.build()); 
} 
+0

Hallo, diese Methode aufgerufen, wenn der Benutzer auf die Benachrichtigung aus dem Benachrichtigungscenter in Ihrer App geklickt hat? –

+0

Es wird eine Benachrichtigung mit einem Symbol, einer Nachricht als Inhalt und einem Standardton angezeigt. Es öffnet auch die App, wenn auf die Benachrichtigung geklickt wird. –

+0

Also ich denke, dass, um In-App-Benachrichtigung die beste Nutzung von BroadcastReceiver zu haben, dann können Sie eingehende Benachrichtigungen abonnieren und sie behandeln, während die App ausgeführt wird .. Sie können dieses Handbuch folgen: http: //www.androidbegin. com/tutorial/android-broadcast-empfänger-benachrichtigung-tutorial/ –

Antwort

0

Verwenden Sie diesen unteren Code, um eine Benachrichtigung anzuzeigen.

private static void generateNotification(Context context, final String message) 
{ 
    try { 
     NotificationManager mNotificationManager = (NotificationManager) 
       context.getSystemService(Context.NOTIFICATION_SERVICE); 
     //Define sound URI 
      Uri soundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
      Intent notificationIntent = new Intent(context, DemoActivity.class); 
     notificationIntent.putExtra("message", message); 
     notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); 

     PendingIntent contentIntent = PendingIntent.getActivity(context, RandomNumberGenerator.getRandom(),notificationIntent 
       /*new Intent(context, LuncherActivity.class)*/, 0); 

     NotificationCompat.Builder mBuilder = 
       new NotificationCompat.Builder(context); 
     mBuilder.setSmallIcon(R.drawable.icon_small); 
     mBuilder.setContentTitle("YOUR-APP-NAME"); 
     // mBuilder.setStyle(new NotificationCompat.BigTextStyle() 
     // mBuilder.bigText(msg); 
     mBuilder.setContentText(message); 
     mBuilder.setAutoCancel(true); 
     mBuilder.setContentIntent(contentIntent); 
     mBuilder.setSound(soundUri); 
     mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build()); 
    } catch (Exception e) { 
     // TODO: handle exception 
     e.printStackTrace(); 
    } 
     } 

    } 

Erstellen Sie eine Zufallszahl genetor Klasse wie unten

public class RandomNumberGenerator {

public static int getRandom() 
{ 
    int random_number=0;  
    Random random = new Random(); 
    random_number= random.nextInt(9999 - 1000) + 1000; 
    return random_number; 
    } 

} 

Probieren Sie es aus und lassen Sie mich know.its in meinem Fall arbeiten .

+0

Danke für diesen Vorschlag. Schätze deine Zeit und deine Antwort. –

0

Ich habe das Problem gefunden.

@Override 
public void onMessageReceived(final String from, final Bundle data) { 
    String message = getMessage(data); 
    Log.d(LOG_TAG, "From: " + from); 
    Log.d(LOG_TAG, "Message: " + message); 
    // Display a notification in the notification center if the app is in the background. 
    // Otherwise, send a local broadcast to the app and let the app handle it. 
    displayNotification(message); 

    /* if (isForeground(this)) { 
     // broadcast notification 
     broadcast(from, data); 
    } else { 
     displayNotification(message); 
    } */ 
} 

meine displayNotification() Funktion wurde nicht wegen der „if“ bedingten Anweisung, die zeigt nur Benachrichtigung, wenn die Anwendung nicht im Vordergrund genannt. Wenn nun onMessageReceived() die Nachricht erhält, wird sie direkt an displayNotification() übergeben, selbst wenn meine Anwendung gerade läuft, was ich will.