Small Iconとは、通知が届いたときステータスバーに表示される単色のアイコンのこと。
see: https://developer.android.com/develop/ui/views/notifications
Androidのプッシュ通知はsmall iconは必須
Androidでプッシュ通知を表示するとき、small iconは必須です。
通知を表示するネイティブコードでは、以下のように通知ごとに small icon を設定します。
val notification = NotificationCompat.Builder(this, channelId)
.setSmallIcon(R.drawable.ic_chat) // small icon は必須!
.setContentTitle("新しいメッセージ")
.setContentText("こんにちは!")
.setPriority(NotificationCompat.PRIORITY_HIGH)
.build()
この設定がないと、通知は表示されません!!!小さいからといって侮ってはいけない!!!!!
Firebaseの場合
Firebase Messaging SDKを使うと、上記のネイティブコードを自分で書かずに、SDK側でやってもらうことができます。便利ですね。
その場合、small iconはアプリアイコンのforegroundを使用するようです。
Small Iconを変えたい
そのアイコンが気に食わないからこの記事にたどり着いたのだと思います。
Small Iconを変えたい場合は以下の手順が必要です。
- 画像を用意
- Unityプロジェクトにいれる
- AndroidManifestで画像を指定
画像を用意
Android Studioを持っているので、適当なAndroidプロジェクトを作って Image Asset Studio で作りました。
nameは ic_stat にしておきます。
そうすると、 app/src/main/res の中に
drawable-mdpidrawable-hdpidrawable-xdpidrawable-xxdpidrawable-xxxdpi
という5つのディレクトリが生成されて、それぞれのなかに ic_stat.png が格納されます。(画面の解像度別になってます。その端末の解像度のファイルだけがユーザーに配信されるので安心してください)
Unityプロジェクトにいれる
UnityにはAndroidライブラリをいれる複数の方法がありますが、ここでは一番簡単な .androidlib を使った方法を紹介します。
まず、Assetsの中に(直下でなくてもいい)
Plugins/Android/MyApp.androidlib (MyAppの部分は自由)
というディレクトリを作ります。
そしてそのなかにAndroidManifest.xmlというファイルを作り、
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.myapp.library">
<application />
</manifest>
と書いておきます。
次に project.properties というファイルを作り、
target=android-9
android.library=true
と書きます。
これでこの.androidlibディレクトリはAndroid Libraryとして振る舞うようになりました。
ここに作成した画像リソースを追加しましょう。
res という名前のディレクトリをつくり、このなかに5つのディレクトリをコピーします。
最終的なディレクトリの中身は以下のようになります。
MyApp.androidlib
- AndroidManifest.xml
- project.properties
- res
- drawable-mdpi
- ic_stat.png
- drawable-hdpi
- ic_stat.png
- (他の解像度も同様)
AndroidManifestで画像を指定
以上で作成されるAndroid Appにはic_stat.pngを含めることができました。
最後のステップとして Assets/Plugins/Android/AndroidManifest.xml に1文を追加します。
<manifest>
<application>
<!- ...他の記述... -->
<meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/ic_stat" />
<!- ...他の記述... -->
</application>
</manifest>
(ちなみにこの AndroidManifest.xml はFirebase Messaging SDKによって生成されたものです)
これで完了です。
この記事が役に立ちましたら「いいね」をよろしくお願いします。
