APNS: Есть ли какие-то ограничения для устройств? - PullRequest
1 голос
/ 14 марта 2011

Я разрабатываю сторонний сервер для использования APNS. Мой сервер открывает соединение с APNS, отправляет несколько сообщений, а затем закрывает соединение следующим образом.

$apns = stream_socket_client( ... );

foreach( $data as $row )
{
    SendPush( $apns, $row );
    ...
}

...


fclose( $apns );

Я разработал сервер с php и провел тесты на 4 устройствах - iPhone4 * 2 и i Pod Touch * 2, затем обнаружил, что какое-то устройство пропускает его push-nofitication.

Когда я попытался отправить Push с помощью этой последовательности, только iPhone A получил свое Push-уведомление.

iPhone A -> iPod A -> iPhone B -> iPod B

В приведенной ниже последовательности только iPod A получил Push-уведомление.

iPod A -> iPhone A -> iPod B -> iPhone B

И я попробовал эту последовательность - iPhone A -> iPhone B -> iPod A -> iPod B, затем iPhone A & B получил толчок, а iPod A & B - нет. С iPod A -> iPod B -> iPhone A -> iPhone B, только iPod получили push.

Я использовал SSL сертификат для производства. Когда я отправлял один push на каждое соединение или использовал сертификат для разработки, проблем не было - все устройства хорошо получали свои push-сообщения. Почему это случилось?

1 Ответ

0 голосов
/ 22 июня 2012

Я думаю, вам следует сделать следующее:

1) Разрешить AppID для использования APNS.Для разработки / производства.2) Повторно сгенерируйте профиль обеспечения / распространения, с которым вы подписали свое приложение.Осторожно, вы должны использовать профиль обеспечения, который использует AppID, упомянутый выше.Если вы запускаете приложение в разработке и пытаетесь отправить его с включенным appID для производства, это не сработает.

3) Помните о потоке уведомлений.Сервер отправляет уведомление в APNS, а APNS отправляет уведомление на устройство, если устройство подключено к Интернету.Если нет, APNS не будет хранить очередь.Если произойдет сбой одного уведомления, произойдет сбой всех уведомлений, следующих за каналом.Существует видео-сессия WWDC о push-уведомлениях, и вы можете графически увидеть, как это работает.

Это означает, что если вы отправляете на устройство 1, устройство 2 и устройство 3 (в этом порядке), то у вас есть этот канал (заказ).Если устройство 2 находится в автономном режиме или выключено, устройство 3 также не получит уведомление.Вы должны управлять этим на стороне сервера и повторно отправить неисправные и те, которые следовали за ним.

Надеюсь, это поможет.Извините за мой английский.

С уважением,

Джордж

...