Как вы тестируете службу обратной связи с push-уведомлениями iphone

Мне нужен способ протестировать службу обратной связи с push-уведомлениями. Я могу отправлять уведомления нормально.

Я установил приложение с помощью XCode на свой IPod разработчика, отлично отправлял push-уведомления, приложение получало их нормально.

Я удалил приложение, отправил несколько push-уведомлений. Затем попробовал службу обратной связи, но безрезультатно. Я не получаю никаких байтов обратно из потока.

Даже пытался ждать до суток. Пробовал то же самое на другом айфоне, но ничего. Я уверен, что код в порядке, дважды проверил URL-адрес, порт и т. д., все в порядке. Помимо использования тех же настроек (кроме URL-адреса и порта), я могу отлично отправлять push-уведомления.

Поэтому я не уверен, что делать сейчас. Я искал в Интернете, но не нашел ничего полезного. Кто-то предложил именно то, что я уже пробовал (отправить push -> удалить -> отправить push -> прослушать отзывы).

Любые идеи? В любом случае я могу убедиться, что все в порядке, прежде чем запускать его в прямом эфире?

Ниже приведен код (С#):

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;

                }
            }
        }

person Tee    schedule 29.07.2010    source источник


Ответы (2)


На устройстве должно быть установлено хотя бы одно push-приложение. Если вы удалите приложение, а на устройстве нет push-приложений, устройство не будет подключаться к push-уведомлениям для экономии заряда батареи.

person Sharjeel Aziz    schedule 29.07.2010
comment
Спасибо, Шаджи, за ответ. Я попробовал ваше предложение, но до сих пор не получил ответа от службы обратной связи. Шаги, которые я предпринял: 1. Установил версию для разработчиков через Xcode. Отправил толчок. работал нормально. 2. Установлено 2 приложения с поддержкой push-уведомлений. Какое-то приложение для обмена мгновенными сообщениями. Получил толчки от них успешно. 3. Удалить мое приложение. 4. Отправил 2 push-уведомления моему приложению. 5. Пробовал пользоваться сервисом обратной связи, но безрезультатно. Байты возвращают 0. Что еще я могу попробовать? С Уважением - person Tee; 30.07.2010
comment
@Tee взгляните на этот вопрос для возможного решения. stackoverflow.com/questions/1278834 - person Sharjeel Aziz; 30.07.2010

См. Документация Apple: при удалении последнего приложения с поддержкой push-уведомлений на устройстве серверы Apple не уведомляются об удалении приложения, поэтому устройство никогда не появится на сервере обратной связи.

Чтобы обойти это, вы должны создать фиктивное приложение, которое будет регистрироваться для получения push-уведомлений в режиме разработки, прежде чем удалять приложение, которое вы тестировали.

person Frizlab    schedule 08.02.2012