Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么';当应用程序处于后台时是否调用回调?_Javascript_Ios_Push Notification_Titanium_Apple Push Notifications - Fatal编程技术网

Javascript 为什么';当应用程序处于后台时是否调用回调?

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

我正在开发一个钛合金应用程序,当推送通知进来时,它需要在iOS下显示一个。因此,我使用以下代码注册传入的推送通知:

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你有零钱吗