您如何在沙盒中测试APNS反馈服务?或者换句话说,你如何强迫设备进入反馈?
答案 0 :(得分:11)
我认为从最初的一轮问题“是的,你怎么能在那里得到一些东西?”实际上是因为他的测试没有返回任何设备,即使他可能已经收到通知成功发送到iPhone / iPad,无论何时他查询FB服务器,都没有回来,正是因为应用程序从未从设备中删除,因此服务器同样乐意继续回答“找到0设备”(例如)因为没有设备无法接收通知。
因此,当应用程序从设备中删除时,通知服务器才会提供反馈,即它最终会回复删除该应用程序的设备列表。
本地服务器的想法也很不错。
-Alex
这是苹果建议保留至少一个推送启用应用程序的令人讨厌的副作用。这是我对帖子上发布的文件的建议:
关于“反馈服务器的问题”,注意两个场景很有意思: 1)应用程序在生产模式下部署到真实设备; 2)将应用程序部署到开发设备,沙箱;
在1)提示留下最后一个应用程序(我希望它是正确的)并且应该按照描述工作;这里没有问题。
在2)上,必须确保最后一个应用程序也是一个开发应用程序。换句话说,为了使事情更简单,有第二个“沙盒应用程序”,只有按下“最后一个人切换”。
我遇到的问题是,一旦我删除了我的开发应用程序,沙箱反馈服务器上没有任何反应,即使设备上还有其他支持推送的应用程序,但它们都是生产应用程序,因此,它们会“报告”(如果你可以这么说)到生产反馈服务器。
您的应用的第二个副本(沙盒应用)是我们想要的,因此它可以保持与沙盒服务器的持久连接...然后当您删除“测试中的应用”时,您的沙盒应用将会希望能够向沙箱报告,你可以进行实际的测试。
希望这是正确的...将测试tonite。
答案 1 :(得分:6)
如果您从设备中删除您的应用,您只需尝试向该设备发送一个通知,下次连接到反馈服务器时它将返回该设备。在您尝试向该设备发送另一个通知之前,它将不会再次返回设备。
此外,如果您在反馈服务器的连接之间向设备发送多个通知,则会为每个被拒绝的通知返回设备。
答案 2 :(得分:4)
我意识到答案已被接受,但为了进行第一轮测试而不必经常安装&从我的手机/ iPod删除我的应用程序我创建了一个非常简单的ruby脚本作为反馈服务器。我将ruby APNS类配置为连接到此服务器(localhost:2196)并从中读取。我没有初始化SSL连接,所以我只使用了基本套接字。下面是我用来“托管”服务器的脚本。
#!/usr/bin/env ruby
require 'socket'
puts 'Opening server'
server = TCPServer.open(2196)
loop {
puts 'Waiting for connection'
client = server.accept
puts 'Connected preparing data'
data = [1, 2, 3, 4, 0, 32, ['d41c3767074f541814c2207b78f72e538569cb39eae60a8c4a8677549819e174']]
puts 'Data for delivery: ' + data.inspect
begin
data[6] = data[6].pack('H*')
data = data.pack('c6a*')
loop {
puts 'Writing Data'
client.write data
puts 'Sleeping for 5 seconds'
sleep 5
}
rescue
end
puts 'Done writing, closing'
client.close
}
此脚本将侦听并在每5秒收到一次连接时将数据包写入套接字。如果连接套接字关闭(例如,您终止了反馈过程),则此脚本将重置并等待新连接。
请记住,不要使用SSL连接只是一个标准的ruby套接字。祝你好运!