0

iOSでプッシュ通知を処理しようとしています。すべてが正常に動作しますほとんどの部分についてチタン:通知をクリックせずにアプリを開くと、iOS通知を確認します。

var Cloud = require("ti.cloud"); 
var deviceToken = null; 

var deviceToken = Ti.App.Properties.getString('deviceToken'); 

Ti.App.iOS.registerUserNotificationSettings({ 
    types: [ 
     Ti.App.iOS.USER_NOTIFICATION_TYPE_ALERT, 
     Ti.App.iOS.USER_NOTIFICATION_TYPE_SOUND, 
     Ti.App.iOS.USER_NOTIFICATION_TYPE_BADGE 
    ] 
}); 

Ti.App.iOS.addEventListener('usernotificationsettings', function registerForPush() { 
    Ti.App.iOS.removeEventListener('usernotificationsettings', registerForPush); 

    Ti.Network.registerForPushNotifications({ 
     success: function(e) { 
      if (e.deviceToken !== Ti.App.Properties.getString('deviceToken', null)) { 
       deviceToken = e.deviceToken; 
       Ti.App.Properties.setString('deviceToken', deviceToken) 
       subscribeToChannel(); 
      } else { 
       Ti.API.info('Already registered for push notifications!'); 
      } 
     }, 
     error: function(e) { 
      Ti.API.error('Failed to register for push notifications: ' + e.error); 
     }, 
     callback: receivePush 
    }); 

}); 

function subscribeToChannel() { 
    Cloud.PushNotifications.subscribeToken({ 
     device_token: deviceToken, 
     channel: 'general', 
     type: Ti.Platform.name == 'android' ? 'android' : 'ios' 
    }, function (e) { 
      alert(e.success === true ? 'Subscribed' : 'Error!'); 
    }); 
} 

// When receieve interactive remote notification 
Ti.App.iOS.addEventListener('remotenotificationaction', function(e) { 
    alert('remotenotificationaction: ' + JSON.stringify(e)); 
}); 

// When receieve interactive notification in the background 
Ti.App.iOS.addEventListener('localnotificationaction', function(e) { 
    alert('localnotificationaction'); 
}); 

// When receieve interactive notification in the foreground 
Ti.App.iOS.addEventListener('notification', function(e) { 
    alert('notification'); 
}); 

function receivePush(e) { 
    alert('receivePush'); 
} 

私の単純なコードは次のようになります。

  • アプリがバックグラウンドになると、通知が表示されます。通知をクリックすると、「receivePush」メッセージが表示されます。
  • アプリケーションがフォアグラウンドになると、通知は表示されませんが、「receivePush」メッセージが表示されます。
  • しかし、アプリがバックグラウンドのときに通知を受け取った後、アプリを直接クリックすると(つまり、通知はクリックされません)、上記のいずれのイベントも発生しません。

イベントが最後のケースでトリガーされたことを確認するにはどうすればよいですか。

答えて

1

コールバック関数にはアプリの起動ではなく通知動作が割り当てられているため、これは可能ではないと思います。これはチタンの問題ではなく、私が何を意味しているかを知っていればワークフローの誤解です。 私は、あなたが通知に関連していない、アプリが起動時に常に何かをチェックすることをお勧めしますと思います。

+0

私はあなたが意味することを理解していると思いますが、アプリがバックグラウンドで実行されていて通知がまだクリックされていないときに通知を受け取ったときに少なくともコールバックが必要です。 –

関連する問題