如何发送具有纯PHP苹果MDM推送通知?(How to send an apple mdm push

2019-08-01 20:43发布

我做了一个苹果MDM-OTA服务器的IOS至今。 这些器件可提供以下我的东西到服务器(在plist中/ XML的形式):

-push魔令牌-Device令牌(在B64格式OO)-PN-主题(com.apple.mgmt.xxx)-udid(以十六进制编码)-UnlockToken(很长的B64编码的东西)

我需要发送以下内容来自苹果推送通知的事情:

{ “MDM”: “pushMagic”}

Pushmagic =推送魔术令牌

我需要如何撰写我需要编写到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);

[...]

$误差为0 $ wellwrittentoken =设备令牌以十六进制代码$ apns_xx - 在SSL的事情似乎工作,因为它给了错误消息,因为它没有mdminitialpush $ - 我的消息,我想送

Answer 1:

我没有看到你设置的流时,包括你的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);


Answer 2:

使用这个PHP代码http://d1xzuxjlafny7l.cloudfront.net/downloads/SimplePush.zip

或者去这个链接http://www.raywenderlich.com/32960/apple-push-notification-services-in-ios-6-tutorial-part-1



Answer 3:

使用此 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();
}


文章来源: How to send an apple mdm push notification with plain php?