node.js — Как я могу вызвать свой скрипт Apple Push Notification через PHP? (уже работает в ssh)

Я никогда не останавливался на node.js, однако теперь мне нужно было, чтобы иметь возможность реализовывать push-уведомления в моем приложении для iPhone.

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

Я могу запустить скрипт через ssh, и он работает нормально.

Я создал скрипт php со следующим кодом …

<?php
$output = shell_exec("/home1/devjustin/nodejs/bin/node /home1/devjustin/apns/index.js 2>&1");
print_r ($output);
?>

Теперь вот моя проблема …

Если я запускаю этот php-скрипт через свой браузер, я не получаю всплывающее уведомление на моем телефоне. Сценарий php действительно взаимодействует со сценарием узла, но, похоже, он не работает в самом конце сценария узла, без какого-либо объяснения вообще, без каких-либо отображаемых ошибок.

Если я запускаю скрипт php в ssh через, php mobile-push.php, это работает, как я надеялся, и я получаю уведомление на моем телефоне.

Итак, после нескольких дней, а я имею в виду буквально дни, я не смог найти решение.

Мне было интересно, возможно, это был мой хозяин. В настоящее время я использую общий сервер через hostgator, хотя кажется, что все необходимые мне разрешения доступны и активны.

Любая помощь будет очень признательна. Если вы хотите, чтобы я привел примеры, я рад.

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

П.С .: Я создал несколько строк console.log в моем скрипте узла, и все они отображаются при запуске скрипта php через мой браузер, за исключением отпечатков консоли, окружающих следующий сегмент моего скрипта узла:

// index.js
// Actually send the notification
apnProvider.send(notification, deviceToken).then(function(result) {
console.log(result);
});

С Уважением,

Джастин.

С уважением к обсуждению ниже с Эдвином:

console - starting
console - tokens set...
console - second last stage
console for apnProvider - EventEmitter {
client:
Client {
config:
{ token: [Object],
ca: null,
passphrase: null,
production: false,
address: 'api.development.push.apple.com',
port: 443,
rejectUnauthorized: true,
connectionRetryLimit: 10,
heartBeat: 60000 },
endpointManager:
EventEmitter {
domain: null,
_events: [Object],
_eventsCount: 2,
_maxListeners: undefined,
_endpoints: [],
_endpointIndex: 0,
_config: [Object],
_connectionFailures: 0 },
queue: [] },
domain: null,
_events: {},
_eventsCount: 0,
_maxListeners: undefined }

//notification console output
{ encoding: 'utf8',
payload: { id: 123 },
compiled: false,
aps:
{ badge: 3,
sound: 'ping.aiff',
alert:
{ body: '[Cancelled] Friday, 4th of August at 3:00PM.',
title: 'Business Name' } },
expiry: 1501839082,
priority: 10,
topic: 'com.mybundleid.mybundleid' }

Я запустил скрипт по php, и это точка останова. Может ли кто-нибудь помочь мне понять это?

console - tokens set...
console - second last stage
open("/proc/meminfo", O_RDONLY|O_CLOEXEC) = 10 --- SIGABRT {si_signo=SIGABRT, si_code=SI_TKILL, si_pid=26871, si_uid=638} --- +++ killed by SIGABRT +++

0

Решение

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

Поскольку это был не тот вариант, который я был готов использовать, я вместо этого удалил скрипт узла и переписал всю систему уведомлений о push-рассылках в php, используя эти три ссылки, которые я нашел здесь, на SO в качестве своих ресурсов (если кому-то еще нужна помощь с отправкой на сервер).

Отправка нескольких push-уведомлений iphone + APNS + PHP + Tutorial

Создать файл .pem Используется для настройки Apple PUSH Notification

APNS PHP JSON Структура полезной нагрузки

Теперь я могу автоматически отправлять push-уведомления через приложение, используя скрипт php. Таким образом, с помощью некоторого дополнительного php пользователи теперь смогут взаимодействовать друг с другом посредством push-уведомлений яблок в приложении или на веб-платформе.

С Уважением,

Джастин.

0

Другие решения

Других решений пока нет …