移动互联网实战Apple的APNS桩推送服务的实现(2)mumuxinfei

需求分析:从开发者的角度去理解和分析需求.对于IOS的消息推送的功能和性能测试,大致可分为如下几种:1).推送平台QPS/RT的性能指标2).BadDeviceToken对服务的影响评估3).证书对服务的影响评估4).推送可靠性评估(推送弱ack机制,丢消息和消息重复之间的折中)通过记录日志来评估QPS/RT和服务的质量,引入黑名单机制来模拟baddevicetoken对推送服务的影响评估.

技术分析:对APNS服务的理解和自身的功能/性能测试需求:1).APNS推送服务采用SSL长连接/二进制流/异步的方式来实现,追求推送消息的吞吐量.2).APNS支持V1/V2两种二进制协议,遇到异常时,APNS的默认行为不一样.3).APNS客户端是TSL(SSL)的单向认证(客户端携带证书,服务端信任检查).结合桩的定位,我们采用OneConnectionPerThread的线程池模式去模拟处理它,一方面能基本满足需求,另一方面实现高效简单.同时为了方便测试,服务端关闭对客户端认证机制.

服务实现:APNS模拟桩的实现过程1).服务端证书引入

keytool-genkey-v-aliasssl-server-keyalgRSA-keystore./server_ks-storepassserver-keypass123456-dname"CN=Unknown"生成效果如图2).自定义TrustManager的实现类

