sunagimoブログ

主にUnityに関する技術を取り上げます

【Unity】Package Managerにモバイル通知の機能が追加されていた件(3)

本記事で扱うUnityのバージョンは「Unity2018.3.7f1」です。


前回
sunagimo-app.hatenablog.com




今回はサンプルを作成したので紹介します。
github.com




【機能一覧】
・通知の作成(AndroidiOS
・通知の削除(AndroidiOS
・通知の有無(AndroidiOS
・繰り返し通知の作成(AndroidiOS
・バックグラウンド通知(Android



Androidのバッググラウンド通知について


まず、モバイル通知ですが、
アプリがバックグラウンドにいる状態で届くのが基本です。

しかし今回使用した、モバイル通知API、および他のAssetにおいても、
iOSではバックグラウンド状態で通知が届くのですが、
Androidにおいてはフォアグラウンド状態でも通知が届いてしまいます。

今回のサンプルは、それを踏まえた上で
バッググラウンド状態のみ通知が届くように実装しております。


【バッググラウンド通知の実装の流れ】

1.作成した通知をリストに追加
2.Prefsにも保存する(電源を落としたあとにも保持するため)
3.アプリをバッググラウンド状態にする
4.リストにある通知を全て送信
5.アプリをフォアグラウンドにする
6.通知を全てキャンセルする



サンプルの紹介

f:id:sunagimo_app:20190305030218p:plain


左から、説明します。

・10秒後に通知(DateTime指定)
・10秒後に通知(TimeSpan指定)
・1分後に繰り返し通知
・スケジュールされている通知を全て削除

の4つのサンプル処理を用意しました。

NotificationController.SendNotification("通知テスト", "10秒後に通知(TimeSpan)", notificationTimeInterval, NotificationController.NotificationType.TYPE_1);
NotificationController.SendNotification("通知テスト", "10秒後に通知(DateTime)", notificationDateTime, NotificationController.NotificationType.TYPE_1);
NotificationController.SendNotification("通知テスト", "1分後に繰り返し通知", notificationDateTime, NotificationController.NotificationType.TYPE_1, true, repeatInterval);
NotificationController.AllCancelNotification();


NotificationControllerクラスから呼べるようにしてあります。
その中でAndroidiOSの処理を分けて呼んでいます。


また、パラメーターに通知タイプ、通知IDを指定するようにしています。
予め識別子を設けておくことで、管理が可能になります。



通知されるとこんな感じで表示されます。
なお、Androidの場合はOSのバージョンによって見た目が異なります。

f:id:sunagimo_app:20190305032944j:plain:w300:h533

f:id:sunagimo_app:20190305032948j:plain:w300:h533




通知アイコンの設定


Android)

f:id:sunagimo_app:20190305031509p:plain

Package ManagerからMobile Notificationsをインストールすると、
Editor/com.unity.mobile.notifications/NotificationSettingsという設定ファイルが作られます。

ここでAndroidの通知アイコンの設定ができます。
smallIconについては白色の透過アイコンでないと、
四角い真っ白になってしまうので注意が必要です。

Previewで正常に表示されていれば問題ないと思います。



ここらへんを参考に。
qiita.com



iOS

Player SettingsのNotification Iconsで設定します。

f:id:sunagimo_app:20190305032239p:plain



まとめ


まず、今まで外部ライブラリなどを用いて使ってきた機能が、
Unity内に含まれたことはとても素晴らしいことでした。


その上で今まで使ってきた、モバイル通知のライブラリと比較しても
代用できる十分な機能を備えていると思います。


ただ一つだけ、
この記事の最初でも書いていますが、
Androidのバックグラウンド通知をデフォルトとして設定できるようにしてほしいです。


いつか、Preview表示が消えることを祈っています。
そしてUnityさんに感謝しています。