2

我有麻煩發送通知到設備SDK> = 21 通知圖標是空的。推送通知圖標變成白色Android中棒棒糖和上述

我試過到目前爲止:

  1. 改變Android的目標SDK到20

  2. 我檢查如果棒棒糖設備語句:

    if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP); 
    
  3. 我已經把我的繪製圖標以72 * 72和可拉伸和可拉伸-V21夾

  4. 放置在可繪製兩次3210

我嘗試了所有上述和所述通知是表示作爲空白。

我嘗試更多搜索我得到了增加一個剪影圖標的應用程序,如果設備運行的是Android Lollipop的設備使用。

有什麼建議嗎?這是我的FirebaseMessagingService類:

public class myFirebaseMessagingService extends FirebaseMessagingService { 

private static final String TAG = "FirebaseMessageService"; 
Bitmap bitmap; 

/** 
* Called when message is received. 
* 
* @param remoteMessage Object representing the message received from Firebase Cloud Messaging. 
*/ 
@Override 
public void onMessageReceived(RemoteMessage remoteMessage) { 
    // There are two types of messages data messages and notification messages. Data messages are handled 
    // here in onMessageReceived whether the app is in the foreground or background. Data messages are the type 
    // traditionally used with GCM. Notification messages are only received here in onMessageReceived when the app 
    // is in the foreground. When the app is in the background an automatically generated notification is displayed. 
    // When the user taps on the notification they are returned to the app. Messages containing both notification 
    // and data payloads are treated as notification messages. The Firebase console always sends notification 
    // messages. For more see: https://firebase.google.com/docs/cloud-messaging/concept-options 
    // 
    Log.d(TAG, "From: " + remoteMessage.getFrom()); 

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

    // Check if message contains a notification payload. 
    if (remoteMessage.getNotification() != null) { 
     Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody()); 
     sendNotification(remoteMessage.getNotification().getBody()); 
    } 

    //The message which i send will have keys named [message, image, AnotherActivity] and corresponding values. 
    //You can change as per the requirement. 
    //message will contain the Push Message 
    String message = remoteMessage.getData().get("message"); 
    //imageUri will contain URL of the image to be displayed with Notification 
    String imageUri = remoteMessage.getData().get("image"); 
    //If the key AnotherActivity has value as True then when the user taps on notification, in the app AnotherActivity will be opened. 
    //If the key AnotherActivity has value as False then when the user taps on notification, in the app MainActivity will be opened. 
    String TrueOrFlase = remoteMessage.getData().get("AnotherActivity"); 

    //To get a Bitmap image from the URL received 
    bitmap = getBitmapfromUrl(imageUri); 

    sendNotification(message, bitmap, TrueOrFlase); 

} 


/** 
* Create and show a simple notification containing the received FCM message. 
*/ 

private void sendNotification(String messageBody, Bitmap image, String TrueOrFalse) { 
    Intent intent = new Intent(this, SplashScreen.class); 
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    intent.putExtra("AnotherActivity", TrueOrFalse); 
    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) 

      .setLargeIcon(image)/*Notification icon image*/ 
       .setSmallIcon(R.drawable.ahed_icon) 
       .setContentTitle(messageBody) 
       .setStyle(new NotificationCompat.BigPictureStyle() 
         .bigPicture(image))/*Notification with Image*/ 
       .setAutoCancel(true) 
       .setSound(defaultSoundUri) 
       .setContentIntent(pendingIntent); 

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

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

} 

/* 
*To get a Bitmap image from the URL received 
* */ 
public Bitmap getBitmapfromUrl(String imageUrl) { 
    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; 

    } 
} 


private void sendNotification(String messageBody) { 
    Intent intent = new Intent(this, SplashScreen.class); 
    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) 

      .setSmallIcon(R.drawable.ahed_icon) 
      .setContentTitle("FCM Message") 
      .setContentText(messageBody) 
      .setAutoCancel(true) 
      .setSound(defaultSoundUri) 
      .setContentIntent(pendingIntent); 

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

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

這是我繪製我想在通知中顯示:

notification_icon

任何進一步的信息,我願意提供。

+0

我有同樣的問題。當我推送來自Firebase的通知時,在某些設備上它工作了一些它顯示爲空白。如果我找到有用的東西,我會嘗試你已經嘗試過的事情,並保持你的發佈。 – koksalb

+0

@koksalb好試試吧,告訴我 –

回答

1

使用largeIcon的棒棒糖及以上的設備,它會像魅力

NotificationCompat.Builder notificationBuilder = new 
    NotificationCompat.Builder(this) 
    .setSmallIcon(R.drawable.ahed_icon) 
    .setLargeIcon(bitmapImage) 
    .setContentTitle("FCM Message") 
    .setContentText(messageBody) 
    .setAutoCancel(true) 
    .setSound(defaultSoundUri) 
    .setContentIntent(pendingIntent); 
+0

同樣不工作!如果它真的在那裏工作,我們會聯繫我們,以便我們可以將其修復在我身邊 –

+0

可以在設置largeIcon後收到最新的通知代碼嗎? – Techierj

+0

只是我增加它在誰š有三個參數,第一個發送通知的方法.. 我覺得代碼有什麼錯誤可以ü請通過你自己的 –