iPhone 消息推送(Push Notification)的实现-------搭建 APNS 环境

本文详细介绍了iOS设备接收Push通知的原理及配置过程,包括创建AppID、ProvisioningProfile和DeviceToken等关键步骤。

 

 1、Push 的原理:
Push 的工作机制可以简单的概括为下图



 

图中,Provider 是指某个 iPhone 软件的 Push 服务器,这篇文章我将使用.net 作为 Provider。
APNS 是 Apple Push Notification Service(Apple Push 服务器)的缩写,是苹果的服务器。
上图可以分为三个阶段。
第一阶段:.net 应用程序把要发送的消息、目的 iPhone 的标识打包,发给 APNS。
第二阶段:APNS 在自身的已注册 Push 服务的 iPhone 列表中,查找有相应标识的 iPhone,并把消息发到 iPhone。
第三阶段:iPhone 把发来的消息传递给相应的应用程序, 并且按照设定弹出 Push 通知。




 
 
从上面的流程图中,可以看到一个能接收推送通知的 App,需要 3 个东西:

从上面的流程图中,可以看到一个能接收推送通知的 App,需要 3 个东西:
• App ID(唯一标识一个 App 程序)
• Provisioning Profile(App 程序的发布需要它,所以推送通知只能在真机上测试)
• Device Token(设备标识,这个是推送通知功能中特有的)
而能推送通知的服务器端则要 2 个东西:
• SSL Certificate
• Private Key
值得注意的是 APNS(ApplePush Notification Service) Server,完成发送 Device Token 和通知内容的功
能,而且这 2 个动作都是被动的,即第一个动作是由 App 发起的,第二个则是推送通知的服务器发起的。
2、创建 App ID
首先,登录到 http://developer.apple.com/devcenter/ios/index.action 购买 iPhone Develop Progra
m(iDP),如果已经购买登录进去后,页面右上角会看到如下图所示的页面:


点击第一项:iOS Provisioning Portal,然后会看到下面的页面:



点击进入 Certificates,然后看到如下所示的页面:
点击图中的 click here to download now,这会下载下来一个 AppleWWDRCA.cer 文件,这是调试以及发
布 iOS 应用必须的一个文件,这个文件只要下载一次就够了,即使你有多个 iDP,无论是调试程序,还是发布
程序,也只需要一个。如果已经下载过,那么就不用再下载这个了


点击“New App ID”按钮后,如下

Description 的内容可以任意,Bundle Identifier (App ID Suffix)必须和创建 App 工程时的 Bundle
Identifier,如下
点击“Submit”后,点击左侧导航中的“App IDs”,找到刚才新创建的 App ID,如下



点击“Configure”后,如下


勾选“Enable for Apple Push Notification service”,然后点击红色的“Configure”按钮,这里暂时只针对Development 取得证书。弹出一个对话框,如下



 

点击“Continue”后,要我们上传一个 CSR 文件,如下



 

下面使用钥匙串访问(KeychainAccess)应用程序创建上面需要的 CSR 文件(.certSigningRequest 文
件)
3、创建 CSR 文件
Keychain Access 位于/Applications/Utilities 目录中,打开它如下


然后弹出窗口如下:



 

点击继续:




 
 

点击存储:





 
 
 

然后,点击继续,这时就会在你的桌面上生成一个 CertificateSigningRequest.certSigningRequest 文件.




 
 

回到下面的网页中,上传刚才用 KeychainAccess 产生的 HelloRemoteNotification.certSigningRequest文件。



 

很快需要的证书就 OK 了,如下



 

点击“Continue”,然后点击“Done”。

 

发现上面的 Status 是 Enabled,而且多了“Download”按钮,点击它,下载了一个名为
“aps_development.cer”的文件。双击打开它


找到上图中“Keys”栏中名为“HelloRemoteNotification”的 private key(注意是 private key,而不是
public key),右击它,选择“Export “HelloRemoteNotification”...”,这样会导出一个 push.p12 文件
(需要输入密码),如下(目前共有 3 个文件)


下面开始用刚才产生的 push.p12 文件,创建 Profile provision 文件
接着,打开 Devices 那一项,出来如下图所示页面:


点击右上角的 Add Devices,出现下图所示页面:


给自己的设备取个名字,例如:iPhone,Device ID 就是设备的机身号(40 位),机身号可以通过 Xcode 的
window 菜单下的 Organizer 来获得。填写完了以后,点击 Submit 就可以了。
99 美元的帐号允许绑定 100 台移动设备。


4、创建 ProvisioningProfile 文件


在上图中,点击“New Profile”按钮后,如下

填写“Profile Name”;勾选“Certificate”;“App ID”选择正确的、之前我们创建的 ID,即
PushNotification;最后关联需要测试真机设备。点击“Submit”,如下

可以看到多了一个 Provisioning Profile 文件,点击“Download”按钮下载它,这时我们一共产生 4 个文件,
如下


双击“PushNotification.mobileprovision”文件,或把它拖入到 Xcode 中。





5、创建.pem 文件
• 将已有的.cer 文件转成.pem 文件
• 将已有的.p12 文件转成.pem 文件(需要输入密码)
• 最后将上面 2 个.pem 文件合并成 1 个.pem 文件(需要输入新密码)
cd 进入证书所在目录
把.cer 文件转换成.pem 文件:

 

$ openssl x509 -in aps_developer_identity.cer -inform der -out PushChatCert.pem

 

把私钥 Push.p12 文件转换成.pem 文件:

 

$ openssl pkcs12 -nocerts -out PushChatKey.pem -in Push.p12

 

