我正在開發一個需要顯示的iOS下Banner Message當一個推送通知是在一個鈦應用程式,所以我用下面的代碼來對傳入推送通知登記:爲什麼在應用程序處於後臺時不會調用回調? 。
var callbacks = {
types: [
Titanium.Network.NOTIFICATION_TYPE_BADGE,
Titanium.Network.NOTIFICATION_TYPE_SOUND,
Titanium.Network.NOTIFICATION_TYPE_ALERT
],
success:function(e){
console.log("success");
},
error:function(e){
console.log("error");
},
callback: function(e){
console.log("new push notification")
//code for displaying banner message would go here!
}
};
if(Ti.App.iOS.registerUserNotificationSettings){ //iOS 8 +
function onUserNotificationSettings(){
delete callbacks.types;
Ti.Network.registerForPushNotifications(callbacks);
Ti.App.iOS.removeEventListener("usernotificationsettings",onUserNotificationSettings);
}
Ti.App.iOS.addEventListener("usernotificationsettings",onUserNotificationSettings)
Ti.App.iOS.registerUserNotificationSettings(callbacks)
}else{ //up to iOS 7
Ti.Network.registerForPushNotifications(callbacks)
}
但回調函數不當應用程序在後臺時會被調用。所以,我也不能在那裏顯示橫幅信息,因爲代碼不會被執行。
當應用程序在後臺時回調沒有被調用的原因是什麼?當它在前景中時,它完美地工作。這是正常的嗎?如果是的話,我還會在哪裏放置我的代碼來顯示橫幅信息?
我使用的SDK版本3.4.0上的iPhone 5與iOS 8.1.1
請注意,通過APN-有效載荷中發送標題文本也不是個辦法。還有其他用途。例如,當服務器需要告訴客戶端有新的內容需要同步時,用戶甚至不需要得到通知。客戶只需在通知到達時在後臺下載新內容。
如果應用程序在後臺,則不會觸發回調。如果您想在應用程序處於後臺時執行某些代碼,則需要根據[this](http://docs.appcelerator.com/titanium/3.0/#!/api/)在iOS – Anand 2014-12-04 17:06:39
@Anand中運行後臺服務Titanium.App.iOS.BackgroundService)後臺服務可以在應用程序終止後不超過10分鐘運行。那之後呢?另外,我會在後臺服務中做什麼?輪詢所有X秒? :/ – 2014-12-04 17:11:28
iOS橫幅將顯示通過推送通知發送的任何文本。它不基於回調。當你發送推送通知時,它應該包含一個有效載荷。有效載荷將顯示在那裏。如果您打開了您的應用程序,則此橫幅不會顯示,因此我認爲在回調中您嘗試顯示由您創建的橫幅。對? – Anand 2014-12-05 10:18:44