privateclassMyX509TrustManagerimplementsX509TrustManager{@OverridepublicX509Certificate[]getAcceptedIssuers(){returnnull;}//对服务端证书的认证,抛出异常表示不通过@OverridepublicvoidcheckServerTrusted(X509Certificate[]chain,StringauthType)throwsCertificateException{}//对客户端证书进行认证,抛出异常表示不通过@OverridepublicvoidcheckClientTrusted(X509Certificate[]chain,StringauthType)throwsCertificateException{}};评注:这边提供空实现,对客户端的证书不进行任何校验3).创建SSLServerSocket代码片段

SSLContextctx=SSLContext.getInstance("SSL");//*)创建KeyManagerFactory类实例KeyManagerFactorykmf=KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());//*)初始化KeyStore,这边的KEY_PASSWORD为"123456"KeyStoreks=KeyStore.getInstance(KeyStore.getDefaultType());ks.load(ApnsStubServer.class.getResourceAsStream("/server_ks"),null);kmf.init(ks,KEY_PASSWOR.toCharArray());//*)进行SSLContext类的初始化工作ctx.init(kmf.getKeyManagers(),newTrustManager[]{newMyX509TrustManager()},newSecureRandom());//*)SSLServerSocket的生成SSLServerSocketserverSocket=(SSLServerSocket)ctx.getServerSocketFactory().createServerSocket(serverPort);serverSocket.setReuseAddress(true);//*)设置Client认证开关关闭serverSocket.setNeedClientAuth(false);评注:把server_ks代码放到classpath目录下,同时这边的key_password为"123456",而不是keystore的密码"server",注意keypass和storepass的区别4).服务端连接处理代码

//OneConnectionPerThread的机制ExecutorServiceworkerPools=Executors.newCachedThreadPool();while(true){finalSocketcliSocket=sslServerSocket.accept();workerPools.execute(newRunnable(){@Overridepublicvoidrun(){onHandle(cliSocket);}});}评注:serverSocket用于接受客户端连接,并放入工作池去处理onHandle函数定义如下:

privatevoidonHandle(SocketcliSocket){DeviceTokenManagerdtm=apnsStubController.getDeviceTokenManager();DataInputStreamdis=newDataInputStream(cliSocket.getInputStream());intch=0;while((ch=dis.read())!=-1){IVResultresult=ApnsProtocolUtility.readMessage(ch,dis);ApnsMessagemessage=result.getValue();//属于不同版本的消息,进行分发和处理if(ApnsVersion.APNS_BINARY_PROTOCOL_V1==message.getVersion()){//*)如果属于baddevicetoken黑名单if(dtm.judgeBadDeviceToken(message.getDeviceToken())){break;}printMessage(message);}elseif(ApnsVersion.APNS_BINARY_PROTOCOL_V2==message.getVersion()){//*)如果属于baddevicetoken黑名单if(dtm.judgeBadDeviceToken(message.getDeviceToken())){//8为令牌错误,就是baddevicetokenApnsProtocolUtility.writeResponse(8,message.getIdentifier(),cliSocket.getOutputStream());break;}printMessage(message);}}}5).黑名单的引入和接口定义

由外置黑名单文件来指定

publicclassDeviceTokenManager{//用于配置参数的初始化publicvoidinit(Propertiesprop);//判断是否为baddevicetokenpublicbooleanjudgeBadDeviceToken(StringdeviceToken);//载入baddevicetoken名单privatevoidloadBadDeviceTokenFile(Stringfilename);}总结:难点在于JSSE和证书的理解,至于APNS的网络协议,处理还是相对简单的.

后记:感觉自己还是没有把自己想表达的事情说清楚,甚是遗憾.无论如何,还是希望对读者有些帮助,对我而言,则是充满了回忆.Fighting,Letitgo!!!

THE END
1.IM即时通讯的消息推送机制:确保信息及时送达5G网络的普及将带来更低的延迟和更高的带宽,为消息推送提供更优越的网络条件,进一步提升推送的速度和质量。 3.物联网的融合 随着物联网的发展,IM即时通讯将与更多的智能设备进行融合,实现更广泛的消息推送场景,如智能家居、智能汽车等。 综上所述,IM即时通讯的消息推送机制对于实现信息的及时送达至关重要。通过不https://www.easemob.com/news/11925
2.无线城市平台开发实践:Java技术与智慧城市服务2.1 网络环境的基础架构 网络是现代城市服务平台的血脉,一个高效稳定的网络环境是服务平台稳定运行的基石。在这一部分,我们将深入探讨如何设计和部署网络基础架构,包括网络设备的选型与网络拓扑的设计,以及网络协议的选择与通信机制的实现。 2.1.1 网络设备与拓扑设计 https://blog.csdn.net/weixin_42583683/article/details/143259097
3.区发改局政策类信息定向推送工作机制在日常工作中,特别是区政府窗口办理行政审批事项时,向前来办事个人、企业和单位介绍区人民政府门户网站发改局栏目和区发改局微信公众号的相关内容,向其推送区人民政府门户网站的网址,邀请其关注区发改局微信公众号,提高网络平台关注度,提升政策类信息推送时效。 https://www.conghua.gov.cn/gzchfg/gkmlpt/content/6/6536/mpost_6536691.html
4.抖音浏览量过5000被推送了吗?怎么增加浏览量和粉丝?推送机制:抖音的推送机制是基于算法的,包括用户行为、视频质量、互动率等多个因素。 抖音作为一个短视频平台,其推送机制对于内容创作者来说至关重要。许多创作者好奇,当视频浏览量超过5000时,是否就意味着视频已经被推送给了更多的观众。 一、抖音浏览量过5000被推送了吗? https://www.lanhaiqingbao.com/wangluoyingxiao/26333.html
5.搭建线上平台的方案(通用15篇)4.教师充分利用网络平台推送优质教学资源、在线布置作业,学生作答提交后,教师手动批改,巩固强化学习效果,保证教学质量不打折。 四、检查反馈 1.分管校领导进入分管年级部网络平台进行巡视,教研室、教务处、年级组负责线上教学情况的监督和检查。 2.班主任须作好线上教学的宣传工作,及时将课程表、作息时间表发班级群,https://www.oh100.com/a/202212/5837522.html
6.百度云?极光?个推?个推公共平台云推送服务的机制和特点 个信互动(北京)网络科技有限公司成立于2010年7月,位于北京、杭州两地。现有100余位员工。 公司产品包括:国内最早的手机及时聊天类应用--个信,以及最早的PC TO PHONE软件—八爪推送。2012年,公司全面开放其核心竞争力--推送技术,面向公众提供专业的手机推送解决方案,即个推平台,https://mobile.51cto.com/hot-403146.htm
7.新媒体平台管理制度(精选8篇)第十二条 建立信息纠错机制。新媒体各平台对已发布的不当信息要立即处理,并及时屏蔽或删除国家禁止传播的有害信息。 第十三条 建立保密管理责任制。严格遵守《西北工业大学新闻宣传报道保密管理规定》,严禁发布涉密信息。 第五章 信息安全 第十四条 新媒体各平台责任单位必须切实加强账号管理和内容监管,确保网络安全和https://www.360wenmi.com/f/filef25ywl63.html
8.理论资讯总结了职业教育在大数据、智慧环境、在线学习空间、智慧信息系统、虚拟现实、人工智能、数字生态等方面取得的成绩和经验;剖析了在资源共建共享、网络平台功能完善、学习环境数字化改造、虚拟仿真软件研发、院校治理能力提升等方面存在的主要问题;提出创新体制机制、开发教育行业标准、构建数字生态、建立微证书体系、提升教师https://www.nmpaied.org.cn/article/264580
9.创识科技2021年年度董事会经营评述公司自1995年成立以来一直专注于电子支付行业,积累了多项核心技术。公司拥有多态化支付处理技术、金融级数据安全处理技术、智能化的统一对账和差错处理技术、复杂环境下的系统集成技术、建成了云BMP平台、商户及终端服务支撑平台、物联网云推送平台等多个基于云架构的业务平台。 http://yuanchuang.10jqka.com.cn/20220424/c638642208.shtml
10.区域数字资源赋能教育新基建―中国教育信息化网ICTEDU平台资源缺少学习效果反馈机制。1.0资源库只有学习资源,没有相对应的练习和实时测试系统。评价激励机制的滞后,降低了学生学习的热度,学习效果必然会大打折扣,导致课前、课中、课后不能形成闭环,数据不能共享,大数据不能实现智能分析和持续的推送反馈,功能单一。 https://web.ict.edu.cn/sknews/jyxxhs/neirong/n20230829_82066.shtml
11.vivo手机上的系统级消息推送平台的架构设计实践未来我们将会提供VRPC通信框架,用于解决客户端与后台通信及开发效率问题,为客户端与后台提供一致的开发体验,让更多的开发人员不再关心网络通信问题,专心开发业务逻辑。 作为一个吞吐量超过百亿的推送平台其稳定性、高性能、安全都非常重要,接下来和大家分享,我们在系统稳定性、高性能、安全方面的实践经验。 https://cloud.tencent.com/developer/article/2068586
12.深度对话︱防治网暴,平台的责任边界在哪里?由于“网暴”界定边界模糊、各平台技术治理“底子”差异大、跨平台治理缺少平台自治动力和可行机制等因素,在现实中,平台往往难以兼顾“快速”与“精准”,一些错审、漏审事件多次引发公众不满,在此背景下,公权力的适度、及时介入显得尤为关键。 防治网暴,平台的主体责任正被进一步压实。但对于“网络暴力”的识别和判定https://www.yicai.com/news/101860408.html
13.校园APP范文10篇(全文)推送与推送机制:一是推送渠道是否覆盖所有推送用户,二是在推送内容上必须简明扼要、直截了当。 ③校园APP公共平台的内涵运营 校园APP公共平台的内涵运营的关键点在于定好位,特别是根据自身特性、用户心里来界定校园APP公共平台的内涵运营的特色。 2.6 用户体验是增加校园APP用户粘度的重要因素 https://www.99xueshu.com/w/ikeyyujc6h5g.html
14.基于移动互联网的大学生创新创业就业网络平台关键术研发及应用关闭预览 想预览更多内容,点击免费在线预览全文 免费在线预览全文 申请编号:SQ2015BA0200882 国家科技支撑计划项目申请书 所属领域:信息产业与现代服务业领域 基于移动互联网的大学生创新创业网络平台关键技 所属方向: 术研发及应用示范 基于移动互联网的大学生创新创业就业网络平台关 项目名称: 键技术研发及应用示范https://max.book118.com/html/2022/0610/7023164044004131.shtm
15.全民国家安全教育日宣传活动总结(精选39篇)立足实际,充分运用传统媒体和新媒体开展国家安全宣传教育,制作国家安全教育日专题节目在互联网+法治宣传村村响平台集中播放,活动期间录制专题广播3期,采播20余次;利用微信公众号、头条号、企鹅号、百家号等普法平台的优势,制作、播发专题页面、主题图文等国家安全法治宣传内容,形成网络普法声势,不断提高普法宣传的影响力https://www.yjbys.com/huodongzongjie/1021978.html