详解IOS开发中生成推送的pem文件

发布时间 - 2026-01-11 02:46:20    点击率:

详解IOS开发中生成推送的pem文件

具体步骤如下:

        首先,需要一个pem的证书,该证书需要与开发时签名用的一致。 具体生成pem证书方法如下:

1. 登录到 iPhone Developer Connection Portal(http://developer.apple.com/iphone/manage/overview/index.action )并点击 App IDs

2. 创建一个不使用通配符的 App ID 。通配符 ID 不能用于推送通知服务。例如,  com.itotem.iphone

3. 点击App ID旁的“Configure”,然后按下按钮生产 推送通知许可证。根据“向导” 的步骤生成一个签名并上传,最后下载生成的许可证。

4. 通过双击.cer文件将你的 aps_developer_identity.cer 引入Keychain中。

5. 在Mac上启动 Keychain助手,然后在login keychain中选择 Certificates分类。你将看到一个可扩展选项“Apple Development Push Services”

6. 扩展此选项然后右击“Apple Development Push Services” > Export “Apple Development Push Services ID123”。保存为 apns-dev-cert.p12文件。

7. 扩展“Apple Development Push Services” 对“Private Key”做同样操作,保存为 apns-dev-key.p12 文件。

8. 需要通过终端命令将这些文件转换为PEM格式:

openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12
openssl pkcs12 -nocerts -out apns-dev-key.pem -in apns-dev-key.p12

9. 如果你想要移除密码,要么在导出/转换时不要设定或者执行:

openssl rsa -in apns-dev-key.pem -out apns-dev-key-noenc.pem

10. 最后,你需要将键和许可文件合成为apns-dev.pem文件,此文件在连接到APNS时需要使用:

cat apns-dev-cert.pem apns-dev-key-noenc.pem > apns-dev.pem

实现代码:

<?php      
$_POST['token'] = "fe28006a9d57b0727514cf42e9549446f0d4fc509cdexxxxxxxxxx"; 
    $deviceToken = $_POST['token']; //取得设备的Token,获取方法便见下文    
    $body = array("aps" => array("alert" => "message123gggg32323333", "badge" => 1, "sound"=>'default')); //推送方式,包括了提示内容,提示方式和提示声音。 
     
    $ctx = stream_context_create(); 
     
    //如果在Windows的服务器上,寻找pem路径会有问题,路径修改成这样的方法: 
    $pem = !empty($this->cfg['isga']) && $this->cfg['isga'] == 2?'apns-dev.pem':'apns-dev.pem'; //临时全部为开发状态 
    stream_context_set_option($ctx, 'ssl', 'local_cert', "/data/web/cert/".$pem); 
    //linux 的服务器直接写pem的路径即可 
     
    stream_context_set_option($ctx, 'ssl', 'local_cert', <pre name="code" class="html">"/data/web/cert/".$pem); 
<pre name="code" class="html"><pre name="code" class="html">    //如果你的pem存有密码,需要加一个密码登陆语句   
stream_context_set_option($ctx, 'ssl', 'passphrase', ''); 
     
    //如果你的pem存有密码,需要加一个密码登陆语句     
    //$pass = ”123123“; 
    //stream_context_set_option($ctx, ‘ssl', ‘passphrase', $pass); 
     
    //此处有两个服务器需要选择,如果是开发测试用,选择第二名sandbox的服务器并使用Dev的pem证书,如果是正是发布,使用Product的pem并选用正式的服务器     
    $fp = stream_socket_client("ssl://gateway.push.apple.com:2195", $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx); 
     
    $fp = stream_socket_client("ssl://gateway.sandbox.push.apple.com:2195", $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx); 
     
    if (!$fp) {     
      print_r("Failed to connect $err $errstrn");     
      return;     
    }     
    print_r("Connection OK\n");     
    $payload = json_encode($body);     
    $msg = chr(0).pack("n", 32).pack('H*', str_replace(' ', '', $deviceToken)).pack("n",strlen($payload)).$payload;         
    print_r("sending message :".$payload."\n");     
    fwrite($fp, $msg);     
    fclose($fp); 


以上就是IOS开发中生成推送的pem文件的实例详解,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# IOS开发中生成推送的pem文件  # IOS开发中生成推送的pem文件的实现方法  # iOS开发中ViewController的页面跳转和弹出模态  # iOS毛玻璃效果的实现及图片模糊效果的三种方法  # iOS内存错误EXC_BAD_ACCESS的解决方法  # iOS开发中WebView的基本使用方法简介  # IOS获取各种文件目录路径的方法  # iOS开发中实现显示gif图片的方法  # iOS中使用schema协议调用APP和使用iframe打开APP的例子  # 保存为  # 会有  # 如有  # 希望能  # 双击  # 按下  # 你将  # 谢谢大家  # 转换为  # 连接到  # 创建一个  # 要使  # 你想要  # 移除  # 右击  # 方法如下  # 时需  # 便见  # 疑问请  # 器上 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 移动端脚本框架Hammer.js  Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】  详解jQuery停止动画——stop()方法的使用  专业商城网站制作公司有哪些,pi商城官网是哪个?  php打包exe后无法访问网络共享_共享权限设置方法【教程】  javascript中的try catch异常捕获机制用法分析  Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】  Firefox Developer Edition开发者版本入口  js实现获取鼠标当前的位置  如何在云主机上快速搭建网站?  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解  如何在Windows环境下新建FTP站点并设置权限?  昵图网官网入口 昵图网素材平台官方入口  悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】  什么是JavaScript解构赋值_解构赋值有哪些实用技巧  如何快速配置高效服务器建站软件?  Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决  独立制作一个网站多少钱,建立网站需要花多少钱?  常州企业网站制作公司,全国继续教育网怎么登录?  🚀拖拽式CMS建站能否实现高效与个性化并存?  高性能网站服务器部署指南:稳定运行与安全配置优化方案  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  如何快速查询网站的真实建站时间?  1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤  如何在 React 中条件性地遍历数组并渲染元素  C语言设计一个闪闪的圣诞树  如何生成腾讯云建站专用兑换码?  如何在不使用负向后查找的情况下匹配特定条件前的换行符  如何在IIS7上新建站点并设置安全权限?  iOS验证手机号的正则表达式  谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程  北京网站制作的公司有哪些,北京白云观官方网站?  html5audio标签播放结束怎么触发事件_onended回调方法【教程】  北京的网站制作公司有哪些,哪个视频网站最好?  Linux系统命令中screen命令详解  Laravel如何实现一对一模型关联?(Eloquent示例)  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  WordPress 子目录安装中正确处理脚本路径的完整指南  如何挑选高效建站主机与优质域名?  Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】  Python自然语言搜索引擎项目教程_倒排索引查询优化案例  HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】  Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置  JavaScript如何实现音频处理_Web Audio API如何工作?  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?