您将如何在沙盒中测试 APNS 反馈服务?或者换句话说,你如何强制设备出现在反馈中?
3 回答
我认为,从第一轮的问题“是的,你如何让一些东西出现在那里?”实际上来自这样一个事实,即他的测试没有返回任何设备,即,即使他可能已成功发送通知到iPhone / iPad,每当他查询FB服务器时,什么都没有回来,正是因为该应用程序从未从设备中删除,因此服务器很乐意继续回答“找到0个设备”(例如),因为没有设备失败接收通知。
因此,当应用程序从设备中删除时,通知服务器才会提供反馈,即它最终会以删除该应用程序的设备列表进行回复。
本地服务器的想法也很不错。
-亚历克斯
===============
这是苹果建议保留至少一个推送启用应用程序的一个令人讨厌的副作用。这是我对帖子上发布的文件的建议:
在“反馈服务器的问题”中,有两个场景很有趣:1)应用程序部署到真实设备,在生产模式下;2) 将应用程序部署到开发设备、沙箱;
在 1) 中留下最后一个应用程序的提示(我希望它是正确的,并且应该按描述工作);这里没有问题。
在 2) 上,必须确保最后一个应用程序也是开发应用程序。或者换句话说,为了让事情更简单,有第二个“沙盒应用程序”,它只是用来按“最后一个人开关”。
我遇到的问题是,一旦我删除了我的开发应用程序,沙盒反馈服务器上什么也没有发生,即使设备上还有其他支持推送的应用程序,但是它们都是生产应用程序,因此,它们会“报告” (如果你可以这么说)到生产反馈服务器。
您的应用程序的第二个副本(沙盒应用程序)是我们想要的,因此它可以保持与沙盒服务器的持久连接......然后当您删除“正在测试的应用程序”时,您的沙盒应用程序有望报告到沙箱,您可以进行实际测试。
希望这是正确的......将测试tonite。
如果您从设备中删除您的应用程序,您所要做的就是尝试向该设备发送一个通知,并且下次连接到反馈服务器时,它将返回该设备。在您尝试向该设备发送另一个通知之前,它将不会再次返回该设备。
此外,如果您在与反馈服务器的连接之间向设备发送多个通知,则设备将针对每个被拒绝的通知返回。
我意识到已经接受了一个答案,但是为了进行第一轮测试而不必不断地从我的手机/ipod 安装和删除我的应用程序,我创建了一个非常简单的 ruby 脚本来充当反馈服务器。我将我的 ruby APNS 类配置为连接到该服务器(本地主机: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 秒收到一个连接时将一个数据包写入套接字。如果连接套接字关闭(例如,您终止了反馈进程),则此脚本将重置并等待新连接。
请记住,不要仅使用标准的 ruby 套接字来使用 SSL 连接。祝你好运!