こんにちは、エンジニアのオオバです。
Unity公式のモバイル端末向けローカルPush通知パッケージMobile Notificationsというものを試しました。
検証してみたところ、Android7.1端末、8.0端末、iOS12のiPhone6sで動作確認は取っています。現在Preview版とのことですが、とりあえず動いてはいます。
使い方は簡単で、Pluginsフォルダを汚すことなく各プラットフォームごとの処理をC#コードを書いていくだけです。
👉DOTweenの教科書を読んでUnityアニメーションをプログラミングしてみよう!
Android版の対応
比較的、実機確認までが容易なAndroidから説明していきます。
Mobile NotificationsをインストールするとProject SettingsにMobile Notification Settingsという項目が追加されます。各プラットフォームのタブがあるので、Androidを選びます。
Androidは通知アイコン設定のみで、非常にシンプルです。
項目 | 内容 | 備考 |
---|---|---|
Identifier | アイコンID | 重複してもエラーにならないので注意 |
Type | 種類(small or large) | smallの場合はアルファ抜き白になる |
ヘッダに表示されるアイコンが、TypeがSmalle Iconです。
このように通知されます。この通知UIをタップするとアプリが立ち上がります。
- 通知チャンネルを登録
- 通知を予約する
通知によってアイコン、文章を変更することができます。
アイコンは予めアプリに埋め込んでおく必要がありそうですが、文言はマスターに登録しておくなどすれば自由に変更することが可能です。
抜粋コードですが、以下のような実装になります。
通知チャンネルを登録
AndroidNotificationCenter.RegisterNotificationChannel(new AndroidNotificationChannel
{
Id = ChannelId,
Name = "Default ChannelName",
Importance = Importance.High,
Description = "Channel Description",
});
通知を予約する
AndroidNotificationCenter.SendNotification(new AndroidNotification
{
Title = title,
Text = body,
SmallIcon = "icon_0",
LargeIcon = "icon_1",
FireTime = System.DateTime.Now.AddSeconds(afterSec),
Number = 1
}, ChannelId);
どちらもAndroidNotificationCenter
クラスを通して処理を書きます。
ちなみに、通知音を変更することは現状できません。アップデートに期待です。
通知アイコンが出ない問題
Number = 1
と設定しているが通知アイコン(アプリアイコン付く番号アイコン)が表示されない問題に出くわしております。どなたか解決方法知りませんかね...?
iOS版の対応
※本記事ではCoreLocation frameworkについては言及しません。あくまで時間をトリガーに通知させます。
iOSはAndroidと違ってまあまあ設定項目がありますが、今回はアプリ起動時に通知許可を確認するので
Request Authorization on App Launch
にチェックを入れます。ローカル Push通知だけであれば、これ以上特に設定する項目はありません。 ※このようにアプリ初回起動直後に通知の許可確認ポップアップが表示されます。
Android版との違い
- 通知許可ポップアップを任意のタイミングで出せる(Androidはそもそも不要)
- Push通知アイコンは動的変更不可
- 実機で確認するためにはApple Developer Programが必要
iOSNotificationCenter.ScheduleNotification(new iOSNotification()
{
Title = title,
Body = body,
ShowInForeground = true,
Badge = 1,
Trigger = new iOSNotificationTimeIntervalTrigger()
{
TimeInterval = new System.TimeSpan(0, 0, afterSec),
Repeats = false
}
});
通知ポップアップが許可されれば、上記のようなコードを実行するだけで通知は予約されます。
スリープ時通知 | アクティブ時通知 | 通知アイコン |
---|
このような感じにC#を書くだけで通知してくれます。
通知アイコン消せない問題
Androidに引き続きiOSでも1点問題が発生しまして、通知をタップしたら通知アイコンも消えるのかなって思っていたらですね、消えません...。
この件に関しては、また別途検証しようと思います。
※解決しました↓↓
Unity製MobileNotificationsのローカルPush通知アイコンをアプリ起動時に消す
まとめ
ネイティブプラグインを扱うことなく、C#のみでローカルプッシュ通知を実装できました。
また Unityが公式でサポートしているという点が心強いです。
早くPreviewが取れてもらいたいものです。Unity2019のどこかですかね。。。?
今回のサンプルのフルソースは以下です。
通知をキャンセルしたり、他にもいろいろやりたい場合は、このままではできませんが、ただ、動くことを確認するくらいなら問題ないかと思います。
MobileNotificationsサンプルコード · GitHub
// 10秒後に通知
LocalNotificationWrapper. ReserveNotification("タイトル", "本文", 10);
こんな感じで使います。
この記事が気に入ったらフォローしよう
- Unity2018.3.2f1
- Mobile Notifications 1.0.0 preview
- Android 4.1以降
- iOS 10以降