苹果推送APNS

APNs 推送通知对接经验总结 本文是一篇关于APNs推送通知对接的经验总结,涵盖了从生成推送证书、代码签名证书和描述文件,到构建和部署iOS应用、获取设备令牌、服务器端发送推送通知的完整流程。文中强调了私钥和证书的安全性、证书与代码签名证书的区别、客户端配置的重要性以及证书有效期的管理。同时,还提供了关于推送通知无法到达设备、证书更新和设备令牌变化处理的常见问题解答。作者在文档中分享了详细的步骤和注意事项,旨在帮助IT工程师顺利完成APNs推送通知的对接工作。 阅读详情
开发状态服务器地址gateway.sandbox.push.apple.com 2195
产品状态服务器地址gateway.push.apple.com        2195

Development和Production两个版本对应的apnsdevice token是不同的,前者是develop的mobileprovision下获取的。后者是production的mobileprovision获取的。
Development和Production两个版本可以共用一个AppID(不推荐。共用时每次调试前都要删除设备上的app,重新打包生成。而且公用appid会经常抓狂,早上行,下午就不行了。所以不推荐),但是不能共用一个mobileprovision,所以要单独生成Distribution的证书供production版本使用。
注:Distribution的版本是无法在设备上debug调试的!
Development和Production两个版本的codesign是不同的,前者是iPhone Developer,后者是iPhone Distribution。注意不能搞错。

无论是Development Push SSLCertificate还是Production Push SSL Certificate都有过期时间的。Development Push SSLCertificate有效期大概四个月左右,而ProductionPush SSLCertificate的有效期是一年。需要注意在过期之前生成新的证书,以免影响使用。

opensslpkcs12 -clcerts -nokeys -out apns-dev-cert.pem -inapns-dev-cert.p12
opensslpkcs12 -nocerts -out apns-dev-key.pem -inapns-dev-cert.p12
openssl rsa-in apns-dev-key.pem -out apns-dev-key-noenc.pem
catapns-dev-cert.pem apns-dev-key-noenc.pem >apns-dev.pem

在Mac上生成 Apple推送通知SSL许可证:
 
    1.      登录到  iPhone Developer ConnectionPortal  并点击 App IDs
 
    2.      创建一个不使用通配符的 App ID  。通配符 ID不能用于推送通知服务。例如,我们的iPhone程序ID像这样:  AB123346CD.com.serverdensity.iphone
 
    3.      点击AppID旁的“Configure”,然后按下按钮生产  推送通知许可证。根据“向导”指导的步骤生成一个签名并上传,最后下载生成的许可证。此步骤在  Apple文档中  也有谈到。
 
    4.      通过双击.cer文件将你的 aps_developer_identity.cer 引入Keychain中。
 
    5.      在Mac上启动Keychain助手,然后在login keychain中选择 Certificates分类。你将看到一个可扩展选项“AppleDevelopment Push Services”
 
    6.      扩展此选项然后右击“Apple Development Push Services” > Export“Apple Development Push Services ID123”。保存为 apns-dev-cert.p12文件。
 
    7.      扩展“AppleDevelopment Push Services” 对“Private Key”做同样操作,保存为 apns-dev-key.p12文件。
 
    8.      需要通过终端命令将这些文件转换为PEM格式:
openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -inapns-dev-cert.p12
 
    9.      转换得到key的pem:
openssl pkcs12 -nocerts -out apns-dev-key.pem -inapns-dev-cert.p12
 
    10.      如果你想要移除密码,要么在导出/转换时不要设定或者执行:
openssl rsa -in apns-dev-key.pem -out apns-dev-key-noenc.pem
 
    11.      最后,你需要将键和许可文件合成为apns-dev.pem文件,此文件在连接到APNS时需要使用:
cat apns-dev-cert.pem apns-dev-key-noenc.pem >apns-dev.pem

将此文件保存为一个易记的名字,你有可能以后会用到它。上述步骤同样适合于生成产品许可证。

检验证书是否正确的方法:

$ telnetgateway.sandbox.push.apple.com 2195

Trying 17.172.232.226…

Connected togateway.sandbox.push-apple.com.akadns.net.

Escape character is ‘^]’.

它将尝试发送一个规则的,不加密的连接到APNS服务。如果你看到上面的反馈,那说明你的MAC能够到达APNS。按下Ctrl+C关闭连接。如果得到一个错误信息,那么你需要确保你的防火墙允许2195端口。

然后再次连接,这次用我们的SSL证书和私钥来设置一个安全的连接:

$ openssls_client -connectgateway.sandbox.push.apple.com:2195

-cert PushChatCert.pem-key PushChatKey.pem

Enter pass phrase for PushChatKey.pem:

