APNs证书创建和上传到环信后台

在iOS中,当app进程不存在的情况下,如果需要向设备发送通知,可以苹果提供的APNs
下面大概讲一下如果创建APNs证书和上传到环信。(首先需要有一个付费的苹果开发账号,否则无法创建相关证书)

文章最后由常见问题


1、前期准备
 
创建根证书很重要,要确保创建根证书的电脑和最好导出P12的电脑是一台,否者可能无法创建成功。
 
打开电脑的“钥匙串访问”并按照以下操作

196FFE18-F615-441B-955B-C22526FC7550.png

 

439D8CD0-B95E-4639-923E-E39EB862FAAB.png

邮箱需要符合邮箱格式,名称随意,之后保存到本地。
 
06DF2A8F-8599-415A-B132-ABC0FA326C6F.png


2、创建支持推送的APP
 

07CFC71F-8F5A-4AF6-9716-0698572F483C.png


D6439761-4693-4C83-BEC4-2A804A089C6D.png


5B03EE6F-82CF-4B95-8079-298192464261.png


588C53C4-951C-4175-BA3E-FABD79C0C714.png


273DB89F-0D81-4AD2-99B5-1C9E6A539EF5.png


3、创建推送证书
此处以开发推送证书为例

1F0696C9-4C96-482E-84F8-14AC2CC6BD09.png


18F988F1-C700-4161-90DA-E2E4332FDE36.png


F911C057-8279-4CFC-B1E2-0C6D54C66992.png


F923A032-1318-4686-A6F7-69FA5CE015B1.png


71C69E1B-D0A7-4929-9641-873D6FEB7FCF.png


69093353-7D5E-4864-A42B-06D5EBD0E24B.png


6CB97BF4-DB2D-4F31-B611-EA4F848A9133.png


C8F22BCF-82B8-4BE3-87C9-972A88A5B567.png


37F49798-C4C4-475A-93AC-5E4FE32B37D6.png


77B837F9-3F76-4431-8C45-C0967A4F46F0.png


5980CC0C-00F0-40E0-8B39-8A4642CCF55D.png


再用同样的方式创建生产证书,注意命名要有区别。
此时,我们应该有三个文件:

8D1E5C71-B73D-47D5-AA63-EE682F1B3630.png

 
4、制作环信用的P12推送证书
 
同样以开发证书为例,双击导入aps_development.cer,

778565F3-543F-4AE6-9CDA-E22F1CFF0DF5.png


EC7CEA55-9CF5-4CB1-ADF0-10AA10652E0A.png


9AB6B10F-3773-4F05-977F-0DA4FB8F4C93.png


BA715C6D-684B-4BCF-9BBD-457C0763088B.png



8A6A3280-1C1F-426E-8B2E-DF54AB90E3F0.png

 
以同样的方式再生成生产用推送证书。此时应该一共有5个文件。

9ADEA2A5-B424-49C7-B2C6-7A9F4E3667F8.png

 
5、上传到环信
 

CBA586BA-AB11-4A4A-AA35-9F3AEC7E8321.png


195BA6B9-EBAA-47A6-B2A9-CFEC9C6987D9.png


592ED719-5220-4D2F-B5DC-8AA98BA6AA89.png


5BF934C9-2DD6-4CFD-B832-5B87E592E4A1.png


7FAC6438-1349-414B-AE3C-90AC13AC704B.png


759E8827-4DA4-459B-9079-5726FE7F9E71.png


8946D27B-9EF2-424C-B2CC-2B96A83C5A67.png


 
如果需要填写bundle id,一定要确保填写正确。
 

CEAFFB8B-ED09-48CD-8F61-FA2A7260BB5F.png

注意:此处也需要选择正确,是开发模式还是生产模式。
密码就是到导出证书时候的密码。
 
注意事项:
app工程里要打开推送开关

872EEB37-A79A-4221-9CCF-CFE6ABAB090B.png

 
 
==============================
 
常见问题:
为什么我按照配置后,app后台了还是收不到推送!


环信的长连接存在的情况下,在服务器就属于在线状态,环信不会通过苹果的APNs 给你发推送,而是直接通过环信的长连接,只有app后台被系统挂起或者是进程被杀死了,才会走APNs,先出怎么处理:
 
在appdelegate文件里,也实现消息的监听,这样有消息了,也能收到回调。
收到回调后,先判断当前app的状态是在前台还是后台,如果是前台就忽视这条消息,如果在后台,就自己从代码里实现一个本地通知,把需要展示的消息内容得到后,自己发localNotifications. 本地通知的实现方式很简单,网上百度就行。
 
下面我说下这种方式的好处与坏处。
好处:在正常使用场景中,app之间切换很正常,这样的好处就是不需要频繁的断开重连,速度会很快,同时也会比较省电,而且用户体验会更好。
 
坏处:其他app里,app的icon上的角标和app内部的角标数量是一致的,但是像自己弹出的处理方式,会可能导致角标不一致,因为apns的角标是服务器发过来的,而localNotification的角标是由app自己设置的。
 
顺便说一句,目前微信的实现方式也是后台的时候长连接保持,app角标也存在不一致的情况。
 
APP之前没有用推送,现在需要用了,我按照上面设置后还是不行。
 
需要删除本地的描述文件,重新去开发者中心下载,描述文件就是Provisioning Profile
 
APP上线之前,如何测试生产的推送是否好用?
这个情况苹果已经替我们想好了,在打包的时候,有一个选项是ad-hoc。这个选项就是打一个生产用的包,并且可以导出保存到本地,之后用itunes安装就可以了。这个地方一定要注意,这个使用使用的证书需要是生产的证书了哦~

3 个评论

写的非常棒,老板以后再也不用担心不会搞apns 了!
大神, 步骤很详细
swift集成环信聊天推送收不到推送提示啊

要回复文章请先登录注册

知识价值的认可,源自您的赞赏

扫描二维码,你的支付将由imGeek代收后转给对方

×