-4

Je vais essayer d'envoyer des messages de données à mon application comme ce format.comment afficher la notification contextuelle lorsque l'écran de l'appareil Android désactivé

{ 
     "to": "token", 
     "data": { 
      "title":"Title...", 
      "body":"Body...", 
      "text":"text" 
     } 
    } 

Ensuite, après ce JSON, je reçois dans mon appareil avec la méthode ci-dessous.

@Override 
    public void onMessageReceived(RemoteMessage message) { 
     Map<String, String> map = message.getData(); 
     JSONObject obj = new JSONObject(); 
     for (Object o : map.keySet()) { 
      String key = o.toString(); 
      String value = map.get(key); 
      obj.put(key, value); 
     } 

     Intent resultIntent = new Intent(); 
     showNotificationMessage(getApplicationContext(), "Test ...", obj.toString(), resultIntent); 

    } 

    public void showNotificationMessage(String title, 
            String message, 
            Intent intent) { 
    // Check for empty push message 
    if (TextUtils.isEmpty(message) && TextUtils.isEmpty(title)) { 
     return; 
    } 

    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); 
    PendingIntent resultPendingIntent = 
      PendingIntent.getActivity(mContext, 0, intent, 0); 


    notificationSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 

    showSmallNotification(title, message, resultPendingIntent, notificationSoundUri); 
    playNotificationSound(); 
} 

private void showSmallNotification(String title, 
            String message, 
            PendingIntent resultPendingIntent, 
            Uri alarmSound) { 

    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(mContext); 

    NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle(); 
    inboxStyle.addLine(message); 

    Notification notification; 

    notification = mBuilder.setSmallIcon(R.mipmap.ic_launcher) 
      .setTicker(title) 
      .setShowWhen(true) 
      .setAutoCancel(true) 
      .setContentTitle(title) 
      .setContentIntent(resultPendingIntent) 
      .setSound(alarmSound) 
      .setStyle(inboxStyle) 
      .setWhen(System.currentTimeMillis()) 
      .setSmallIcon(R.mipmap.ic_launcher) 
      .setLargeIcon(BitmapFactory.decodeResource(mContext.getResources(), R.mipmap.ic_launcher)) 
      .setContentText(message) 
      .build(); 

    NotificationManager notificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE); 
    notificationManager.notify(new Random().nextInt(10000), notification); 
} 

Cette fois en utilisant ce titre et le corps que je veux montrer former pop-up de notification mon appareil et l'écran de mon appareil hors tension alors comment je peux notification dans mon appareil apparaitre.

Répondre

1
/Just implement one line/ 

.setDefaults(Notification.DEFAULT_VIBRATE | Notification.DEFAULT_LIGHTS | Notification.DEFAULT_SOUND) 

/******************************/ 

    notification = mBuilder.setSmallIcon(R.mipmap.ic_launcher) 
     .setTicker(title) 
     .setShowWhen(true) 
     .setAutoCancel(true) 
     .setContentTitle(title) 
     .setContentIntent(resultPendingIntent) 
     .setSound(alarmSound) 
     .setStyle(inboxStyle) 
     .setWhen(System.currentTimeMillis()) 
     .setSmallIcon(R.mipmap.ic_launcher) 
     .setDefaults(Notification.DEFAULT_VIBRATE | Notification.DEFAULT_LIGHTS | Notification.DEFAULT_SOUND).setLargeIcon(BitmapFactory.decodeResource(mContext.getResources(), R.mipmap.ic_launcher)) 
     .setContentText(message) 
     .build(); 


/**Implement below Method***/ 

/**And call for "wakeUpLock" Method inside onMessageReceived()**/ 

private void wakeUpLock() 
{ 


    PowerManager pm = (PowerManager)MyGcmListenerService.this.getSystemService(Context.POWER_SERVICE); 

    boolean isScreenOn = pm.isScreenOn(); 

    Log.i(TAG, "screen on: "+ isScreenOn); 

    if(isScreenOn==false) 
    { 
     Log.i(TAG, "screen on if: "+ isScreenOn); 

     PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK |PowerManager.ACQUIRE_CAUSES_WAKEUP |PowerManager.ON_AFTER_RELEASE,"MyLock"); 

     wl.acquire(10000); 

     PowerManager.WakeLock wl_cpu = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,"MyCpuLock"); 

     wl_cpu.acquire(10000); 
    } 


} 
+0

ceci est valide ans mais travaillant dessous marshmallow vous avez n'importe quelle suggestion pour ci-dessus guimauve –