你会看到一个完整的输出,让你明白OpenSSL在后台做什么。如果连接是成功的,你可以键入一些字符。当你按下回车后,服务就会断开连接。如果在建立连接时有问题,OpenSSL将会给你一个错误消息,但是你不得不向上翻输出LOG,来找到它。

当然上面要测试prodution版本是否正确的话,把gateway.sandbox.push.apple.com换成gateway.push.apple.com就好。




客户端很好做,申请证书,复制代码,就行了。
服务器端,如果是php的,那必须使用.pem的证书,如果是java的,那必须使用.p12的证书。(很可能还需要双击证书进行安装!)
服务器端发出的json包是有大小限制的,最大256字节,包括自定义字典集。
aps中的alert字符串里是可以添加"\n"做换行的。
json包中除了alert,badge,sound之外,还是是可以自定值的。

额外的自定义值:
  $payload['aps'] = array('alert' => 'This is thealert text', 'badge' => 1, 'sound' =>'default');
  $payload['server'] = array('serverId' =>$serverId, 'name' => $name);
  $output = json_encode($payload);
  当用户按下“View”后,自定义server值将被传递到设备中的程序。JSON 值如下:
  {
  "aps" :
 
                  { "alert" :
 
                                        {
 
                                            "action-loc-key" : "显示" ,
 
                                            "body" : "This is the alert text"
 
                                          },
 
                      "badge" : 1,
 
                      "sound" : "default" },
  "server" : { "serverId" : 1, "name" : "Server name")
  }
  256字节的限制适用于整个payload,包括自定义字典集。


  原生接口
  在ServerDensity中,一旦产生了一条提示,将建立一个payload并插入队列中。因此有必要时我们可以同时发送多个payload。
  Apple推荐使用这种方法,因为如果你在发送各payload时频繁连接和断开,APNS有可能会封锁你的IP。
  如Apple 描述:
  原生接口使用原生socket,具有二进制内容,采用数据流技术,不产生回馈。

高人的总结:
APPLE推送通知服务教程 PART-1
APPLE推送通知服务教程 PART-2
APPLE推送通知服务教程 PART-3
apns php版本:
https://code.google.com/p/apns-php/wiki/CertificateCreation

生成证书需要注意事项:
苹果开发者账号分好几种角色
Agent:代理人,拥有最高权限,可以访问iTunes Connect。
Admin:管理员,拥有管理成员、维护设备列表,维护APPID以及证书列表权限。
Member:普通成员,只读权限。

备注:3013.9.11经过测试,我发现前段时间苹果网站下线期间更新了证书生成机制。以前,利用钥匙串生成一个CSR文件,可以一直用。但是,现在每当你要生成证书,做generate的时候都需要提前重新生成一个CSR文件,否则你生成的证书都是无效的,假证书,尤其是PUSH的,服务端使用这种证书根本无法和APNS建立连接,这种诡异的问题超难跟踪的!希望看到这段话的人都能避免走弯路,不用谢了!
苹果推送机制(APNS) 苹果推送机制(APNS)苹果推送通知服务 (简称APNs) 是实现远程通知功能的主要内容. 它是一项将信息发送至 iOS 设备 (间接至 watchOS ), tvOS, OS X 设备强大且高效的服务. 每个设备都与 APNs 建立了一个可信任的加密的 IP 链接, 并使用这个持续链接来接受通知. 如果一个 app 有新的通知到达而这个 app 没有运行时, 设备会弹出提示框来告诉用户这个 ap 阅读详情

相关推荐

手把手教程:使用C#实现工业上位机开发

深入讲解如何利用C#进行上位机开发,涵盖通信协议与界面设计,助力掌握工业自动化核心技能。结合实际案例,让上位机开发更高效直观。

weixin_32480007的博客 2064

亲手教会你如何用苹果ios应用的推送

1. 什么是推送通知   消息通知分本地通知和远程推送通知,是没有运行在前台的应用程序可以让它们的用户获得相关消息通知的方式。消息通知可能是一条消息,即将发生的日历事件,或远程服务器的新数据。当被操作系统显示时,本地通知和推送通知看起来一样。它们可以显示一个警告信息或在应用程序的图标上面显示一个徽标。它们也可以在警告窗或徽标显示时播放一段声音。推送通知是在 iOS 3.0 和 Mac OS X

sxwlyp924app的专栏 6332

brother的PT-9800PCN标签打印机二次开发

本来想通过esc/p指令打印标签,但是无奈能找到的资料太少,而且打电话给客服,也没有sample可以提供参考,后来客服说使用template功能的话,打印很方便。于是下载手册学习了一下, 先下载P-touch Editor软件,制作标签模板。 制作的模板就是普通的标签,不需要连接数据库之类的,模板里有3个object,分别是文本1,文本2,条形码3。这个很关键,后面的代码传送数据,就是按这...

