nirasan's tech blog

趣味や仕事の覚え書きです。Linux, Perl, PHP, Ruby, Javascript, Android, Cocos2d-x, Unity などに興味があります。

Unity で iOS のローカル通知を実装

はじめに

  • Unity で iOS のローカル通知を実装する。
  • Android とは違って、iOS ネイティブの通知機能のラッパーが Unity 側で実装されているので、これを呼び出すだけでよい。
  • 前回の Android 版と同様に、アプリが非アクティブになったら、一定時間後にローカル通知を送信する機能を実装する。

コード

  • 前回実装した NotifyTestScript.cs で iOS 版のローカル通知にも対応する。
  • 変更箇所は、OnApplicationPause で、iOS の場合、非アクティブ移行時に通知をスケジューリングし、アクティブ移行時に通知があれば削除する。
using UnityEngine;
using System.Collections;

public class NotifyTestScript : MonoBehaviour {

    ... 略 ...

	void OnApplicationPause (bool pauseStatus)
	{
		if (pauseStatus) {
			Debug.Log("applicationWillResignActive or onPause");
#if UNITY_ANDROID && !UNITY_EDITOR
			m_plugin.Call ("startService");
#elif UNITY_IPHONE
			LocalNotification l = new LocalNotification();
			l.applicationIconBadgeNumber = 1;
			l.fireDate = System.DateTime.Now.AddSeconds(60);
			l.alertBody = "hello world";
			NotificationServices.ScheduleLocalNotification(l);
#endif
		} else {
			Debug.Log("applicationDidBecomeActive or onResume");
#if UNITY_ANDROID && !UNITY_EDITOR
			m_plugin.Call ("stopService");
#elif UNITY_IPHONE
			if( NotificationServices.localNotificationCount > 0) {
				LocalNotification l = new LocalNotification();
				l.applicationIconBadgeNumber  = -1;
				NotificationServices.PresentLocalNotificationNow(l);

				NotificationServices.CancelAllLocalNotifications();
				NotificationServices.ClearLocalNotifications();
			}
#endif
		}
	}
    
    ... 略 ...
}