Как отправить Apple MDM Push-уведомление с простым PHP?
Я сделал Apple-MDM-OTA-сервер для IOS до сих пор. Устройства доставляют на сервер следующие вещи (в виде plist / xml):
-Push Magic Token -Device Token (в формате b64 oO) -PN-Topic (com.apple.mgmt.xxx) -UDID (в hex-коде) -UnlockToken (очень длинная вещь, закодированная в b64)
Мне нужно отправить следующий контент на push-уведомления от Apple:
{ "MDM": "pushMagic"}
Pushmagic = Жетон Волшебства Пуша
Как мне нужно собрать данные, которые мне нужно записать в сокет apns? Я попробовал тот, который работает для других push-уведомлений, но для этого это не так. Там просто ничего не происходит:-(.
$apns_url = 'gateway.push.apple.com';
[...]
$apns = stream_socket_client('ssl://' . $apns_url . ':' . $apns_port,
$error, $error_string, 2, STREAM_CLIENT_CONNECT, $stream_context);
fwrite($apns, chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ',
'', $wellWrittenToken)) . chr(0) . chr(strlen($mdmInitialPush)) .
$mdmInitialPush);
[...]
$error is 0. $wellwrittentoken = the device-token in hex-code $apns_xx - The ssl thing seems to work, because it gave error message as it didn't $mdminitialpush - my message I want to send
3 ответа
Я не видел, чтобы вы включили свой ключ APNS при настройке потока. Вот (примерно) то, что мы делаем:
$apns_certkey_path = '/path/to/cert/and/key/file' ;
$streamContext = stream_context_create();
stream_context_set_option($streamContext, 'ssl', 'local_cert', $apns_certkey_path);
$apns = stream_socket_client(
'ssl://' . $apns_url . ':' . $apns_port,
$error,
$errorString,
2, // timeout
STREAM_CLIENT_CONNECT,
$streamContext
);
$payload = json_encode(array('mdm' => $PushMagic));
$apnsMessage = chr(0) . chr(0)
. chr(32) . base64_decode($ApnsTokenB64)
. chr(0) . chr(strlen($payload)) . $payload;
fwrite($apns, $apnsMessage);
Используйте этот php код http://d1xzuxjlafny7l.cloudfront.net/downloads/SimplePush.zip
или перейдите по этой ссылке http://www.raywenderlich.com/32960/apple-push-notification-services-in-ios-6-tutorial-part-1
Использовать этот библиотека
function push_device($data) {
$push = new ApnsPHP_Push(
ApnsPHP_Abstract::ENVIRONMENT_PRODUCTION,
'../MyPushCert.pem'
);
$push->connect();
$message = new ApnsPHP_Message_Custom($data["Token"]);
$message->setCustomProperty('mdm', $data["PushMagic"]);
$push->add($message);
$push->send();
$push->disconnect();
}