3563

APPLE推送通知APNS

googleAPNS:https://code.google.com/p/apns-php/wiki/CertificateCreation 推送证书创建: 1,登陆官网:iPhone Developer Program Portal 2,选择APP IDs。 (or click here) 3,创建一个app id,注意不要选择Explicit,不要选择Wildcard。 4,继续

chowpan的专栏 2万+

Cadence原理图设计10个高效技巧:从封装绑定到BOM表导出全流程

本文为硬件工程师提供了一套Cadence OrCAD Capture CIS原理图设计的高效实战指南。文章深度解析了从封装库的精准管理与CIS数据库绑定、封装批量处理技巧,到设计缓存清理、跨页信号追踪,再到关键的DRC检查、网表导出以及智能BOM报表生成的全流程核心技巧,旨在帮助工程师提升设计效率与可靠性,规避常见错误。

weixin_29178069的博客 201

Mplus—交叉滞后面板模型(Cross-Lagged Panel Model, CLPM)

本文介绍交叉滞后模型相关知识,以及显变量模型与潜变量模型在Mplus中的语法。

m0_54401011的博客 1万+

苹果推送APNS自己总结

开发状态服务器地址 gateway.sandbox.push.apple.com 2195 产品状态服务器地址 gateway.push.apple.com 2195 Development和Production两个版本对应的apns device token是不同的,前者是develop的mobileprovision下获取的。后者是production的mobil...

weixin_30551963的博客 215

PCIE2.0/PCIE3.0/PCIE4.0/PCIE5.0接口的带宽、速率计算

一、PCIE接口速率: 二、PCIE相关概念: 传输速率为每秒传输量GT/s,而不是每秒位数Gbps,因为传输量包括不提供额外吞吐量的开销位; 比如 PCIe 1.x和PCIe 2.x使用8b / 10b编码方案,导致占用了20% (= 2/10)的原始信道带宽。 GT/s —— Giga transation per second (千兆传输/秒),即每一秒内传输的次数。重点在于描述物理层通信协议的速率属性,可以不和链路宽度等关联。 Gbps —— Giga Bits Per Second

技术联盟 1万+

apns 苹果服务器压力,[iOS]APNs推送机制

目录一、简介二、APNs推送流程三、什么是deviceToken四、消息体五、APNs推送中的问题APNs 简介Apple Push Notification service (APNs),即苹果推送通知服务。为什么会有 APNs ?由于移动设备内存、CPU、电量的局限性,iOS 不允许 APP 的进程常驻后台(事实上可以申请后台运行一段时间,最长约10分钟)。当用户主动杀掉APP或者APP进入后...

weixin_42593130的博客 1140

精度与速度双突破:YOLOv8-Pose 在 RK3588 上实现高性能人体姿态分析部署

本教程从YOLOv8-pose模型的姿态识别训练,到RK3588的边缘量化部署,为你打造了一套“高精度+高实时性+低成本”的人体姿态分析解决方案。无论是健身动作纠正、智能安防行为检测,还是工业人员姿态监控,这套技术都能直接复用——你只需替换数据集与业务逻辑,即可快速落地专属的边缘AI姿态识别系统。如果你在实践中遇到任何卡点,欢迎随时交流。记住,人体姿态识别的价值在于“关键点准、推理快、部署易”,而这三者的平衡,正是你通过本教程能掌握的核心能力。

know_F0727的博客 434

基于深度学习的图像修复系统,GAN图像修复,图像修复算法研究,并实现系统登录和注册,全网独发

近年来,深度学习已成为计算机视觉领域的研究热点,基于深度学习的图像修复技术弥补了传统修复方法长期存在的不足,显著提高了生成结果的质量。深度学习是指模仿人脑机制设计的具有深层结构的神经网络。深度学习作为一种表征学习,通过模仿人脑神经元之间的信息传递方式来学习输入数据的特征,并找到输入和输出数据之间的映射关系。通过在图像修复中应用深度学习技术,可以准确学习图像的语义信息,然后根据信息预测缺失的内容,大大克服了传统修复算法的不足,使结果更具逻辑性。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 8253

APNS苹果远程推送

什么是APNS? 苹果推送通知服务(APNs)是推送通知的网关,iPhone ipad 对于应用程序在后台运行有诸多限制,考虑到手机电池电量,应用不允许在后台进行过多的操作。因此,当用户切换到其他程序后,原先的程序无法保持运行状态。对于那些需要保持持续连接状态的应用程序(比如社区网络应用),将不能收到实时的信息。推送是解决轮询所造成的流量消耗和电量消耗的一个比较好的解决方案 为解决这一限制,苹果推...

CoderZS的博客 1916

