こんにちは私はFirebaseを使用してAndroidでプッシュ通知を実装しています。現在、1つの円の中に小さなアイコンが表示されています。大きなサイズで表示する必要があります。画像をご覧ください。これが私のコード、
Android:id="@+id/relativeNotification"
Android:layout_width="192dp"
Android:layout_height="192dp"
Android:layout_alignParentEnd="true"
Android:layout_alignParentRight="true">
<com.inspius.coreapp.widget.TintableImageView
Android:layout_width="192dp"
Android:layout_height="192dp"
Android:layout_centerHorizontal="true"
Android:layout_centerVertical="true"
Android:layout_gravity="center_vertical"
Android:contentDescription="@string/app_name"
Android:src="@drawable/ic_launcher"
app:tint="@color/custom_icon_video_detail_selector" />
この小さなアイコンから大きなアイコンを設定するにはどうすればよいですか?
デフォルト設定を上書きすることで実現できると思います。
アプリケーションマニフェスト:
<meta-data
Android:name="com.google.firebase.messaging.default_notification_icon"
Android:resource="@drawable/notification_icon" />
@drawable/notification_icon
の代わりにアイコンを使用してください。
それが役立つことを願っています
更新:また、見てください:
https://github.com/firebase/quickstart-Android/issues/4#issuecomment-221344318
アイコンパラメータを使用して、アプリ内でドローアブルを指定できます。 R.drawable.fooを使用する場合は、fooを渡すだけです。
icon
パラメータのドキュメントは次のとおりです。
https://firebase.google.com/docs/cloud-messaging/http-server-ref#notification-payload-support
私も同じことをしようとしました。 「handleIntent」メソッドをオーバーライドすることでうまくいきました。 super.handleIntent(intent)を削除すると、これが機能したと思います。次に、独自の通知を作成して大きなアイコンを設定できます。フォアグラウンドとバックグラウンドの両方のケースでこのメソッドが呼び出されます。このようなもの:
public class YourMessagingService extends FirebaseMessagingService {
@Override
public void handleIntent(Intent intent) {
// super.handleIntent(intent);
// get intent codes....
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
Notification notification = builder
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.yourLargeIcon))
.setSmallIcon(R.drawable.yourSmallIcon)
.setContentTitle("yourTitle")
.setContentText("yourText")
.build();
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notificationManager.notify(111, notification);
}
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
}
@Override
public void onDeletedMessages() {
super.onDeletedMessages();
}
}
アプリがフォアグラウンドにある場合にのみ、Firebase通知をカスタマイズできますを参照してください。
通知はFirebaseMessagingServiceサービスのonMessageReceivedメソッドでキャッチされます
アプリがフォアグラウンドにあるときに通知をカスタマイズします。
アプリの描画可能フォルダーからアイコンを配置
Bitmap largeIcon = BitmapFactory.decodeResource(getResources(), R.drawable.icons);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
.setLargeIcon(largeIcon)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle(remoteMessage.getNotification().getTitle())
.setContentText(remoteMessage.getNotification().getBody());
NotificationManager manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
manager.notify(0, builder.build());
API「icon」タグからアイコンを配置
String name = remoteMessage.getNotification().getIcon();
URL url_value = new URL(name);
Bitmap mIcon1 = BitmapFactory.decodeStream(url_value.openConnection().getInputStream());
NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
.setLargeIcon(mIcon1)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle(remoteMessage.getNotification().getTitle()) .setContentText(remoteMessage.getNotification().getBody());
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
manager.notify(0, builder.build());