0

我試圖在iOS上處理推送通知。Titanium:在沒有點擊通知的情況下打開應用程序時檢查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

我想我理解你的意思,但是當我剛收到通知,當應用程序在後臺運行並且通知尚未被點擊時,至少應該有一個回調。 –

相關問題