バージョン unity2018.3.9f1
はじめに
今回はローカルのプッシュ通知を実装してみる記事になります!
プッシュ通知と聞くと、firabaseなどが必要だと思っている人もいるのではないのでしょうか。
私も最近知ったのですが、こういったサーバーを必要とする通知はリモート通知というらしく、サーバーが必要ないローカル通知もあるみたいです。
サーバーが必要ないなら一気にハードルが下がった感じがします。
またそれに加えて、Unity公式でローカル通知のパッケージがPackage Manager
からダウンロードできるみたいです。
実際にそれを使ってみたいと思います!
Mobile Notificationsをダウンロードする
Mobile Notifications
というパッケージを使います。
まずはPackage Manager
を開きましょう。
まだPreview版なので、やや見つけづらいかもしれませんがMobile Notifications
を見つけてインポートします。
通知チャンネルを作る
プッシュ通知をするにあたって通知チャンネルは必須です。
通知チャンネルとは”通知項目を制御できるようにするAndroid 8.0で導入された通知のしくみ”だそうです。
「通知チャンネル」ってなんですか? - いまさら聞けないAndroidのなぜ | マイナビニュース
簡単にいうとAndroidの設定画面から見られる通知の設定のところでしょうか。
こちらの記事も分かりやすく解説されていました。
OreoでNotificationを表示させる方法 - Qiita
これをスクリプトから作成します。
using System; using Unity.Notifications.Android; //ここを忘れずにする using UnityEngine; public class NotificationsManager : MonoBehaviour { private string _channelId = "【ここにチャンネル ID】"; private void Awake() { var channel = new AndroidNotificationChannel { Id = _channelId, Name ="【ここにチャンネル名】", Importance = Importance.High, Description = "【ここに説明文】", }; AndroidNotificationCenter.RegisterNotificationChannel(channel); }
ここでのチャンネル名と説明文はAndroidの設定から見ることができます。ただ逆にチャンネルIDは見られないので、適当な文字列でたぶん大丈夫です。
またImportance
は通知の重要度を表していて、おそらく見た目に関する項目でしょう。None
,Low
,High
,Default
の4種類がありましたが、公式のサンプルではHigh
でしたので今回は同様にしたいと思います。
通知を送る
実際に簡単な通知を送ってみましょう。
using System; using Unity.Notifications.Android; using UnityEngine; public class NotificationsManager : MonoBehaviour { private string _channelId = "【ここにチャンネル ID】"; private void Awake() { var channel = new AndroidNotificationChannel { Id = _channelId, Name = "【ここにチャンネル名】", Importance = Importance.High, Description ="【ここに説明文】", }; AndroidNotificationCenter.RegisterNotificationChannel(channel); } /// <summary> /// 通知を送信する /// </summary> public void SendNotification() { var notification = new AndroidNotification { Title = "【ここにタイトル】", Text = "【ここにテキスト】", SmallIcon = "icon_0", LargeIcon = "icon_1", FireTime = DateTime.Now.AddSeconds(5), }; AndroidNotificationCenter.SendNotification(notification, _channelId); } }
ここでのSmallIcon
とLargeIcon
の文字列はサンプルの通りの名前で大丈夫です。
これはUnityのEditor画面から指定した名前の画像を指定できます。
また、画像を指定しなかった場合はUnityのデフォルトの画像が通知に表示されるようです。
画像を指定する
指定したい画像のRead/Write Enabled
をオンにします。
Project -> Editor -> com.unity.mobile.notifications ->NotificationSettings
をクリックしてインスペクターから設定しましょう。
なぜか私の画面が盛大にバグっていたのですが、一応設定はできました。
再起動したときに削除されないようにする
デフォルトでは、スケジュールされた通知はデバイスの再起動時に削除されるみたいです。
これを回避するためにはEdit->Project Settings->Mobile Notification Settings
からReschedule Notifications on Device Restart
をオンにすればOKです。
さいごに
これでとりあえずの通知をするところまでできました。
是非上手く活用してみてください!