Python 爬虫实战:爬取 GitHub 热门项目(星数 / 语言 / 作者)

本文系统介绍了使用Python爬虫技术获取GitHub热门项目数据的完整方案。通过分析GitHub Trending页面和官方API两种数据源,详细讲解了HTML解析、JSON数据处理、反爬应对策略等关键技术。采用requests、BeautifulSoup、pandas等工具链,实现了项目信息(名称、星数、语言等)的结构化爬取,并配套数据清洗、统计分析及可视化功能。特别强调遵守GitHub API使用规范,包括Token认证、请求频率控制等合规要求。该方案为开发者提供了一种高效、合法的数据采集方法,适用于

2503_91057718的博客 2341

苹果推送APNS的一个容易错误的地方

在网上看了很多的apns的介绍,我看了大多都是PHP的讲解如何服务器对接苹果服务器以及发送推送,我这边就不介绍苹果APNS的原理了,不过其中有几个需要介绍的地方。需要注意 一、苹果服务器有两种连接方式 1,HTTP/2,这是苹果APNS在2015年12月份弄出来的,这个新版本的协议基于HTTP/2和JSON。有一篇文章总结的很好,我就直接复制过来,方便点。 原文地址:http://www.o

chuanhehuan1的专栏 1万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

苹果推送APNS问题总结

苹果推送APNS问题总结 iOS边城之推送APNS详解

程序小白的博客 1105

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

IOS 苹果推送 APNS(一)

1、APNS推送说明   苹果的推送服务APNs基本原理简单来说就是苹果利用自己专门的推送服务器(APNs)接收来自我们自己应用服务器的需要被推送的信息,然后推送到指定的iOS设备上,然后由设备通知到我们的应用程序,设备以通知或者声音的形式通知用户有新的消息。要完成APNS推送首先需要我们向APNS服务器注册,注册成功以后服务器会返回一个device_token,我们在将返回的device_to

高级项目经理、专注于技术架构、分享项目管理及职场心得 2048

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

APNs苹果推送服务

https://distriqt.github.io/ANE-PushNotifications/m.iOS%20APNS%20Payload 这是苹果的推送服务 制作并上传推送证书 如果不需要实现离线推送功能,请忽略这步。 制作推送证书 第 1 步:打开苹果开发者网站。 第 2 步:从 Account 进入 Certificates, Identifiers & P...

qq_14926283的博客 1048

IOS学习笔记40——苹果推送机制APNs(一)

推送是解决轮询所造成的流量消耗和电量消耗的一个比较好的解决方案,在Android上,虽然Google提供了GCM(之前为C2DM),但在国内基本等于没用,各大Android应用基本都自己架设推送Server或是使用第三方推送平台,例如新浪微博使用第三方推送平台“个推”(非广告)。今天要学习的是苹果提供的推送服务APNs(Apple Push Notification services)基本原理

Ryan's zone 3万+

APNS:为开发者提供高效的苹果推送通知服务

APNS:为开发者提供高效的苹果推送通知服务 项目介绍 在移动应用开发中,推送通知是连接用户和应用的桥梁,能够及时传递重要信息,提高用户粘性。APNS(Apple Push Notification Service)是苹果公司提供的官方推送通知服务,而今天我们要介绍的APNS项目,是一套基于Swift语言的扩展和抽象,旨在帮助开发者更加便捷地使用APNSwift库。 项目技术分析 APNS项目是对...

gitblog_01105的博客 610

详解APNS苹果消息推送通知

苹果消息通知什么? 如下图如示 就是APP的服务端在用户未打开APP进程时,还能发通知给用户APP的服务技术 相关概念 Provider:提供推送的第三方服务系统 Device:苹果设备,例如iphone和ipad等 APNS:苹果推送消息服务,属于苹果的服务 APP:安装在苹果设备上的应用程序 DeviceToken:设备的标识,用于确定接收通知的设备及APP Payl

Vince的修炼之路 3781

Vapor APNs 教程:苹果推送通知服务集成指南

Vapor APNs 教程:苹果推送通知服务集成指南 项目概述 Vapor APNs 是一个基于 Swift 的 Vapor 框架的插件,它简化了将 Apple 的推送通知服务 (APNs) 集成到你的应用中的过程。本教程将引导您了解其基本结构、主要启动文件以及配置文件的设置。 1. 项目目录结构及介绍 Vapor APNs项目遵循标准的Vapor应用程序结构,其核心组件和资源配置在明确的路径下...

gitblog_01027的博客 816

苹果APNs消息推送

【代码】苹果APNs消息推送。

weixin_43833540的博客 309
上一篇: Linux 目录和文件大小 du
下一篇: response.setContentType()的作用及参数
focusjava
博客等级 码龄14年 127粉丝 528原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值