Сервер уведомлений Apple Push - Feedback всегда возвращает ноль кортежей - PullRequest
2 голосов
/ 04 августа 2010

Я занимаюсь разработкой приложения для iPhone, в котором используются push-уведомления Apple. На стороне iPhone все хорошо, на стороне сервера у меня проблема. Уведомления отправляются правильно, однако, когда я пытаюсь запросить службу обратной связи, чтобы получить список устройств, с которых приложение было удалено, я всегда получаю ноль результатов. Я знаю, что должен получить один результат, поскольку приложение было удалено с одного из моих тестовых устройств. После 24 часов и более у меня все еще нет результатов от службы обратной связи ..

Есть идеи? Кто-нибудь знает, сколько времени понадобится службе обратной связи, чтобы распознать, что мое приложение было удалено с моего тестового устройства? Может ли это быть из-за среды песочницы?

Ответы [ 4 ]

1 голос
/ 17 мая 2012

У меня была точно такая же проблема:

int bytesReceived = 0;
byte[] feedbackPacket = new byte[38];   // Each feedback should always be 38 bytes long
bytesReceived = stream.Read(feedbackPacket, 0, feedbackPacket.Length);
while(bytesReceived > 0)
{
    ProcessFeedback(feedbackPacket);
    Array.Clear(feedbackPacket, 0, feedbackPacket.Length);
    bytesReceived = stream.Read(feedbackPacket, 0, feedbackPacket.Length);
}

В песочнице выше всегда возвращалось 0 байтПолучено. Я запустил это на живом хосте, отправив одно уведомление на устройство, удалив приложение и отправив второе. Служба обратной связи работает в течение секунды после отправки второго запроса.

Одна вещь, которую я не нашел, это как часто звонить в службу обратной связи. Я буду звонить каждые 10 минут в данный момент.

1 голос
/ 20 января 2011

У меня была такая же проблема с песочницей.Нулевые кортежи возвращаются службой обратной связи.

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

0 голосов
/ 13 августа 2015

Как сказал Закум в комментарии, устройство не будет добавлено в список, если вы удалите последнее приложение с поддержкой push-уведомлений.

(И обязательно уделите этому достаточно времени - возможно, от 10 до 20 минут.)

Из документации Apple:

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

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

Напомним, чтокаждая push-среда имеет свое постоянное соединение.Так что , чтобы поддерживать постоянное соединение со средой «песочницы», установите другое приложение с поддержкой push-уведомлений.

0 голосов
/ 26 января 2012

Хотя я не могу однозначно сказать, что он не работает в среде песочницы, я в этом уверен.В производственной среде после удаления приложения я отправил несколько (я думаю, 3) push-уведомлений.Тогда служба обратной связи вернула результаты, отличные от нуля кортежей.(примерно через десять минут)

Это не связано с этим делом, но также для получения уведомлений и получения результатов обратной связи ваша сеть должна разрешать порты, которые использует APNS.

...