Как вы тестируете сервис обратной связи Push Notification? - PullRequest
12 голосов
/ 18 февраля 2010

Как бы вы протестировали сервис обратной связи APNS в песочнице? Или, другими словами, как вы заставляете устройство быть в обратной связи?

Ответы [ 3 ]

11 голосов
/ 20 февраля 2011

Я думаю, что из начального раунда вопроса «Да, но как вы получаете что-то, чтобы показать там?» Фактически исходило из того факта, что его тесты не возвращали никакого устройства, то есть, хотя у него могли быть уведомления успешно отправлено на iPhone / iPad, когда он запрашивает сервер FB, ничего не возвращается, именно потому, что приложение никогда не удалялось с устройства, поэтому сервер так же рад продолжать отвечать «0 устройств найдено» (например), потому что ни одно устройство не смогло получить уведомления.

Таким образом, когда приложение удаляется с устройства, только тогда сервер уведомлений предоставит отзыв, то есть, наконец, ответит списком устройств, которые удалили приложение.

Идея локального сервера тоже довольно хороша.

1007 * для -Alex- *

==============

Вот неприятный побочный эффект от предложения Apple оставить хотя бы одно приложение с поддержкой push. Вот мое предложение к документу, опубликованному в ветке:

В разделе «Проблемы с сервером обратной связи» интересно отметить два сценария: 1) приложение развернуто на реальном устройстве в рабочем режиме; 2) приложение развернуто на устройстве разработки, в песочнице;

В 1) подсказка оставить последнее приложение (я ожидаю, что оно будет) правильным и должно работать, как описано; Здесь нет проблем.

В пункте 2) необходимо убедиться, что последнее приложение также является приложением для разработки. Или, другими словами, чтобы упростить задачу, используйте второе «приложение-песочницу», которое только для этого нужно нажать «Переключатель последнего человека».

Проблема, с которой я столкнулся, заключается в том, что после удаления моего приложения для разработки на сервере обратной связи в «песочнице» ничего не происходит, даже если на устройстве есть другие приложения с поддержкой push, однако все они являются производственными приложениями, поэтому они будут «сообщить» (если можно так сказать) на сервер обратной связи.

Вторая копия вашего приложения (приложение-песочница) - это то, что нам нужно, чтобы оно могло сохранять постоянное соединение с сервером-песочницей ... тогда, когда вы удалите "тестируемое приложение", ваше приложение-песочница будет надеюсь, отправьте сообщение в песочницу, и вы сможете провести настоящий тест.

Надеюсь, что это правильно ... проверим тонит.

6 голосов
/ 20 мая 2010

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

Кроме того, если вы отправляете на устройство несколько уведомлений между подключениями к серверу обратной связи, устройство будет возвращаться для каждого отклоненного уведомления.

4 голосов
/ 18 июня 2010

Я понимаю, что для этого был принят ответ, но для того, чтобы выполнить первый раунд тестирования без необходимости постоянно устанавливать и удалять мое приложение с моего телефона / 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-соединение, просто стандартный рубиновый сокет. Удачи!

...