Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование iOS/iPhone

Войти
Регистрация
Восстановить пароль
 
mercooliy
6 / 6 / 0
Регистрация: 12.05.2013
Сообщений: 143
#1

APNS на PHP - Программирование iOS

18.06.2014, 21:58. Просмотров 907. Ответов 2
Метки нет (Все метки)

Привет всем, кто нить запускал на хостинге под php сервер уведомлений, вроде нашел при помощи stream_socket_client, но не работает. Мож это вообще не реально ? поделитесь опытом. спс
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.06.2014, 21:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос APNS на PHP (Программирование iOS):

APNS после выпуска в AppStore - Программирование iOS
Отлично работали нотификации на девелопмент сертификате и песочнице (sandox) APNS. Но после выхода в сторе и смене сертификата (сделал pem...

Как, использующие php, сайты имеют расширение страниц html, но не php? - PHP
Сабж. Собственно говоря, сайты наверняка построены с использованием PHP, но при этом страница может иметь расширение html. Либо страница...

Средствами PHP и с использованием ООП php создать реализацию следующего интерфейса: - PHP ООП
interface ArrayHelperInterface extends IteratorAggregate, ArrayAccess, Countable { /** * @param...

Вытащить переменную из цикла PHP в функцию JS, и через AJAX обратно в PHP - JavaScript
Здравствуйте! Моя задача сделать форму обратной связи, но не самую простую. Изначально на форме отображается список элементов, уже...

Ошибка PHP Startup: Unable to load dynamic library в RAPID PHP - PHP
Здравствуйте! у меня при работе с пхп редактором возникает ошибка. Не находит библиотеки. Причем выдает не правильный путь вместо...

Работа с несколькими таблицами из БД в одном create.php и update.php в YII2 - PHP
Всем привет. Нужна ваша помощь. В общем есть 3 таблицы в БД, в первой хранятся "Темы", во второй хранятся "Вопросы", третья таблица служит...

2
glvrzzz
95 / 71 / 12
Регистрация: 12.12.2012
Сообщений: 214
19.06.2014, 13:34 #2
https://github.com/duccio/ApnsPHP
2
mercooliy
6 / 6 / 0
Регистрация: 12.05.2013
Сообщений: 143
19.06.2014, 23:49  [ТС] #3
А касательно сертификата, достаточно одного .pem который экспортирован вместе с ключом??? а то я где то читал что надо ещё какой то сертификат на сервак кидать???

Добавлено через 4 часа 28 минут
А вот такое должно работать?
а то библиотека криво запускается, autoload.php не загружает все классы...

просто ощущение что какой то косяк с сертификатами. так вроде соединение устанавливается в этом скрипте
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<? ini_set('display_errors', 1); 
error_reporting(E_ALL); 
$apnsHost = 'gateway.sandbox.push.apple.com';
$apnsCert = 'dev.pem';
$apnsPort = 2195;
//echo("start");
$streamContext = stream_context_create();
stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert);
stream_context_set_option($stream_context, 'ssl', 'passphrase', 'pass');
//stream_context_set_option($streamContext, 'ssl', 'verify_peer', false);
stream_context_set_option($streamContext, 'ssl', 'cafile', 'entrust.cer'); 
 
$apns = stream_socket_client('ssl://' . $apnsHost . ':' . $apnsPort, $error, $errorString,60 , STREAM_CLIENT_CONNECT, $streamContext);
 
if (!$apns) {
    echo "$errorString ($error)<br />\n";
}
if (file_exists($apnsCert)) 
       echo("cert file exists\n"); 
echo($apns);
echo($error);
 
$payload['aps'] = array('alert' => 'Oh hai!', 'badge' => 1, 'sound' => 'default');
$output = json_encode($payload);
//echo ($output);
$token = 'cf6cffe77ea5d3726cd5f546041ff04d4c1f2b72aa8bc286274b3b84031af85c';
//pack('H*', str_replace(' ', '', $token))
$apnsMessage = chr(0) . chr(0) . chr(32) . $token . chr(0) . chr(strlen($output)) . $output;
echo(fwrite($apns, $apnsMessage));
//echo($apnsMessage);
socket_close($apns);
fclose($apns);
?>
Добавлено через 2 часа 3 минуты
Разобрался.... вот он грааль)))) только я читал что типа нельзя просто php скрипт использовать для многотысячной рассылки, знает кто то, всё таки на сколько девайсов можно выслать без использование демонов

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
<?php
 
// Provide the Host Information.
 
$tHost = 'gateway.sandbox.push.apple.com';
 
$tPort = 2195;
 
// Provide the Certificate and Key Data.
 
$tCert = 'dev.pem';
 
// Provide the Private Key Passphrase (alternatively you can keep this secrete
 
// and enter the key manually on the terminal -> remove relevant line from code).
 
// Replace XXXXX with your Passphrase
 
$tPassphrase = 'XXXXX';
 
// Provide the Device Identifier (Ensure that the Identifier does not have spaces in it).
 
// Replace this token with the token of the iOS device that is to receive the notification.
 
$tToken = 'cf6cffe77ea5d3726cd5f546041ff04d4c1f2b72aa8bc286274b3b84031af85c';
 
// The message that is to appear on the dialog.
 
$tAlert = 'You have a LiveCode APNS Message';
 
// The Badge Number for the Application Icon (integer >=0).
 
$tBadge = 8;
 
// Audible Notification Option.
 
$tSound = 'default';
 
// The content that is returned by the LiveCode "pushNotificationReceived" message.
 
$tPayload = 'APNS Message Handled by LiveCode';
 
// Create the message content that is to be sent to the device.
 
$tBody['aps'] = array (
 
'alert' => $tAlert,
 
'badge' => $tBadge,
 
'sound' => $tSound,
 
);
 
$tBody ['payload'] = $tPayload;
 
// Encode the body to JSON.
 
$tBody = json_encode ($tBody);
 
// Create the Socket Stream.
 
$tContext = stream_context_create ();
 
stream_context_set_option ($tContext, 'ssl', 'local_cert', $tCert);
 
// Remove this line if you would like to enter the Private Key Passphrase manually.
 
stream_context_set_option ($tContext, 'ssl', 'passphrase', $tPassphrase);
 
// Open the Connection to the APNS Server.
 
$tSocket = stream_socket_client ('ssl://'.$tHost.':'.$tPort, $error, $errstr, 30, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $tContext);
 
// Check if we were able to open a socket.
 
if (!$tSocket)
 
exit ("APNS Connection Failed: $error $errstr" . PHP_EOL);
 
// Build the Binary Notification.
 
$tMsg = chr (0) . chr (0) . chr (32) . pack ('H*', $tToken) . pack ('n', strlen ($tBody)) . $tBody;
 
// Send the Notification to the Server.
 
$tResult = fwrite ($tSocket, $tMsg, strlen ($tMsg));
 
if ($tResult)
 
echo 'Delivered Message to APNS' . PHP_EOL;
 
else
 
echo 'Could not Deliver Message to APNS' . PHP_EOL;
 
// Close the Connection to the Server.
 
fclose ($tSocket);
 
?>
Добавлено через 8 минут
Кстати вот туториал полный http://lessons.runrev.com/s/lessons/...tions-with-ios
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.06.2014, 23:49
Привет! Вот еще темы с ответами:

Php+javascript В зависимости от клика вывести переменную php в новое окно - PHP
Есть код. В коде две ссылки. При нажатии на первую ссылку должно открыться окно (можно вкладка) и в него надо вписать что-нибудь одно. Если...

Вставить php-условие в html-код, который находится в php-коде - PHP
Выводится список из базы данных foreach($callbacklist as $call) { $ListCall.='&lt;tr&gt; &lt;td&gt;'.$call-&gt;datform.'&lt;/td&gt; ...

Задержка консоли при выполнении php скрипта через php.exe - PHP
Доброго времени суток! Я ассоциировал в total commander (внутренние ассоциации) файлы *.php с php.exe. Теперь при двойном щелчке у меня...

Как отправить переменные не просто в файл php, а в его php-функцию - jQuery
Доброго времени суток. Подскажите: можно ли и как передать переменные с помощью AJAX в функцию php. Сейчас делаю так: $.ajax({ ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru