TitaniumのLocal Notificationのハマりどころ

・追記
この記事は不十分だったので訂正したこちらの続・Local Notificationのハマりどころも参照して下さい。

こんにちは。araishiです。
Titaniumで作ったアプリにPush通知を出したい時、サーバー側から通知した内容を表示する方法と、端末側だけで設定した内容を通知する方法があります。
今日は後者のLocal Notificationを使ってみたところ、ハマったところがあったのでメモしときます。

パラメータでDateオブジェクトを指定しますが、JavaScriptのDateオブジェクトで日本のGMT+9の時刻を指定しても、iOS側ではグリニッジ標準時でしか指定できないところがハマりポイントでした。

なので、現在の時刻とPush通知を出したい時刻の差分の時間の秒数を取得して、「現在からプラス何秒経過した時に通知する」という方法を使うとうまく動くようになりました。

このような感じです。

// 通知を出したい時間
var alertDate = new Date('2013/5/25 00:00:00');

var nowDate   = new Date();

// 現在時との差分のタイムスタンプ
var differenceStamp = alertTime.getTime() - nowDate.getTime();

// 現在の設定を削除
Ti.App.iOS.cancelAllLocalNotifications();
var notifications = [];
notification_params = {
      date: new Date(nowDate.getTime() + differenceStamp)
      alertBody: 'お誕生日おめでとう!',
      repeat: 'yearly', // 毎年に設定
      alertAction: 'OK',
      sound: 'sound.mp3',
    };
notifications.push(Ti.App.iOS.scheduleLocalNotification(notification_params));

・参考
Titanium MobileでLocal Notificationを実装する

カテゴリー: Titanium

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*