2012-06-27 3 views
1

Я создаю все сертификаты для разработки push-уведомления для своего iPhone приложения. Если я тестирую его с файлом .pem, созданным сертификатами разработчика, он работает, но если я использую файл .pem, созданный с помощью производственных сертификатов, он не работает.Push-уведомления о распространении

Это мой код:

public function push($deviceToken,$badge,$message,$deviceType) { 

       $sound = "default"; 

       // Construct the notification payload 
       $body = array(); 
       $body['aps'] = array("alert" => $message); 

       if ($badge) 
        $body['aps']['badge'] = $badge; 
       if ($sound) 
        $body['aps']['sound'] = $sound; 

       $ctx = stream_context_create(); 
       stream_context_set_option($ctx, 'ssl', 'local_cert', 'apns-prod.pem'); 
       $fp = stream_socket_client("ssl://gateway.push.apple.com:2195", $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx); 

       if (!$fp) { 
        print "Failed to connect $err $errstrn"; 
        return; 
       } else { 
        print "Connection OK\n"; 
       } 

       $payload = json_encode($body); 
       $msg = chr(0) . pack('n',32) . pack('H*', str_replace(' ', '', $deviceToken)) . pack('n',strlen($payload)) . $payload; 
       fwrite($fp, $msg); 
       fclose($fp); 

    } 

Любые предлагает?

+0

HI Dany, Можете ли вы, пожалуйста, обновить это, с решением, которое сработало для вас. Спасибо –

ответ

0

Сертификаты производственных штампов будут работать только при отправке уведомлений в приложение, подписанное специальным сертификатом распространения (или окончательной версией). Сертификаты push для разработчиков будут работать только с приложениями, подписанными с сертификатом распространения разработчика (т.е. установленным на устройство с XCode).

+0

Мое приложение находится в яблочном магазине с сертификатами распространения. Теперь мне нужно отправить обновление для моего приложения, добавив push-уведомление. Вы предлагаете? – Dany

+0

Если вы тестируете использование производственных сертификатов, вы увидите только уведомление, если вы выпустили приложение через AppStore OR, если вы устанавливаете приложение через ad-hoc-дистрибутив. –

+0

И как я могу быть уверен, что это работает, не дожидаясь одобрения Apple? – Dany

0

Вы можете попробовать сертификат производства, изменив вам свойства схемы:

  • Нажмите на целевую схему, на левом верхнем углу окна Xcode, затем Edit Scheme.

  • На вкладке «Запустить свою таргеть» установите Release в качестве конфигурации сборки и «Нет» в качестве отладчика.

  • Конечно, у вашей цели должен быть настроен профиль специального профиля.

  • Подключите свой iPhone и запустите с настройкой iOSDevice.

Это работает?

EDIT: мои appologizes, я бы сказал Release вместо Ad-hoc (я исправил)

+0

, но мое приложение открыто в магазине apple не ad-hoc – Dany

+0

Я бы сказал 'Release'. Сертификат Production Push одинаковый для сборников 'Release' и' App Store'. Если он работает на 'Release', он будет работать в' App Store' – Martin

0

Обязательно создать новый ADHOC и или распределения AppStore сертификата После создания сертификатов для процесса нажимной. Смена приложений adhoc и appstore для приложений push-enable.

Смежные вопросы