Intereting Posts
bind_param (), похоже, не работает PHP проверяет числовое значение внутри цикла foreach с парами ключей и значений? Неопределенный метод с библиотекой Composer и CodeIgniter Регулярное выражение для соответствия пробелу или концу строки http_build_query, помещая странные символы в строку запроса Риски использования PHP eval Получение значения из динамически созданного текстового поля через php Учитывая, что письмо является сырым текстом, как я могу его отправить с помощью PHP? Предотвращение одновременных транзакций в веб-приложении Как вставить данные в таблицу1 с полем проверки из таблицы2 (Codeigniter) (обновлено) simplexml, возвращая несколько элементов с тем же тегом PHP встроен в сервер и переписывает мод .htaccess Загрузка изображения в базу данных mysql с использованием PHP Поиск общей ценности среди подмассивов в многомерном массиве Сравнение String с Integer дает странные результаты

Облицовочные проблемы в ios push notification php code

Я использую этот код в php

function pushnotificationios( $deviceToken, $message, $badges){ $passphrase = "12345"; $ctx = stream_context_create(); stream_context_set_option($ctx, 'ssl', 'local_cert', $_SERVER['DOCUMENT_ROOT'].'/include/ck.pem'); stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase); $fp = stream_socket_client( "ssl://gateway.push.apple.com:2195", $err, $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx); $body['aps'] = array( //'badge' => $badges, 'badge' => "+1", 'alert' => $message['message'], 'sound' => 'default', 'content-available' => '1' ); $body['msg'] =$message; $payload = json_encode($body); $msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload; $result = fwrite($fp, $msg, strlen($msg)); //echo "<pre>"; print_r($result); fclose($fp); return $result; } 

.pem и их пароль верны. но когда я ударяю эту функцию, тогда только в режиме производства он возвращает мне false;

 $result = pushnotificationios( $deviceToken, $message, $badges); echo "<pre>"; print_r($result); 

И для ответа требуется слишком много времени.

В настоящее время я не нахожу никакого решения .. мой api собирается яблоко, и мои уведомления не работают. Интересным является то, что приложение для отладки и целое приложение основано на уведомлениях. Это плохой день для меня.

Пожалуйста, помогите, если что-то случится хорошо для меня для приложения.

Solutions Collecting From Web of "Облицовочные проблемы в ios push notification php code"

Производство:

SSL: //gateway.push.apple.com: 2195

,

Разработка:

SSL: //gateway.sandbox.push.apple.com: 2195

В моем приложении. Я непосредственно получаю deviceToken который находится в NSData

 - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { NSString *deviceTokenString = [NSString stringWithFormat:@"%@", deviceToken]; // this is producing something like: // <xxxxxxx 9b0f527f xxxxxxxx 2727ed28 xxxxxxxx 4e693a61 xxxxxxx ac2f7dbb> // // and i am directly saving that to my servers database 

Вот что я имею на своем сервере.

 $from_database = "<xxxxxxx 9b0f527f xxxxxxxx 2727ed28 xxxxxxxx 4e693a61 xxxxxxx ac2f7dbb>"; // this removes the '<' and '>' to make the device token valid // $token_string = substr($from_database, 1, -1); $token_array[] = $token_string; // you can also add multiple 'token_string' to the 'token_array' for push notification broadcasting, i am currently doing that and it is working properly. ... public function __push_notification($message_input, $token_array) { $message = stripslashes($message_input); $passphrase = 'xxxxxx'; $cert = realpath('xxx.pem'); $payload = '{ "aps" : { "alert" : "'.$message.'", "badge" : 1, "sound" : "bingbong.aiff" } }'; $ctx = stream_context_create(); stream_context_set_option($ctx, 'ssl', 'local_cert', $cert); stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase); $fp = stream_socket_client('ssl://gateway.sandbox.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx); if (!$fp) { // echo "Failed to connect $err $errstr <br>"; return; } else // echo "Post notification sent<br>"; $dev_array = array(); $dev_array = $token_array; foreach ($dev_array as $device_token) { $msg = chr(0) . pack("n", 32) . pack('H*', str_replace(' ', '', $device_token)) . pack("n", strlen($payload)) . $payload; // echo "sending message :" . $payload . "n"; fwrite($fp, $msg); } fclose($fp); } 

Если вы все еще не можете отправить уведомление, проверьте это уведомление об устранении неполадок

редактировать

Я смотрел на ваш push push push, некоторое время назад, тогда я заметил, что ваш 'badge' => "+1" Вы не можете увеличить значок таким образом.

Единственный вариант – управлять им в своем приложении и использовать базу данных для отслеживания.

и, возможно, это вызывает проблему .. и badge должен быть числом, здесь: Таблица 3-1

А также проверить, что это обсуждение может помочь вам.

В режиме производства не используйте URL песочницы

  $fp = stream_socket_client( "ssl://gateway.push.apple.com:2195", $err, $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx); 

Yup .. наконец, я получил решение.

Проблема в порте. Я использую сервер Bluehost. Bluehost блокирует порт, который используется push-уведомлением. Теперь я изменил свой сервер и уведомления, работающие на меня. Спасибо всем