美文网首页
IOS企业级推送证书制作及本地推送验证小记

IOS企业级推送证书制作及本地推送验证小记

作者: 银桑呀 | 来源:发表于2018-04-25 23:26 被阅读0次

        做IOS开发也有好几年了,期间免不了要跟证书打交道,记得因为证书被坑了N次,每次制作或者更新都要百度谷歌一番,为此抽出点时间将自己制作推送证书的过程记录下来,加深记忆的 同时,希望也能帮到为此困惑的亲们。(ps:开发狗都不容易啊╮(╯▽╰)╭)

1.打开钥匙串,制作证书请求文件(这一步就不多说了,不会的请右转)

在证书助理里填写相关字段,注:常用名称对应钥匙串里生成后的密钥对名称

点击继续,本地存储certSigningRequest文件后,可以在钥匙串里看到对应的密钥信息,

2.制作推送证书

登录苹果开发者中心https://developer.apple.com/,进入 account,进入Profiles,选择第一项certificates/production(以发布推送证书为例,制作开发版推送证书与此相同),点击右上角 “+”,创建证书。

选择“In-House and Ad Hoc”(企业级),并点击下一步

下一步直到选择上传CSR文件界面,这个CSR File 就是我们从证书助理请求生成的文件,上传然后下一步,选择要绑定的app id(即要实现推送服务的APP ID),完成创建。




2.制作后台可用的推送证书相关文件

      下载已生成的推送证书存储至本地:aps.cer,双击安装到钥匙串。找到已安装的证书,导出并设置密码,得到appPushKey.p12 文件

目前为止 已有 appPush.certSigningRequest(证书请求文件)

                         aps.cer (原始推送证书)

                         appPushKey.p12(安装推送证书后,从钥匙串导出的加密P12文件)

格式转换:

openssl x509 -in aps.cer -inform DER -out appPushCert.pem-outform PEM (将aps.cer转换为pem格式文件)

openssl pkcs12 -nocerts -out appPushKey.pem-in appPushKey.p12  (将appPushKey.p12转换为pem格式文件)

cat appPushCert.pem appPushKey.pem >AllInOne.pem (得到可以供php调用的pem文件)

openssl pkcs12 -export -in AllInOne.pem -out AllInOne.p12 (得到可以供java后台调用的p12文件)

全部过程完成后,可以对推送证书进行验证:

openssl s_client -connect gateway.sandbox.push.apple.com:2195-cert appPushCert.pem-key appPushKey.pem

出现类似截图信息 则表示推送证书有效可用。

3.后台服务测试代码

PHP:

// Put your device token here (without spaces):

$deviceToken = 'f46bdb2a34c3f8e02c50c1f4213cf1aa9a2bd4fadfba5876da1c7f432a15ceb4';

//    $deviceToken = '1843D7E2-97A6-44F8-9A2E-E18A8D516A6A';

// Put your private key's passphrase here:密语

$passphrase = 'wangfeng1990';

// Put your alert message here:

$message = '新的待办任务hahahah!';

////////////////////////////////////////////////////////////////////////////////

$ctx = stream_context_create();

stream_context_set_option($ctx, 'ssl', 'local_cert', 'AllInOne.pem');

stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);

//gateway.sandbox.push.apple.com:2195

// Open a connection to the APNS server

$fp = stream_socket_client(

'ssl://gateway.push.apple.com:2195', $err,

$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);

if (!$fp)

exit("Failed to connect: $err $errstr" . PHP_EOL);

echo 'Connected to APNS' . PHP_EOL;

// Create the payload body

$body['aps'] = array(

'alert' => $message,

'sound' => 'default',

    'badge' => '1'

);

// Encode the payload as JSON

$payload = json_encode($body);

// Build the binary notification

$msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload;

// Send it to the server

$result = fwrite($fp, $msg, strlen($msg));

if (!$result)

echo 'Message not delivered' . PHP_EOL;

else

echo 'Message successfully delivered' . PHP_EOL;

// Close the connection to the server

fclose($fp);

?>

相关文章

  • IOS企业级推送证书制作及本地推送验证小记

    做IOS开发也有好几年了,期间免不了要跟证书打交道,记得因为证书被坑了N次,每次制作或者更新都要百度谷歌一...

  • iOS开发环境相关(3)——证书制作

    这里的证书不包含推送证书,如果需要制作推送证书,移步iOS开发环境相关(4)——推送证书 开发者证书制作 证书主要...

  • 苹果推送证书上传到极光平台出现到错误

    苹果推送证书上传到极光平台出现到错误 本地苹果推送证书上传到极光推送平台时,总是验证失败,后来发现 导出证书的时候...

  • iOS8-推送(本地和远程)的简单使用

    参考文章:本地推送:一、iOS推送之本地推送(iOS Notification Of Local Notifica...

  • iOS推送证书制作

    对于APNS证书,要分别制作开发证书和生产证书,不同环境下使用不同的证书,但是对于VoIP证书只有一个,不过在服务...

  • 技术在于交流,知识在于收集(十一)

    收集的一些iOS开发技术博客与牛人共同进步 证书推送上架 iOS远程推送原理及实现过程(证书、iOS端代码、Jav...

  • 申请iOS推送证书p12

    iOS APP需要推送通知,要用到iOS推送证书,分为测试调试用的iOS推送证书(开发环境)和上架到App Sto...

  • 推送

    制作推送证书 iOS工程开发指引中对推送流程的概括如下 服务端的Provider通过APNs将信息推送给Clien...

  • ios推送证书配置

    ios推送证书配置 ios的消息推送需要配置推送证书,这和打包证书是两个不同的证书。这里简单介绍下大致的流程。以下...

  • 百度云推送证书无效解决方案

    公司的iOS推送证书即将到期,重新生成一个证书,按照文档制作出pem文件 上传到百度云推送的时候提示证书无效。经过...

网友评论

      本文标题:IOS企业级推送证书制作及本地推送验证小记

      本文链接:https://www.haomeiwen.com/subject/gaeulftx.html