首页 > 其他分享 >iOS消息推送机制的实现

iOS消息推送机制的实现

时间:2023-07-26 12:31:45浏览次数:78  
标签:aps iOS 应用程序 APNS Push 机制 推送 identity developer


iOS消息推送的工作机制可以简单的用下图来概括:

iOS消息推送机制的实现_应用程序


Provider是指某个iPhone软件的Push服务器,APNS是Apple Push Notification Service的缩写,是苹果的服务器。


上图可以分为三个阶段:

第一阶段:应用程序把要发送的消息、目的iPhone的标识打包,发给APNS。 


第三阶段:iPhone把发来的消息传递给相应的应用程序,并且按照设定弹出Push通知。

iOS消息推送机制的实现_应用程序


从上图我们可以看到:

1、应用程序注册消息推送。

2、iOS从APNS Server获取device token,应用程序接收device token。

3、应用程序将device token发送给PUSH服务端程序。

4、服务端程序向APNS服务发送消息。

5、APNS服务将消息发送给iPhone应用程序。


无论是iPhone客户端和APNS,还是Provider和APNS,都需要通过证书进行连接。


下面我介绍一下几种用到的证书。


一、CSR文件


1、生成Certificate Signing Request(CSR)

iOS消息推送机制的实现_应用程序


2、填写你的邮箱和常用名称,并选择保存到硬盘。

iOS消息推送机制的实现_应用程序


点击继续:

iOS消息推送机制的实现_应用程序


这样就在本地生成了一个Push.certSigningRequest文件。


二、p12文件


1、导出密钥。


2、输入你的密码。


iOS消息推送机制的实现_应用程序


这样就生成了一个Push.p12文件。


三、SSL certificate文件


1、用你付过费的帐号登录到iOS Provisioning Portal,并新建一个App ID,这个过程可以参考:iOS应用的真机调试,这样就会生成下面这条记录:


2、点击右侧的Configure:


3、点击Development Push SSL Certificate一行后的Configure:


iOS消息推送机制的实现_应用程序


4、点击Continue:

iOS消息推送机制的实现_应用程序


5、选择前面生成好的Push.certSigningRequest文件,点击Generate,出现如下所示的页面:

iOS消息推送机制的实现_应用程序


6、点击Continue:

iOS消息推送机制的实现_应用程序


7、点击Download,并将文件命名为aps_developer_identity.cer。


8、点击Done,你会发现状态变成了Enabled:


注意:有的App ID的Apple Push Notification service列是灰色的,并且不允许使用Configure按钮,这是因为APNS不支持带通配符的App ID。


到现在为止,我们已经生成了三个文件:


1、Push.certSigningRequest

2、Push.p12

3、aps_developer_identity.cer


在项目的AppDelegate中的didFinishLaunchingWithOptions方法中加入下面的代码:




iOS消息推送机制的实现_iOS_11

1. sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeBadge)];


通过registerForRemoteNotificationTypes方法,告诉应用程序,能接受push来的通知。


在项目的AppDelegate中添加下面的方法来获取deviceToken:




 