Enter Import Password:
MAC verified OK
Enter PEM pass phrase:
Verifying – Enter PEM pass phrase:
你首先需要为.p12 文件输入 passphrase 密码短语,这样 OpenSSL 可以读它。然后你需要键入一个新的密码短语来加密 PEM 文件。还是使用”pushchat”来作为 PEM 的密码短语。你需要选择一些更安全的密码短语。
注意:如果你没有键入一个 PEM passphrase,OpenSSL 将不会返回一个错误信息,但是产生的.pem 文件里面将不会含有私钥。

最后。把私钥和证书整合到一个.pem 文件里:


$ cat PushChatCert.pem PushChatKey.pem > ck.pem


为了测试证书是否工作,执行下面的命令:


$ telnet gateway.sandbox.push.apple.com 2195


Trying 17.172.232.226...
Connected to gateway.sandbox.push-apple.com.akadns.net.
Escape character is ‘^]’.
它将尝试发送一个规则的,不加密的连接到 APNS 服务。如果你看到上面的反馈,那说明你的 MAC 能够到
达APNS。按下 Ctrl+C 关闭连接。如果得到一个错误信息,那么你需要确保你的防火墙允许 2195 端口。
然后再次连接,这次用我们的 SSL 证书和私钥来设置一个安全的连接:


$ openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert PushChatCert.pem -key PushChatKey.pem


Enter pass phrase for PushChatKey.pem:
你会看到一个完整的输出,让你明白 OpenSSL 在后台做什么。如果连接是成功的,你可以键入一些字符。
你按下回车后,服务就会断开连接。如果在建立连接时有问题,OpenSSL 将会给你一个错误消息,
ck.pem 文件就是我们需要得到 Push 服务器 连接 APNS 的文件。


 


毫米波雷达系统工作在毫米波频段,通过发射与接收电磁波并解析回波信号,实现对目标的探测、定位及识别。相较于传统雷达技术,该系统在测量精度、环境抗干扰性及气象适应性方面表现更为优越。本研究聚焦于德州仪器开发的IWR1843DCA1000型号毫米波雷达,系统探究其在多模态数据采集与多样化应用场景中的技术路径及创新实践。 IWR1843DCA1000传感器为一款高度集成的毫米波探测设备,采用调频连续波技术与多输入多输出架构,可执行高精度目标测量及成像任务。研究过程中,团队对该设备的性能参数进行了全面评估,并在下列领域展开应用探索: 在数据采集环节,借助专用硬件接口连接雷达传感器,实现原始信号的高效捕获。团队研发了配套的数据采集程序,能够实时记录传感器输出并执行初步信号处理,为后续分析构建数据基础。 通过构建FMCW-MIMO雷达仿真平台,完整复现了雷达波的发射接收流程及信号处理机制。该仿真系统能够模拟目标运动状态及环境变量对雷达波形的影响,为系统性能验证与参数优化提供数字化实验环境。 基于高分辨率测距能力,结合目标检测与轨迹追踪算法,实现对人体运动模式的精确重构。通过点云数据的解析,为行为模式分析与场景理解提供多维信息支撑。 利用雷达回波信号的深度解析,生成表征人体空间分布的热力图像。该技术为复杂环境下的定位问题提供了直观可视化解决方案。 针对精细手势动作的识别需求,应用机器学习方法对雷达生成的点云序列进行特征提取与模式分类,建立手势动作的自动识别体系。 通过分析人体表面对毫米波信号的反射特性,开发非接触式生理参数监测方法,可有效检测呼吸韵律与心脏搏动频率等生命体征指标,为健康监护领域提供新的技术途径。 本研究的顺利开展,不仅深化了IWR1843DCA1000雷达系统的应用研究层次,同时为毫米波技术在多元领域的拓展应用建立了技术支撑体系。通过实证分析与仿真验证相结合的研究模式,该项目为行业应用提供了可靠的技术参照与实践范例,有力推动了毫米波雷达技术的产业化进程。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
基于直接模拟蒙特卡洛(DSMC)方法的气体分子运动仿真工具,为微观尺度气体动力学研究提供数值计算支持。该计算工具通过统计方法模拟稀薄条件下气体粒子的运动轨迹与碰撞行为,适用于航空航天工程、微纳流体系统等存在低密度气体效应的技术领域。 为便于高等院校理工科专业开展数值仿真教学,开发者采用矩阵实验室(Matlab)平台构建了模块化仿真程序。该程序兼容多个Matlab发行版本(2014a/2019b/2024b),内置标准化案例数据集可实现开箱即用。程序架构采用参数化设计理念,关键物理参数均通过独立变量模块进行管理,支持用户根据具体工况调整分子数密度、边界条件和碰撞模型等参数。 代码实现遵循计算流体力学的最佳实践规范,主要特征包括:采用分层模块架构确保算法逻辑清晰,关键计算单元配备完整的物理注释,变量命名符合工程仿真惯例。这种设计既有利于初学者理解分子动力学模拟原理,也方便研究人员进行算法改进与功能拓展。 该教学工具主要面向计算机科学、电子工程、应用数学等专业的本科教学场景,可用于课程实验、综合设计项目及学位论文等学术活动。通过将抽象的气体动力学理论转化为可视化的数值实验,有效促进学生对统计物理与计算方法的融合理解。在工程应用层面,该工具能胜任微机电系统流场分析、高海拔空气动力学特性研究、纳米孔道气体输运等现象的定量评估。 随着微纳制造与空间技术的发展,稀薄气体仿真在半导体工艺优化、临近空间飞行器设计等前沿领域的应用价值日益凸显。本仿真工具通过提供可靠的数值实验平台,为相关领域的科研创新与人才培养提供技术支持。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值