-Push Magic Token - 设备令牌(b64格式oO) -PN-Topic(com.apple.mgmt.xxx) -UDID(十六进制代码) -UnlockToken(一个很长的b64编码的东西)
我需要将以下内容发送到apple的推送通知中:
{“mdm”:“pushMagic”}
Pushmagic = Push Magic Token
我需要如何编写我需要写入apns套接字的数据?我尝试了一个适用于其他推送通知的那个,但为此它没有。没有发生任何事情: - (。
$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为0。 $ wellwrittentoken =十六进制代码中的设备令牌 $ apns_xx - ssl似乎工作,因为它给出了错误消息,因为它没有 $ mdminitialpush - 我要发送的消息
答案 0 :(得分:4)
设置流时,我没有看到您包含了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);
答案 1 :(得分:0)
使用此php代码http://d1xzuxjlafny7l.cloudfront.net/downloads/SimplePush.zip
或转到此链接 http://www.raywenderlich.com/32960/apple-push-notification-services-in-ios-6-tutorial-part-1
答案 2 :(得分:0)
使用this libray
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();
}