いんでぃーづ

個人でゲーム開発してる上で吸収したモノたち紹介。UnityからGIMPまでなんでも。デザインとかゲーム論まで語っちゃうよ的なアレ。

MENU

UnityでiOSのNotification:ローカル通知編

{スポンサーリンク}
{スポンサーリンク}

バイルに通知機能あれど取り組む暇はなし。

その中でも導入が比較的に簡単な、iOSのローカル通知の使い方をまとめました。

環境:Unity5.5


ローカル通知とは、時刻を指定して予定を登録し、通知を行いう機能です。

アプリ内で登録し、アプリを起動した端末で受け取ります。

端末外から受け取る通知はプッシュ通知と呼ばれ、外部のシステムを使わなければ使えません。

通知専用のnamespaceをusing

まずC#ソースの先頭に以下の2行を追加します。

using NotificationServices = UnityEngine.iOS.NotificationServices;
using LocalNotification = UnityEngine.iOS.LocalNotification;

ちょっといつもと違うかんじのusingですね。

通知に必要なクラスはUnityEngine.iOS以下にあるのですが、実はUnityEngine以下にも同名のクラスがあるため、通常のusingではコンパイラが警告を出してきます。

上の書き方だと名前空間エイリアスという形で定義でき、NotificationServices.〜としたときに自動的にUnityEngine.iOS.NotificationServicesクラスを参照してくれるという寸法です。

通知受信の初期設定

まず実際の通知を行うまえに、アプリが通知機能を使うということをユーザーに許可してもらいます。

NotificationServices.RegisterForNotifications(
    NotificationType.Alert | 
    NotificationType.Badge | 
    NotificationType.Sound
);

iOSアプリを立ち上げるとよくポコンと出てくる、通知許可ダイアログが表示されます。

二回目以降はダイアログは表示されないので、アプリ起動時に固定で実行してしまって問題ありません。

Unity - スクリプトリファレンス: NotificationServices

通知の登録

初期化ができたら、以下のように通知を登録します。

LocalNotification simpleNotification = new LocalNotification();
simpleNotification.alertAction = "simple Action";
simpleNotification.alertBody = "Notification Body";
simpleNotification.applicationIconBadgeNumber = 2;
simpleNotification.fireDate = new DateTime(2017, 1, 18, 20, 0, 0, DateTimeKind.Local);
NotificationServices.ScheduleLocalNotification(simpleNotification);

UnityEngine.iOS.LocalNotification クラスのメンバは以下の公式のスクリプトリファレンスを参照しましょう。

https://docs.unity3d.com/ja/current/ScriptReference/iOS.LocalNotification.html

通知の削除

通知領域に表示されている通知は、以下の一文で削除できます。

NotificationServices.ClearLocalNotifications();

バッジの削除

通知登録でapplicationIconBadgeNumber を設定すると、ホーム画面にあるアプリアイコンに、通知数を表すバッジが表示されています。

これはapplicationIconBadgeNumber を-1にしたLocalNotificationをPresentLocalNotificationNowで実行すれば削除可能。

public void ClearNotification() {
    LocalNotification clearNotification = new LocalNotification();
    clearNotification.applicationIconBadgeNumber = -1;
    NotificationServices.PresentLocalNotificationNow(clearNotification);
}

通知投げてますが特になにも起こらないので、これで大丈夫だと思います。


次回、プッシュ通知!

Amazon.co.jpアソシエイト