1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Unity Firebase Messaging の Android プッシュ通知のSmall Iconを変更する

Posted at

Small Iconとは、通知が届いたときステータスバーに表示される単色のアイコンのこと。

image.png

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を変えたい場合は以下の手順が必要です。

  1. 画像を用意
  2. Unityプロジェクトにいれる
  3. AndroidManifestで画像を指定

画像を用意

Android Studioを持っているので、適当なAndroidプロジェクトを作って Image Asset Studio で作りました。

nameは ic_stat にしておきます。
そうすると、 app/src/main/res の中に

  • drawable-mdpi
  • drawable-hdpi
  • drawable-xdpi
  • drawable-xxdpi
  • drawable-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によって生成されたものです)

これで完了です。


この記事が役に立ちましたら「いいね」をよろしくお願いします。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?