你如何测试iphone推送通知反馈服务

时间:2010-07-29 19:37:15

标签: iphone xcode push-notification feedback apple-push-notifications

我需要一种测试推送通知反馈服务的方法。我可以发送通知。

我使用XCode将应用程序安装到我的开发iPod,发送推送通知就好了,应用程序收到它们。

我卸载了该应用,发送了一些推送通知。然后尝试了反馈服务,但没有运气。我没有从流中收到任何字节。

甚至尝试等待一天。在不同的iphone上尝试过同样的东西,但没有。我确定代码很好,双重检查网址和端口等,一切都很好。除了使用相同的设置(除了网址和端口),我可以发送推送就好了。

所以我不知道现在该做什么。我在网上搜索过,但找不到任何有用的东西。有人建议我已经尝试过(发送推送 - >卸载 - >发送推送 - >听取反馈)。

有什么想法吗?有什么方法可以确保它在推送之前能够保持良好状态吗?

下面是代码(C#):

using (TcpClient client = new TcpClient())
        {
            client.Connect("feedback.sandbox.push.apple.com", 2196);
            using (NetworkStream networkStream = client.GetStream())
            {
                Console.Out.WriteLine("Client Connected");
                X509Certificate cert = new X509Certificate(fileLocation, password);
                X509CertificateCollection certCollection = new X509CertificateCollection(new X509Certificate[1] { cert });
                SslStream ssl = new SslStream(client.GetStream(), true, new RemoteCertificateValidationCallback(ValidateServerCertificate), null);                    
                try
                {
                    int bytesRead;
                    byte[] b = new byte[38];
                    ssl.AuthenticateAsClient("feedback.sandbox.push.apple.com", certCollection, SslProtocols.Default, false);
                    do
                    {
                        bytesRead = ssl.Read(b, 0, b.Length);
                    }
                    while (bytesRead != 0);
                    ssl.Close();
                }
                catch (AuthenticationException e)
                {
                    Console.WriteLine("Exception: {0}", e.Message);
                    return;

                }
            }
        }

2 个答案:

答案 0 :(得分:0)

设备上应至少安装一个推送应用程序。如果卸载应用程序且设备上没有推送应用程序,则设备无法连接以进行推送以保留电池。

答案 1 :(得分:0)

请参阅Apple Documentation: 删除设备上最后一个启用了推送功能的应用程序时,不会通知Apple服务器删除应用程序,因此设备将永远不会出现在反馈服务器上。

要解决此问题,您应该创建一个虚拟应用程序,在删除正在测试的应用程序之前,它将在开发模式下注册推送通知。