Javascript 为什么';当应用程序处于后台时是否调用回调?
我正在开发一个钛合金应用程序,当推送通知进来时,它需要在iOS下显示一个。因此,我使用以下代码注册传入的推送通知:Javascript 为什么';当应用程序处于后台时是否调用回调?,javascript,ios,push-notification,titanium,apple-push-notifications,Javascript,Ios,Push Notification,Titanium,Apple Push Notifications,我正在开发一个钛合金应用程序,当推送通知进来时,它需要在iOS下显示一个。因此,我使用以下代码注册传入的推送通知: var callbacks = { types: [ Titanium.Network.NOTIFICATION_TYPE_BADGE, Titanium.Network.NOTIFICATION_TYPE_SOUND, Titanium.Network.NOTIFICATION_TYPE_ALERT ], s
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的iPhone5上使用SDK版本3.4.0
请注意,通过apn有效负载发送横幅文本不是解决方案。还有其他用例。例如,当服务器需要告诉客户机有新内容要同步时,用户甚至不需要获得同步通知。当通知到达时,客户端应在后台下载新内容。您需要注册远程通知后台模式。这将唤醒你的应用程序,并在你发送通知时给你执行时间
对于Appcelerator文档中的记录,您需要注册远程通知后台模式。这将唤醒你的应用程序,并在你发送通知时给你执行时间
记录在Appcelerator文档中我已经知道了怎么做! 当应用程序处于后台时,将调用回调。我所要做的就是在
ti:app/ios/plist/dict
中的tiapp.xml
中添加以下内容:
<key>UIBackgroundModes</key>
<array>
<string>remote-notification</string>
</array>
ui背景模式
远程通知
在那之后,一切都很好 我已经知道怎么做了! 当应用程序处于后台时,将调用回调。我所要做的就是在
ti:app/ios/plist/dict
中的tiapp.xml
中添加以下内容:
<key>UIBackgroundModes</key>
<array>
<string>remote-notification</string>
</array>
ui背景模式
远程通知
在那之后,一切都很好 如果应用程序位于后台,则不会触发回调。如果要在应用程序处于后台时执行某些代码,则需要在中运行后台服务iOS@Anand根据一项调查,后台服务可以在应用程序终止后运行不超过10分钟。那之后呢?另外,在后台服务中我会做什么?轮询所有X秒?:/iOS横幅将显示通过推送通知发送的任何文本。它不是基于回调的。当您发送推送通知时,它应该包含一个有效负载。有效载荷将显示在那里。如果您已打开应用程序,则不会显示此横幅,因此我认为在回调中,您试图显示由您创建的横幅。是吗?@Anand我不想从服务器向用户发送应该显示的消息,因为有很多原因(语言、服务器不知道等等),我也不想设置来自服务器的通知数量(徽章),因为只有客户端知道他有多少未读通知。服务器只是告诉客户端有新消息。此外,服务器告诉客户机他应该下载一些新内容,例如在另一个登录的客户机上更改的配置文件信息。为此,我需要叫回电话。顺便说一句,为什么要投反对票?这是一个钛文档还没有回答的非常好的问题。如果应用程序在后台,则不会触发回调。如果要在应用程序处于后台时执行某些代码,则需要在中运行后台服务iOS@Anand根据一项调查,后台服务可以在应用程序终止后运行不超过10分钟。那之后呢?另外,在后台服务中我会做什么?轮询所有X秒?:/iOS横幅将显示通过推送通知发送的任何文本。它不是基于回调的。当您发送推送通知时,它应该包含一个有效负载。有效载荷将显示在那里。如果您已打开应用程序,则不会显示此横幅,因此我认为在回调中,您试图显示由您创建的横幅。是吗?@Anand我不想从服务器向用户发送应该显示的消息,因为有很多原因(语言、服务器不知道等等),我也不想设置来自服务器的通知数量(徽章),因为只有客户端知道他有多少未读通知。服务器只是告诉客户端有新消息。此外,服务器告诉客户机他应该下载一些新内容,例如在另一个登录的客户机上更改的配置文件信息。为此,我需要叫回电话。顺便说一句,为什么要投反对票?这是一个钛文档还没有回答的非常好的问题。我试着听这个事件。但它也是在我将答案中的代码添加到tiapp.xml之后才被调用的。现在这个答案也是正确的。我会接受我的答案,因为它直接提供了解决方案,而在你的答案中,我将不得不访问一个链接并自己阅读。我已经试着听这个事件。但它也是在我将答案中的代码添加到tiapp.xml之后才被调用的。现在这个答案也是正确的。我会接受我的答案,因为它直接提供了解决方案,而在你的答案中,我必须访问一个链接并亲自阅读。这是我在回答中告诉你的。你为什么再次回答并接受你的答案?@Mike Gottlieb你已经改变了答案。它以前没有给出正确的答案。如果你愿意,你可以得到赏金,否则就浪费了;)这就是我在回答中告诉你的。为什么你又回答了一遍,接受了你的回答?@Mike Gottlieb你有零钱吗