ios 消息推送原理

news/2025/2/25 19:05:35

一、消息推送原理:

 

在实现消息推送之前先提及几个于推送相关概念,如下图1-1

 

 

IOS 消息推送原理及实现总结 - Milo - IOS  JAVA KEY

 1-1

1、              Provider:就是为指定IOS设备应用程序提供Push的服务器,(如果IOS设备的应用程序是客户端的话,那么Provider可以理解为服务端[消息的发起者]);

2、              APNSApple Push Notification Service[苹果消息推送服务器]

3、              iPhone:用来接收APNS下发下来的消息;

4、              Client AppIOS设备上的应用程序,用来接收iphone传递APNS下发的消息到制定的一个客户端app[消息的最终响应者]

上图可以分为三个阶段:

阶段一:Provider[服务端]把要发送的消息,目的IOS设备标识打包,发送给APNS

阶段二:APNS在自身的已注册Push服务的IOS设备列表中,查找有相应标识的IOS设备,并将消息发送到IOS设备;

阶段三:IOS设备把发送的消息传递给对应的应用程序,并且按照设定弹出Push通知。

具体过程,如下图1-2

 

IOS 消息推送原理及实现总结 - Milo - IOS  JAVA KEY

 1-2

1、              [Client App]注册消息推送;

2、              [Client App][APNS Service]deviceToken, Client App接收deviceToken

3、              [Client App]deviceToken发送给[Provider]Push服务端程序;

4、              Push服务端程序满足发送消息条件了,[Provider][APNS Service]发送消息;

5、              [APNS Service]将消息发送给[Client App].

 

 

消息推送实现:

1、             生成*.certSigningRequest文件,步骤如下:

