苹果推送异常处理

异常”Received fatal alert: certificate_unknown”

从网络上搜索此异常,给出最多的解答是证书导出不正确。根据说明的步骤和方法再次导出后,我分别使用IntelliJ idea和Eclipse开发工具进行iOS push的时候,程序一直报错 > Received fatal alert: certificate_unknown

不能不解决这个问题,所以继续google,不经意间查看到导出的p12文件跟我们的Java环境有关系。所以我把JDK7替换到了JDK6,然后继续在IntelliJ idea和Eclipse上运行,Eclipse这次居然能正确运行了,但是IntelliJ idea还是不能运行。

MacBookPro自动切换网络和代理

##背景1 在公司网络是使用dhcp分配的,但是经常要变更IP,所以我自己就使用网络偏好设置,更改为(使用dhcp-手动设定地址),保证我的I

[Ruby]gemfile.lock文件引发的困惑

Gemfile.lock的英文说明: When you run bundle install, Bundler will persist the full names and versions of all gems that you used (including dependencies of the gems specified in the Gemfile(5)) into a file called Gemfile.lock. Bundler uses this file in all subsequent calls to bundle install, which guarantees that you always use the same

redis在Ruby上客户端使用疑云

ruby中使用redis客户端 1. 首先在Gemfile里面添加 gem ‘hiredis’ gem ‘redis’ 2. 然后在主目录下的application.rb文件里面添加 1 2 3 4 5 6 case

苹果推送机制APNs(二)

上一篇介绍了一下APNs的基本原理和处理流程,通过介绍,对APNs的机制有了大致的了解后,我们就来看看如何把APNS服务集成到我们自己的项目

苹果推送机制APNs(一)

推送是解决轮询所造成的流量消耗和电量消耗的一个比较好的解决方案,在Android上,虽然Google提供了GCM(之前为C2DM),但在国内基本等于没用,各大Android应用基本都自己架设推送Server或是使用第三方推送平台,例如新浪微博使用第三方推送平台“个推”(非广告大笑)。今天要学习的是苹果提供的推送服务APNs(Apple Push Notification services)基本原理和工作流程。 apns 苹果的推送服务APNs基本原理简单来说就是苹果利用自己专门的推送服务器(APNs)接收来自我们自己应用服务器的需要被推送的信息,然后推送到指定的iOS设备上,然后由设备通知到我们的应用程序,设备以通知或者声音的形式通知用户有新的消息。推送的前提是装有我们应用的设备需要向APNs服务器注册,注册成功后APNs服务器会返给我们一个device_token,拿到这个token后我们将这个token发给我们自己的应用服务器,当有需要被推送的消息时,我们的应用服务器会将消息按指定的格式打包,然后结合设备的device_token一并发给APNs服务器,由于我们的应用和APNs维持一个基于TCP的长连接,APNs将新消息推送到我们设备上,然后在屏幕上显示出新消息来。整个过程基本就这样,下面我们看一下设备注册APNs的流程图: 注册apns流程图 上图完成了如下步骤: 1.Device连接APNs服务器并携带设备序列号 2.连接成功,APNs经过打包和处理产生device_token并返回给注册的Device 3.Device携带获取的device_token向我们自己的应用服务器注册 4.完成需要培推送的Device在APNs服务器和我们自己的应用服务器注册 执行顺序如下所示: 执行顺序 这里要提到的一点是,我们的设备和APNS服务器之间的通讯是基于SSL协议的TCP流通讯,二者之间维持一个长连接,当从APNS服务器注册成功后,一定要将device_token发送给我们的应用服务器,因为在推送过程中,首相是由我们的应用服务器(上图中Provider)将需要推送的消息结合device_token按指定格式(后面会提到)打包然后发送给APNS服务器,然后由APNS服务器推送给我们的设备。 好了,注册设备的过程完成了,接下来就是如何推送了: 推送方法 推送的过程经过如下步骤: 1.首先,安装了具有推送功能的应用,我们的设备在有网络的情况下会连接苹果推送服务器,连接过程中,APNS会验证device_token,连接成功后维持一个长连接; 2.Provider(我们自己的服务器)收到需要被推送的消息并结合被推送设备的device_token一起打包发送给APNS服务器; 3.APNS服务器将推送信息推送给指定device_token的设备; 4.设备收到推送消息后通知我们的应用程序并显示和提示用户(声音、弹出框) 比较直观的流程参照下图: 流程图 上图显示了我们的应用服务器将消息推送到我们的App的完整路径,其实真正完成推送的是APNS服务器,我们自己的应用服务器只是将需要推送的消息告诉苹果服务器,至于如何维护消息队列或如何保证消息能被推送到指定的设备上,这些都由苹果APNS给我们做完了。