ionic(cordova)にてpush通知受信でフォアグラウンド・バックグラウンドを判定する

https://github.com/phonegap/phonegap-plugin-push/
こちらのプラグインを使ってプッシュ通知を実装した。で、今回やりたかったことはアプリがフォアグラウンドの場合とバックグラウンドの場合で受信した時の処理を切り分けたいということだった。ドキュメント見ててもやり方がみつからず、強引に対応した。今回はionicで試したのでそのときの対応をメモしておく。

angular.module('starter', ['ionic'])
.run(function($ionicPlatform) {

  var time = (new Date()).getTime() / 1000;

  $ionicPlatform.ready(function() {
    ・・・
    var push = PushNotification.init({
      "ios": {"alert": "true", "badge": "true", "sound": "true"}
    });
    push.on('notification', function(data) {
      var now = (new Date()).getTime() / 1000;
      var diff = now - time;
      if (diff < 1) {
        // バックグラウンドから通知をタップしてアプリ起動された場合
      } else {
        // プッシュ通知を受けた時にアプリがフォアグラウンドの場合
      }
    });
  });

  document.addEventListener('resume', function(event) {
    time = (new Date()).getTime() / 1000;
  });
});                                                                                                                                                                                                                

だいぶ強引だけど。。