[MacBookà应用程序à实用工具à钥匙串访问à证书助手à从证书机构求证书?à证书信息(用户电子邮箱地址{填写您的邮箱,如:your@email.com},常用名称{任意,如:PushDemo},请求是:{单选,选择‘存储到磁盘’}à继续à保存],这时会在您指定的地方生成你指定的文件,默认为CertificateSigningRequest.certSigningRequest文件,这里命名为:PushDemo.certSigningRequest.在此*.certSigningRequest已经生成,具体操作步骤如图2-12-2所示。

 

IOS 消息推送原理及实现总结 - Milo - IOS  JAVA KEY

 2-1

 

IOS 消息推送原理及实现总结 - Milo - IOS  JAVA KEY

 2-2

如果生成成功,则会在[钥匙串访问|登录|密钥]栏目中列出与*.certSigningRequest关联的密钥,这里是PushDemo,如图2-3所示:

 

IOS 消息推送原理及实现总结 - Milo - IOS  JAVA KEY

 2-3

2、             新建一个App ID(在苹果开发者账号中配置)

(1) 登录iOS Dev Center,登录成功后,点击(iOS Provisioning Portal对应链接),如图2-4所示:

 

IOS 消息推送原理及实现总结 - Milo - IOS  JAVA KEY

 2-4

(2) 创建New App ID[App IDsàManageàNew App ID]( Description{填写您对此App ID 的描述,如:iShop},Bundle Seed ID(App ID Prefix){选择绑定App ID前缀,如:默认选择Generate New}Bundle Identifier(App ID Suffix){填写绑定App ID后缀,如:com.yourcorp.iShop}),如下图2-5所示:

 

IOS 消息推送原理及实现总结 - Milo - IOS  JAVA KEY

 2-5

       这样就会生成下面这条记录,如图2-6所示:

 

 2-6

(3) 配置上一步中生成的App ID,让其支持消息推送[点击2-6中的Configureà选中Enable for Apple Push Notification serviceà点击Configure],如图2-7所示:

 

IOS 消息推送原理及实现总结 - Milo - IOS  JAVA KEY

 2-7

       (4) Generate a Certificate Signing Request(生成部署请求认证)[点击2-7中的2ConfigureàContinueà步骤1生成的*certSigningRequest文件(这里是iShop. certSigningRequestà Generateà生成完成后将其下载下来,命名为:aps_developer_identity.cer],双击aps_developer_identity.cer证书{将证书与密钥关联,并将证书导入到MacBook},如下图2-8所示:

 

IOS 消息推送原理及实现总结 - Milo - IOS  JAVA KEY

 2-8

(5) 创建Development Provisioning Profiles[开发许可配置文件]Provisioning| Development|New Profile,具体操作流程如下图2-9所示:

 

 

 2-9

       点击图2-9Submit,生成Development Provisioning Profiles[开发许可配置文件],这里是:iShopDevprofile.mobileprovision如下图2-10所示:

 

IOS 消息推送原理及实现总结 - Milo - IOS  JAVA KEY

 2-10

下载此开发许可证书(用于联机调试)。

总结,到现在为止,我们已经生成:A*.certSigningRequest文件(在步骤(4)中使用,用于生成证书B)B:aps_developer_identity.cer证书(在Provider[Push服务器]服务端应用使用)、C:*..mobileprovision开发许可配置文件(在Client App客户端应用联机调试使用)。

 

至此,消息推送的配置已经全部完成,接下来的工作就是编写Provider[Push服务器]服务端应用和Client App客户端应用的程序,本来自己是想一步一步详细的写下去,但是对于这一部分,互联网上已经很多,在此就不在赘述,但还是给出相应连接,供大家参考,如下:

1iphone push notification 消息推送

2iphone 推送通知 服务器端java 实现

3iPhone消息推送机制实现及通过.net应用程序发送消

转载于:https://www.cnblogs.com/yulang314/p/3550565.html


http://www.niftyadmin.cn/n/712989.html

相关文章

qt如何优化程序内存_Python基础教程:(小窍门)如何优化Python占用的内存

概述如果程序处理的数据比较多、比较复杂,那么在程序运行的时候,会占用大量的内存,当内存占用到达一定的数值,程序就有可能被操作系统终止,特别是在限制程序所使用的内存大小的场景,更容易发生问题。下面我…

python生成表格乱码_Python程序中使用SQLAlchemy时出现乱码的解决方案

今天对clubot进行了升级, 但是导入数据后中文乱码, 一开是找资料说是在创建引擎的时候添加编码信息:?但是这并不行, 然后查看表信息:?发现原来创建表的时候用的latin1编码, 而老的表是用utf-8编码创建的, SQLAlchemy中并没有发现有创建表时指定指定编码的方法. 所以只能在MyS…

ZZULIOJ-1092,素数表(函数专题)(Python)

题目描述: 输入两个正整数m和n,输出m和n之间的所有素数。 要求程序定义一个prime()函数和一个main()函数,prime()函数判断一个整数n是否是素数,其余功能在main()函数中实现。 int prime(int n) { //判断n是否为素数&#xff0…

计算机硬件的组成要素

不清楚cpu(处理器)、内存、I/O的小伙伴们,重点来了! 计算机硬件的主要组成要素如下图:CPU是计算机的大脑,在其内部可对数据执行运算并控制内存和I/O。内存用于存储指令和数据。I/O负责把键盘、鼠标、显示器…

python 短路运算符_Python中三目计算符的正确用法及短路逻辑

今天在看别人代码时看到这样一种写法, 感觉是个挺容易踩到的坑, 搞清楚后写出来备忘.短路逻辑Python中进行逻辑运算的时候, 默认采用的是一种叫做短路逻辑的运算规则. 名字是很形象的, 下面直接看代码print True and 1# 1print True or 1# Trueprint False and 1# Falseprint F…

ZZULIOJ-1093,验证哥德巴赫猜想(函数专题)(Python)

题目描述: 哥德巴赫猜想大家都知道一点吧。我们现在不是想证明这个结论,而是对于任给的一个不小于6的偶数,来寻找和等于该偶数的所有素数对。做好了这件实事,就能说明这个猜想是成立的。 要求程序定义一个prime()函数和一个main()函数&#x…

ios多线程之GCD

介绍: Grand Central Dispatch 简称(GCD)是苹果公司开发的技术,以优化的应用程序支持多核心处理器和其他的对称多处理系统的系统。这建立在任务并行执行的线程池模式的基础上的。它首次发布在Mac OS X 10.6 ,iOS 4及以…

pandas 存xlsx多个标签_Pandas读写文件(1)

Pandas读写文件来源:https://realpython.com/pandas-read-write-files/翻译:老齐阅读本文需要10分钟★译者注: Pandas是数据科学中常用的库,用它读写文件也是常规操作,《数据准备和特征工程》一书对此有更详实的阐述。…