web-dev-qa-db-ja.com

Firebaseアプリの通知で大きなアイコンを設定するにはどうすればよいですか?

こんにちは私は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" />

この小さなアイコンから大きなアイコンを設定するにはどうすればよいですか?

Here is the image

8
Sirilcs

デフォルト設定を上書きすることで実現できると思います。

アプリケーションマニフェスト:

<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

3
ʍѳђઽ૯ท

私も同じことをしようとしました。 「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();
    }
}
2
CCOONOK

アプリがフォアグラウンドにある場合にのみ、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());
2
Gulnaz Ghanchi