【Unity】MobileNotificationについてメモ(Android)

概要

MobileNotificationはローカル通知を出すためのパッケージです。

パッケージの導入で躓いたところをメモとして残します。

※ この記事ではAndroidでの実行をメインとしています。

実証環境

  • OS:Windows
  • Unityバージョン:2021.2.8f1
  • Androidバージョン : 11
  • MobileNotification 1.4.3

メモ

OnNotificationReceivedのタイミング

Subscribe to this event to receive callbacks whenever a scheduled notification is shown to the user.

スケジュールされた通知がユーザーに表示されるたびにコールバックを受信するには、このイベントをサブスクライブします。

https://docs.unity3d.com/Packages/com.unity.mobile.notifications@1.4/api/Unity.Notifications.Android.AndroidNotificationCenter.html

「AndroidNotificationCenter.OnNotificationReceived」はローカル通知を受け取ったときにコールバックされます。

バックグラウンド中に受け取った場合はフォアグラウンドにした時にコールバックを受け取れますが、アプリ終了中に受け取った通知は次回アプリ起動時には検知できません。

また、通知を受け取ったことを検知するので「通知を開いた」タイミングの検知は対象外になります。

通知にパラメータを設定する

Use this to save arbitrary string data related to the notification.

これを使用して、通知に関連する任意の文字列データを保存します。

https://docs.unity3d.com/Packages/com.unity.mobile.notifications@1.4/api/Unity.Notifications.Android.AndroidNotification.html?q=IntentData

通知に任意のパラメータを設定したい場合は「IntentData」に設定できます。

「AndroidNotificationCenter.OnNotificationReceived」や「AndroidNotificationCenter.GetLastNotificationIntent()」で取得した通知情報から抜き出して使えます。

通知をタップしても消えない

Gets or sets if this notification will be dismissed automatically when the user taps it. Only available on Android.

ユーザーが通知をタップしたときにこの通知が自動的に閉じられるかどうかを取得または設定します。Androidでのみ利用可能です。

https://docs.unity3d.com/Packages/com.unity.mobile.notifications@1.4/api/NotificationSamples.IGameNotification.html?q=ShouldAutoCancel

通知をタップしても消えない場合は「AndroidNotification.ShouldAutoCancel」がfalseになっている可能性があります。

「ShouldAutoCancel」がfalseの場合は、通知をタップしてもステータスバーに残ったままになります。

導入解説の記事などでは「Title」「Text」「FireTime」のみ記載されているのが多いようなので、「ShouldAutoCancel」を追記してtrueにしておきましょう。

通知アイコンが単色の塗りつぶしになる

Androidの仕様で端末やバージョンに依存するもので、透過のないアイコンを指定している場合などに起こります。

「SmallIcon」と呼ばれるもので、1色+透過の画像を指定する必要があります。

色の指定がない場合は見やすいように自動で色が設定されるので、色の指定はスクリプトから行う必要があります。

通知を開いてもGetLastNotificationIntent()がnull

パッケージバージョンや端末依存によるかもしれませんが、「FireTime」の指定が1秒のように短い通知を開くとGetLastNotificationIntent()が反応しないことがあるようです。

私の環境では現在時刻から2秒以上を指定することで反応しました。

バッジが表示されない

AndroidNotificationChannelのCanShowBadgeをtrueにしておく必要があります。

また、アプリ情報でバッジ表示が無効になっている場合は有効にする必要があります。

バッジ数について

バッジ数が表示できるかは端末依存になり、一部の端末は数字が表示されずに〇のみ表示されます。

ステータスバーに残っている通知に設定されているNumber(0の場合は1として換算)の合計が数字で表示されます。

ステータスバーからバッジ関連の通知がすべて消えるとバッジも消えます。

   

コメントを残す


CAPTCHA