2010-08-04 81 views
2

我正在开发使用Apple推送通知的iPhone应用程序。在iPhone端一切都很好,在服务器端我有一个问题。但是,当我尝试查询反馈服务以获取卸载应用程序的设备列表时,会发送正确的通知,但我总是得到零结果。我知道我应该从我的一个测试设备卸载应用程序时获得一个结果。 24小时后,我仍然没有反馈服务的结果..苹果推送通知服务器 - 反馈始终返回零元组

任何想法?是否有人知道反馈服务需要多长时间才能认出我的应用程序已从我的测试设备上卸载?这可能是由于沙箱环境?

+1

只是为了记录:问题似乎是,一旦支持推送通知的所有应用程序都从设备中移除,就会关闭与苹果反馈服务的连接。所以你必须安装两个支持推送的应用程序,然后才能移除被测试的应用程序。 请参阅:http://stackoverflow.com/a/4015150/978912 – Zakum 2013-05-15 16:24:29

回答

1

我有沙箱环境相同的问题。零元组通过反馈服务返回。

我切换到生产环境来测试我的代码,一切正常。只要我从设备上卸载应用程序并发送一对推送通知,该设备就会出现在反馈列表中。

0

虽然我不能说定义它不适用于沙箱环境,我很确定它。在生产环境中,卸载我的应用程序后,我发送了几个(我猜3)推送通知。然后反馈服务返回零元组以外的结果。 (大约在十分钟内)

它与本案无关,而且为了获得通知并获得反馈结果,您的网络应该允许APNS使用的端口。

1

我刚才吃了完全相同的问题:

int bytesReceived = 0; 
byte[] feedbackPacket = new byte[38]; // Each feedback should always be 38 bytes long 
bytesReceived = stream.Read(feedbackPacket, 0, feedbackPacket.Length); 
while(bytesReceived > 0) 
{ 
    ProcessFeedback(feedbackPacket); 
    Array.Clear(feedbackPacket, 0, feedbackPacket.Length); 
    bytesReceived = stream.Read(feedbackPacket, 0, feedbackPacket.Length); 
} 

在沙箱,上面总是返回0与BytesReceived。我在现场主机上运行这个程序,发送一个通知到设备,删除应用程序并发送第二个。反馈服务在发送第二个请求后的一秒钟内工作。

我还没有找到的一件事是多久打一次反馈服务。我现在每10分钟打一个电话。

0

正如Zakum在评论中所说,如果您删除最后一个支持推送的应用程序,设备将不会被添加到列表中。

(并确保给它足够的时间 - 也许10至20分钟)

From Apple Documentation:

如果您从您的设备或计算机中删除您的应用程序,然后发送推送通知它,你预计会拒绝设备令牌,并且无效的设备令牌应显示在反馈服务上。 但是,如果这是设备或计算机上最后一个启用了推送的应用程序,它将不会显示在反馈服务中。这是因为在删除通知可以发送之前,删除最后一个应用程序会将推送服务的持久连接关闭。

您可以通过解决此问题,在设备或计算机上至少保留一个启用了推送的应用程序以保持持续连接。要保持与生产环境的持续连接,只需从App Store安装任何免费的支持推送的应用程序,然后就可以删除应用程序并将其显示在反馈服务中。

回想一下,每个推送环境都有自己的持久连接。因此,要保持与沙箱环境的持续连接,请安装另一个支持开发推送的应用程序。