Skip to content
Gowhich
  • Home
  • Blog
  • Nodejs
  • iOS
  • php
  • Archive
  • Tools
  • About
  • Language
    • Chinese
    • English
Site Search

iOS Push机制

  1. Home
  2. Blog
  3. iOS Push机制
IOS

iOS Push机制

  • 09-27,201305-30,2020
  • by davidzhang
  • on IOS
GowhichGowhichGowhich

今天看了一下关于IOS的Push的机制,对于初学者我看了一下,顺便在自己的博客中进行记录一下

1. Push机制的介绍

iPhone 对于应用程序在后台运行有诸多限制(除非你越狱)。因此,当用户切换到其他程序后,原先的程序无法保持运行状态。对于那些需要保持持续连接状态的应用程序(比如社区网络应用),将不能收到实时的信息。

为解决这一限制,苹果推出了APNs(苹果推送通知服务)。APNs 允许设备与苹果的推送通知服务器保持常连接状态。当你想发送一个推送通知给某个用户的iPhone上的应用程序时,你可以使用 APNs 发送一个推送消息给目标设备上已安装的某个应用程序。

Push机制的类型:

四种:徽章、提示框、声音和横幅

Push机制的4个组件

Provider

APNS

iPhone设备

Client App

其中APNS(Apple Push Notification Service)是由苹果提供的消息推送服务中心,所有的消息都经由这里转发给相应的设备。

Provider和Device与APNS进行通信时,时建立在SSL/TLS安全连接之上的。如下面的两个图所示(TSL的建立过程)

Provider与APNS之间的通信还需要-----DeviceToken

DeviceToken是设备令牌,有APNS生成,并返回给设备,再由设备提供给Provider。

2. Push机制的使用 

Push通知的使用可以分为以下几个步骤。其中前4个步骤相当于准备工作,也非常重要。

接下来,我们就一个步骤一个步骤的进行讲解。

a 证书请求:

证书请求制作的目的是为了获取ssl证书。通过在“钥匙串访问”程序中来创建证书请求,具体的操作过程,建议大家看看本文开头给出的视频连接。

b 创建appid

appid在制作ssl证书和profile文件会用到。具体创建过程看如下图(建议大家看看本文开头给出的视频连接。)

登录网站https://developer.apple.com/devcenter/ios/

c 生成ssl证书

ssl证书的一个主要作用就是运行程序接收从apns发送过来的消息

具体生成过程,看下面的图,当然,这里也建议观看本文开头给出的视频

d 创建profile文件

profile文件的主要作用是运行程序可以被安装在手机上(push测试需要在真机上进行)

3. Push故障排除 

4. Demo示例代码打包在如下文件中

PushMeBaby.rar

PushClient.rar 

apn.rar 

参考地址:http://www.devdiv.com/iOS_iPhone-_ios_push_-thread-130543-1-1.html

DevDiv视频地址:http://www.devdiv.com/article-4042-1.html

Youku视频地址:http://v.youku.com/v_show/id_XNDI5ODExNzMy.html

服务器端步骤:

生成app在服务端需要的许可证

1)进入Provisioning Portal, 下载Certificates在development下的证书。 

2) 找到需要测试的app id,然后enable它在development下的Apple Push Notification service: Development Push SSL Certificate。需要输入1)中的签名证书才可以生成一个aps_developer_identity.cer.

3) 双击aps_developer_identity.cer,会打开系统的key chain. 

在My certificates下找到Apple Development Push Services。需要为certificate和它之下的private key各自export出一个.p12文件。(会出现设置密码过程)

4)需要将上面的2个.p12文件转成.pem格式:

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

5)如果需要对 key不进行加密:

openssl rsa -in key.pem -out key.unencrypted.pem

6)然后就可以 合并两个.pem文件, 这个ck.pem就是服务端需要的证书了。

cat cert.pem key.unencrypted.pem > ck.pem

4个pem,另外加上php文件,打包放到服务器上

apn_pem.zip

 

版权声明

由 davidzhang创作并维护的 Gowhich博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。

本文首发于 Gowhich博客( https://www.gowhich.com ),版权所有,侵权必究。

本文永久链接: https://www.gowhich.com/blog/390

TextMate Key
PHP中Push(推送)技术的探讨
iOS , push , 机制
版权声明

由 davidzhang创作并维护的 Gowhich博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。

本文首发于 GowhichGowhich博客( https://www.gowhich.com ),版权所有,侵权必究。

本文永久链接: https://www.gowhich.com/blog/390

comments powered by Disqus

QQ Group

  • 官方技术群:341268380
  • IOS技术群:491229003
  • RN技术群:491310686

订阅号关注

Gowhich

Recent Posts

  • x509: certificate signed by unknown authority 这个问题也许没有你想的那么复杂
  • VirtualBox 7.0.10 kernel 6.5.x on ubuntu 22.04
  • Nodejs终于看到一个靠谱的招聘了
  • acme.sh配置ssl证书,以后不需要在去各大平台去申请了
  • mariadb使用记录
  • laravel^8.0使用laravel-excel^3.1方法记录
  • composer不同php版本的使用方法
  • sublime text 通过LSP搭建轻量级IDE
  • composer更新时openssl证书异常处理
  • Ubuntu下配置swap,增加程序运行速度
  • web网站安全漏洞防护
  • composer安装SSL证书异常处理

Rank Posts

  • VirtualBox 7.0.10 kernel 6.5.x on ubuntu 22.04
  • python 结巴分词(jieba)学习
  • ios搜索栏 UISearchBarDelegate委托常用方法
  • acme.sh配置ssl证书,以后不需要在去各大平台去申请了
  • 新手入门Nest.js(十五)- 连接数据库
  • git warning 提示记录
  • composer install 错误提示解决案例(1)
  • gulp 实现 js、css,img 合并和压缩
  • No visible @interface for 'AFHTTPSessionManager' declares the selector 'POST:parameters:progress:success:failure:'
  • 如何查看Linux进程运行的完整路径
  • Linux服务器CPU跑满或抛高及带宽跑满怎样排查分析原因
  • Nestjs中的async/await的使用

Categories

  • PHP131
  • Ruby3
  • Linux87
  • MySql23
  • Object-C34
  • JAVA19
  • IOS262
  • Javascript69
  • Nginx14
  • CSS12
  • NodeJs133
  • Memcached4
  • MAC OS X20
  • C/C++7
  • MongoDB8
  • Python65
  • Html8
  • Other37
  • NetSafe1
  • Redis3
  • DotNet1
  • Apache5
  • React13
  • 啤酒技术1
  • Android4
  • ide20
  • TypeScript114
  • cocos2d-x4
  • 大事件3
  • swift11
  • git3

休闲时刻

© 2014-2025 Gowhich  

Shapely Theme by Colorlib

备案号: 蒙ICP备18003023号-4

Powered by Yii Framework

  • Gowhich
  • Durban_Zhang
  • Durban_Zhang