AppSeedのアプリ開発ブログ

アプリ開発会社AppSeed(アップシード)開発担当のブログです。iOS、Android、Unity、Cocos2d-xなどアプリ開発関連のTipsや備忘録、アプリ開発に役立つ情報を発信します。

【Unity】Androidのプッシュ通知でアイコンが白くなる問題の対処法

最近、Unityで作ったゲームアプリ「ネコベンチャー」にFirebaseのプッシュ通知(FCM)を導入しました。

 

 

play.google.com

 

実装自体は特に問題なかったのですが、Android端末にFirebaseコンソールから通知した際、アイコンが白くなる問題が発生しました。

 

f:id:no-work-no-life-4081:20180915100617j:plain

 

Androidアプリを開発した時にも同じ現象が発生したことがあるんですが、ど忘れしているっていうことと、今回はUnityで実装しているので、改めて調べることにしました。

 

今回はこの対処法について。

 

 

Androidで通知アイコンが白くなる原因

 

https://camo.qiitausercontent.com/37b062e2e296e0a0a0f3918bacae6cde5b74edaf/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f31353636332f38383833636263622d303936302d336334382d363662382d3831656164643735663164612e706e67

 

まず、Androidで通知アイコンが白くなる原因ですが、調べた限りだと、Android OSバージョン 5以上から通知の表現方法が変更になり、アイコンの背景が不透明な四角い画像だと白くなってしまうようです。(ちなみにAndroid OSバージョン 4以下では今まで通りアプリアイコンが表示されます。)

 

なので、対処法としてはAndroid OSバージョン 5以上用に、背景透過の通知アイコンを用意してあげる必要があるようです。

(上の画像のドロイド君の顔のような画像が必要)

 

参考:

Android 5.0 Lolipop以上で通知アイコンが白くなってしまう問題を解決する

Set Up a Firebase Cloud Messaging Client App on Android  |  Firebase

Unity (Android/iOS) + Firebaseでお手軽にPush Notificationを送信する

 

Androidで通知アイコンが白くなる件の対処法(Unity)

 

1. Assets>Plugins>Android>res>drawableに通知用アイコンを配置する

 

f:id:no-work-no-life-4081:20180915102122p:plain

 

まず、Unityプロジェクトの「Assets>Plugins>Android>res>drawable」に通知用アイコンを設置します。もしdrawableフォルダがない場合は作成します。

 

もしアイコンのカラーも変更したい場合は、「Assets>Plugins>Android>res>values」にcolor.xmlを配置します。

 

f:id:no-work-no-life-4081:20180915102318p:plain

 

xmlの中身はこんな感じ↓

 

f:id:no-work-no-life-4081:20180915102336p:plain

 

 

2. Assets>Plugins>AndroidのAndroidManifestを編集する

 

次にAndroidManifestをこんな感じに編集します。

 

f:id:no-work-no-life-4081:20180915102542p:plain

 

「com.google.firebase.messaging.default_notification_icon」に通知アイコン画像、

「com.google.firebase.messaging.default_notification_color」に通知アイコンのカラーを指定すればOKです。

 

最後にビルドしてアプリ起動・終了して、Firebaseからプッシュ通知を送って確認します。

 

うまくうけば通知用に設置したアイコンが表示されるようになるはずです。

 

 

関連:

【iOS】プッシュ通知(Firebase Cloud Messaging)で「エンタイトルメント文字列が見つかりません」のエラーの対処法 - テクノモンキーのアプリ開発日記