我正在开发一个钛应用程序,当推送通知进入时,需要在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)
}
但是当应用程序处于后台时,不会调用回调函数。所以,我也无法在那里显示横幅消息,因为代码不会被执行。
当应用程序处于后台时,回调未被调用的原因是什么?当它在前景时,它完美地工作。这是正常的吗?如果是的话,我还能在哪里放置代码来显示横幅消息?
我在带有iOS 8.1.1的iPhone 5上使用SDK版本3.4.0
请注意,通过apn-payload发送横幅文本不是解决方案。还有其他用例。例如,当服务器需要告诉客户端有新内容要同步时,用户甚至不需要得到通知。客户端应该只在通知到达时在后台下载新内容。
答案 0 :(得分:3)
您需要注册远程通知后台模式。这将唤醒您的应用程序,并在您发送通知时给您执行时间。
对于记录,这是在Appcelerator docs here
中答案 1 :(得分:1)
我发现了怎么做!
当应用程序处于后台时,将调用回调 。我所要做的就是将以下内容添加到tiapp.xml
中的ti:app/ios/plist/dict
:
<key>UIBackgroundModes</key>
<array>
<string>remote-notification</string>
</array>
之后,一切正常!