Android studio。の通知アイコンの設定に問題があります。
次のように描画可能なフォルダーを設定します。
また、AndroidManifest.xmlファイルにデフォルトアイコンを設定しました。
_<meta-data Android:name="com.google.firebase.messaging.default_notification_icon" Android:resource="@drawable/notification_icon" />
_
そして、ここでアイコンフィールドを_notification_icon
_に設定しています: https://developers.google.com/cloud-messaging/http-server-ref#downstream-http-messages-json (ps私はそれがGCMであることを知っていますが、それは動作します。アイコン以外のすべての通知を受信しています)
私は何が欠けていますか?私が見るのは灰色の円の中の白い正方形だけです。
これは私のバックエンドコードです:Pushex.Push(%{title: user.name, body: "message goes here", badge: 1, sound: "default", icon: "notification_icon"}, to: user.fcm_token, using: :gcm)
( https://github.com/tuvistavie/pushex )
このコードを確認してください。それはあなたを助けるかもしれません。
public class MyFirebaseMessagingService extends FirebaseMessagingService {
private static final String TAG = "FCM Service";
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
Intent intent = new Intent(getApplicationContext(), YourClass.class);
PendingIntent contentIntent = PendingIntent.getActivity(getApplicationContext(), NotificationID.getID(), intent,
PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(getApplicationContext())
.setSmallIcon(getNotificationIcon())
.setContentTitle(remoteMessage.getData().get("title"))
.setContentText(remoteMessage.getData().get("body"))
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setStyle(new NotificationCompat.BigTextStyle().bigText(remoteMessage.getData().get("body")))
.setContentIntent(contentIntent);
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(NotificationID.getID(), notificationBuilder.build());
}
private int getNotificationIcon() {
boolean useWhiteIcon = (Android.os.Build.VERSION.SDK_INT >= Android.os.Build.VERSION_CODES.Lollipop);
//If the build version is higher than KitKat we need to create Silhouette icon.
return useWhiteIcon ? R.mipmap.ic_notification : R.mipmap.ic_launcher;
}
public static class NotificationID {
private static final AtomicInteger c = new AtomicInteger(0);
public static int getID() {
return c.incrementAndGet();
}
}
}
ビルドバージョンがキットカットよりも高い場合、Silhouetteアイコンを作成する必要があります。そのオンラインツールについては、参照してください: https://romannurik.github.io/AndroidAssetStudio/icons-notification.html
ただし、SDK 9.8.0では、デフォルトをオーバーライドできます! AndroidManifest.xmlで次のフィールドを設定して、アイコンと色をカスタマイズできます。
<meta-data
Android:name="com.google.firebase.messaging.default_notification_icon"
Android:resource="@drawable/notification_icon" />
<meta-data Android:name="com.google.firebase.messaging.default_notification_color"
Android:resource="@color/google_blue" />
そして
<manifest>
<application
Android:icon="@drawable/icon"
Android:label="@string/app_name">
<!-- Add your meta-data here-->
<activity
Android:name=".MainActivity"
Android:label="@string/app_name">
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
それを修正した...これはとても愚かです。この答えに触発されました: https://stackoverflow.com/a/28387744/1555312
通知アイコンをアプリアイコンにしました:
<meta-data
Android:name="com.google.firebase.messaging.default_notification_icon"
Android:resource="@mipmap/ic_launcher" />
そして、Android/app/build.gradle
...
defaultConfig {
targetSdkVersion 20 // this has to be < 21
...
}
誰かの命を何時間も節約したい
私は FCMプラグイン を使用していますが、これが私にとって有効なものです(2019年9月):1. Inconfig.xml(yourapp/config.xml)末尾のタグに次を追加しますxmlns:Android="http://schemas.Android.com/apk/res/Android"
次のようになります。
<widget id="com.mydomain.app" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.Apache.org/ns/1.0" xmlns:Android="http://schemas.Android.com/apk/res/Android">
または、上記の行をコピーし、ウィジェットIDの値を独自の値に置き換えます。
<config-file parent="/manifest/application/" target="app/src/main/AndroidManifest.xml">
<meta-data Android:name="com.google.firebase.messaging.default_notification_icon" Android:resource="@drawable/fcm_Push_icon" />
</config-file>
白のバージョン(単色)のロゴを透明な背景にアップロードします。色付きのバージョンをアップロードすると、暗い灰色のアイコンが表示され、見た目が悪くなります。ロゴの白色バージョンがない場合は、設計してください。残りの設定はそのままにします。 [名前]テキストボックスの値として、fcm_Push_iconを入力します。次に、青色の丸いボタンをクリックしてZipファイルをダウンロードします。
上記の手順でダウンロードしたZipファイルを解凍し、その内容をフォルダーに抽出します。 resフォルダーが含まれていることがわかります。このフォルダーを開くと、次の名前の他のフォルダーが含まれます。
これらの各フォルダーには、「fcm_Push_icon.png」という名前のPNGアイコンが含まれます。これらの異なるフォルダのアイコンの唯一の違いは、サイズです。
yourApp/platforms/Android/app/src/main/res
上記のポイント4にリストされている5つのフォルダーすべてを、すぐ上に示されている場所にコピーします。つまり、resフォルダーに、つまりyourApp/platforms/Android/app/src/main/res
それでおしまい!次に、アプリをビルドします。通知を受け取るたびに、通知にアプリアイコンが表示されます(少なくともAndroidの場合)。
Android通知に色付きのアイコンを表示する方法を見つけた人は、ソリューションを共有してください。