iOS消息推送机制的实现_iOS_11


    
 
   
1. (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {     
2.    NSString *token = [NSString stringWithFormat:@"%@", deviceToken];  
3.    NSLog(@"My token is:%@", token);  
4. }  
5.  
6. (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {      
7.    NSString *error_str = [NSString stringWithFormat: @"%@", error];  
8.    NSLog(@"Failed to get token, error:%@", error_str);  
9. }



获取到的deviceToken,我们可以提交给后台应用程序,发送通知的后台应用程序除了需要知道deviceToken之外,还需要一个与APNS连接的证书。


这个证书可以通过我们前面生成的两个文件中得到。


1、将aps_developer_identity.cer转换成aps_developer_identity.pem格式




 

iOS消息推送机制的实现_iOS_11



    1. x509 -in aps_developer_identity.cer -inform DER -out aps_developer_identity.pem -outform PEM



    2、将p12格式的私钥转换成pem




     

    iOS消息推送机制的实现_iOS_11



    1. pkcs12 -nocerts -out Push_Noenc.pem -in Push.p12  




    3、创建p12文件




     

    iOS消息推送机制的实现_iOS_11

    1. pkcs12 -export -in aps_developer_identity.pem -inkey Push_Noenc.pem -certfile Push.certSigningRequest -name "aps_developer_identity" -out aps_developer_identity.p12



    这样我们就得到了在.net或java等后台应用程序中使用的证书文件:aps_developer_identity.p12


    如果后台应用是php的话,那么可以按照iOS消息推送机制中pem文件的生成这篇文章中的方法来生成php后台应用程序中使用的证书文件:ck.pem

    标签:aps,iOS,应用程序,APNS,Push,机制,推送,identity,developer
    From: https://blog.51cto.com/u_548275/6855290

    相关文章

    • iptables——黑白名单机制
      黑名单机制当链的默认策略设置为ACCEPT时,按照道理来说,在链中配置规则时,对应的动作应该设置为DROP或者REJECT。因为,默认策略已经为ACCEPT了,如果在设置规则时,对应动作仍然为ACCEPT,那么所有报文都会被放行,因为不管报文是否被规则匹配到都会被ACCEPT,所以就失去了访问控制的意义。所......
    • MySQL 事务机制
      事务机制:事务语法:--开始事务begin;--或starttransaction;--提交commit;--回滚rollback;--保存点savepoint;事务特性:默认事务:MySQL的事务默认自动提交:在自动提交的状态下每一条SQL就是一个事务会被直接执行手动开启事务后:则所有的SQL语句都在一个事......
    • MySQL 锁机制
      数据库锁:概念:锁是计算机协调多个进程或线程并发访问某一资源的机制(避免资源争抢)分类:按粒度表级锁:锁定整个表开销小加锁快不会出现死锁锁定粒度大发生锁冲突的概率最高并发度最低数据库引擎总是一次性同时获取所有需要的锁以及总是按相同的顺序获取表锁从而避免死......
    • MySQL 日志机制
      日志机制:错误日志:当数据库无法正常启动时第一个定位错误日志数据库速度慢时也可以定位错误日志得到建议(如增大缓存池增大redologbuffer等)查询日志:没啥用就是记录查询而已应该是为了对应binlog记录修改的日志慢查询日志:捕获查询慢的情况配置:可以设置每分钟最多有......
    • sql server 创建复制机制
      SQLServer创建复制机制整体流程下面是创建SQLServer复制机制的整体流程,可以用表格展示步骤:步骤描述1创建发布者2创建订阅者3配置发布者4配置订阅者5启动复制具体步骤和代码示例步骤1:创建发布者首先,我们需要创建一个发布者(即主数据库),用来......
    • Java 基础 - 泛型机制详解
      著作权归@pdai所有原文链接:https://pdai.tech/md/java/basic/java-basic-x-generic.html Java泛型这个特性是从JDK1.5才开始加入的,因此为了兼容之前的版本,Java泛型的实现采取了“伪泛型”的策略,即Java在语法上支持泛型,但是在编译阶段会进行所谓的“类型擦除”(TypeErasure),将......
    • vue 项目打包iOS 配置
      Vue项目打包iOS配置Vue.js是一款用于构建用户界面的渐进式JavaScript框架。在开发过程中,我们经常需要将我们的Vue项目打包成iOS应用程序。本文将向您介绍如何配置一个Vue项目以打包成iOS应用程序,并提供代码示例供参考。安装依赖在开始之前,我们需要安装一些必要的......
    • vue ios白屏
      如何解决VueiOS白屏问题简介在Vue开发过程中,偶尔会遇到iOS设备上页面白屏的问题。这个问题通常是由于iOS的Webview在加载Vue应用时出现的一些兼容性问题导致的。本文将介绍如何解决VueiOS白屏问题,并提供一些代码示例来帮助你完成解决方案。解决流程下面是解决VueiOS白屏问题......
    • vue axios 实现页面跳转
      实现Vue页面跳转的步骤为了实现Vue页面跳转,我们需要使用VueRouter和Axios两个库。VueRouter是Vue官方提供的路由管理器,用于实现页面之间的跳转和导航。而Axios是一个基于Promise的HTTP库,用于发送异步请求和处理服务器返回的数据。下面是实现Vue页面跳转的步骤和相应的代码:......
    • unipush (iOS APP) 前台运行可收到消息,离线或后台运行收不到推送消息
      实现iOSApp前台运行可收到消息,离线或后台运行收不到推送消息流程步骤步骤内容1创建App证书和推送证书2配置App的推送能力3注册远程通知4处理接收到的推送消息5处理App在不同状态下收到推送消息的情况步骤详解步骤1:创建App证书和推送证书在Apple......