我在公司的项目组一直都在做一款ios应用,涉及到聊天功能,当用户在线时,可以使用长连接将消息推送过去,但应用可能并不处于运行中,比如用户关闭应用,或者切换到后台10分钟后应用会停止运行。如果这时需要给用户推送消息,那怎么办呢?此时就需要用到APNS(Apple Push Notification Service),网上关于APNS的介绍一大堆,这里就不做过多叙述了。大概是这么一个过程:我的server将消息发到苹果的服务器(APNS Server),苹果服务器再将消息转发到用户的iphone上,iphone收到消息后再弹窗提示用户。我们需要做的就是将消息发给APNS Server。下图是iphone收到通知后的截屏:
- 浏览: 152584 次
文章分类
- 全部博客 (151)
- Open Source (7)
- kafka (5)
- Web前端 (2)
- 管理工具 (9)
- linux (4)
- 监控系统 (7)
- 数据库 (8)
- Java (56)
- ibatis/mybatis (2)
- mongodb (29)
- hadoop (3)
- hibernate (1)
- spring (6)
- IOS (1)
- Python (1)
- Java Web (4)
- java 压缩 (1)
- redis (11)
- oracle (1)
- nginx (4)
- springbatch (2)
- zookeeper (2)
- 流量复制 (2)
- 技术杂谈 (1)
- HTML5 (1)
- git (1)
最新评论
我是Java码农,网上比较流行的Java APNS的类库主要有两个:1. JavaPNS. 2.Java APNS(notnoop)
JavaPNS优点是简单,但缺点也很明显,效率不高,没有考虑各种通知发送出错的情况。这个库适合那些每天通知发送量特别小,并且用户收没收到也无所谓的应用。
notnoop的Java APNS就要强大很多,目前它应该是使用最多的Java类库。我们也用了将近一年,但随着使用的加深,发现它有很多不完善之处。最严重的问题是,运行一段时间后就死掉了,通知再也发不出去了,但重启下就又恢复了。经查,应该是死锁了,通知堆积在内存中并没有真正发出去。这对于对消息送达率和及时性要求非常高的聊天软件来说,是不能忍受的。因此,打算重写,自己实现!
在这个背景下,dbay-apns-for-java 开源项目应运而生。目前已经放到了Github上供大家下载,中英双语注释,力争每个人都看的懂,地址:https://github.com/RamosLi/dbay-apns-for-java
dbay-apns4j 吸取了其他类库的优点,修正了不足之处,更是将一些极端情况都考虑进去了。比如跟APNS Server建立的长连接,对方可能会单方面关闭连接(connection_idle),此时会造成通知发送看起来成功其实失败的情况,dbay-apns4j也考虑到了。
目前,已经在我的Server上运行一段时间,每天需要发送上百万的消息,表现良好。我自信这是目前最好的Java APNS类库,欢迎大家下载使用,也欢迎指出一些不足之处。
另外:关于APNS的一些深入研究,我在上篇文章中已经写出来了,地址:http://ramosli.iteye.com/admin/blogs/1940843
发表评论
-
Lambda表达式学习总结
2018-02-28 10:48 327Lambda表达式学习总结 lambda其实是对应各种已 ... -
Git详解之二 Git基础
2016-04-20 15:00 599Git 基础 读完本章你就能上手使用 Git 了。本章将介 ... -
JAX-RS服务端接收中文乱码
2015-12-23 10:52 1060还记得在学servlet的时候,处理中文乱码时:如果是GET ... -
mongodb like查询
2015-12-17 10:07 550假如需要查找的字符串为s,则可以用db.tables.fin ... -
redis命令整理
2015-12-16 13:54 5431.批量清除缓存 redis-cli KEYS &q ... -
Linux下安装Nginx详细图解教程
2015-12-15 11:14 581什么是Nginx? Nginx (" ... -
JAX-RS 2.0 REST客户端编程实例
2015-12-14 22:46 1064导读 JAX-RS 2.0 又称 JSR 339 不仅定义 ... -
Java高效读取大文件
2015-12-12 23:35 4831、概述 本教程将演示如何用Java高效地读取大文件。 ... -
dubbo常见问题--使用多个进程启动服务,端口冲突怎么办?
2015-11-24 15:08 4212使用多个进程启动服务,端口冲突怎么办? 注:此为Sprin ... -
Maven 打包时把依赖打包到指定目录方法
2015-11-04 22:13 4882最近系统上线频繁,每次系统上线,当用maven打成war的时候 ... -
maven: 打包可运行的jar包(java application)及依赖项处理
2015-11-04 22:05 1794IDE环境中,可以直接用exec-maven-plugin插 ... -
tomcat下catalina.out日志文件分割
2015-10-28 20:25 602tomcat默认使用java.util.logging记录日 ... -
Java并发编程:阻塞队列
2015-10-28 13:57 519在前面几篇文章中,我们讨论了同步容器(Hashtable、V ... -
java处理图片--图片的缩放,旋转和马赛克化
2015-09-22 22:23 832这是我自己结合网上的一些资料封装的java图片处理类,支持图 ... -
在应用层通过spring特性解决数据库读写分离
2015-09-06 19:57 459如何配置mysql数据库的主从? 单机配置mysql主从: ... -
使用spring aop实现业务层mysql 读写分离
2015-09-06 19:43 441spring aop , mysql 主从配置 实现读写分离 ... -
Java栈与堆 String 详解
2015-09-01 20:10 374Java栈与堆 1. 栈(stack) ... -
java操作mongo的一点记录
2015-08-14 10:35 491一、驱动 mongo对应的java驱动的下载地址 htt ... -
java Future 接口介绍
2015-08-12 09:33 454在Java中,如果需要设定代码执行的最长时间,即超时,可以用 ... -
浅谈Future
2015-08-12 09:32 431Future到底是什么东西?很多人都对这个东西感到特别奇怪( ...
相关推荐
在iOS应用开发中,远程推送通知(Remote Push Notification)是一项重要的功能,它允许开发者在用户不使用应用时向他们发送消息或更新。本资源“IOS远程推送php测试--ApnsPHP-master”提供了一套基于PHP的远程推送...
**苹果推送通知服务(Apple Push Notification service,简称APNS)** APNS是苹果公司提供的一项服务,用于向iOS、iPadOS、watchOS、tvOS以及macOS设备推送通知。通过APNS,应用开发者可以在他们的应用不在前台运行...
苹果消息推送(Apple Push Notification service, APNs)是苹果公司为开发者提供的一项服务,用于向iOS、iPadOS、watchOS、tvOS以及...通过研究这个项目,你可以深入理解如何在Java环境中有效利用APNs进行消息推送。
在这个项目中,.NET Framework提供了必要的类库和工具,使得开发者可以方便地创建APNS推送服务的实现。 3. **.NET APNS推送实现**: 在.NET环境中实现APNS推送,通常需要以下步骤: - **证书准备**:首先,开发者...
APNS(英文全称:Apple Push Notification Service),中文翻译为:苹果推送通知服务,该技术由苹果公司提供的APNS服务,下面是一个比较完善的苹果推送通知服务的php服务器端公共类.
在IT行业中,苹果推送通知服务(Apple Push Notification Service,简称APNS)是苹果公司提供的一项服务,用于向iOS、iPadOS、watchOS以及macOS设备发送实时的通知。开发者可以使用APNS来实现在应用程序不在前台运行...
然后,创建相应的推送服务实例,如`ApnsService`或`GcmService`,并调用其方法来发送消息。消息可以包含标题、正文、图标和其他自定义数据,具体取决于目标平台的支持。 在推送过程中,`PushSharp`会处理错误和异常...
根据提供的文件名,像是一个完整的APNs推送服务的项目,包含解决方案文件(JdSoft.Apple.Apns.sln)、模型文件(Models)、APNs相关的类库(APNS)、反馈服务(JdSoft.Apple.Apns.Feedback)以及测试项目(JdSoft....
- iOS:百度推送服务支持APNs(Apple Push Notification service)协议,开发者需要获取苹果的推送证书并配置到项目中。 - Android:使用GCM(Google Cloud Messaging,已被Firebase Cloud Messaging取代)或FCM...
友盟U-Push是由阿里巴巴旗下的友盟提供的推送服务,它允许开发者通过云端平台向用户的设备发送消息,无论是通知、自定义消息或是富媒体消息。其优点在于统一的API接口,跨平台的支持以及丰富的推送策略,如地理位置...
这是Apple的推送通知服务的客户端库。 它不是第一个用于Python的此类库,但是,通常情况下,现有选项不能完全满足我们的需求: 没有依赖项(六个除外)。 开火,算了。 APNs是一种古怪的二进制协议,经常需要重新...
JavaPNS是一个开源库,专为Java开发者设计,用于与Apple Push Notification Service (APNs)交互,即向iOS和watchOS设备发送推送通知。在Java后台应用中使用JavaPNS,可以简化与APNs服务器通信的过程,使得开发人员...
《PushSharp移动消息推送库 v4.0.10——打造高效移动通知系统》 PushSharp,这是一个在移动应用开发领域广泛使用的开源库,专为iOS、Android以及其他平台提供便捷的推送通知服务。版本v4.0.10是其在不断优化与升级...
在iOS设备上,为了实现实时的消息推送服务,Apple提供了名为Apple Push Notification Service (APNS) 的服务。本文将深入探讨如何使用ASP.NET技术来构建iOS推送服务器端代码。 首先,理解APNS的工作原理至关重要。...
3. **构建推送消息**:推送消息包含标题、正文、角标和其他可选属性,需要按照APNs的规范格式化。 4. **连接到APNs**:使用证书建立SSL/TLS连接到APNs的生产或开发服务器。 5. **发送通知**:通过连接发送构建好的...
标题中的“jsp iOS推送的包”指的是一个针对iOS设备进行远程通知推送的开发资源包,主要基于Java平台。这个包包含了一系列的库文件,用于帮助开发者实现从服务器端向iOS客户端发送Push Notification服务。在iOS应用...
8. **推送服务**:为了实现实时消息推送,开发者可能需要集成第三方推送服务,如Google的Firebase Cloud Messaging(FCM)或Apple的Push Notification service(APNs)。Java客户端需要适配这些服务的API来接收和...
7. **通知机制**:系统可能集成邮件服务(如SMTP)或者消息推送服务(如Android的GCM或Apple的APNs),向用户发送提醒通知。 8. **用户界面**:可能使用JavaFX或Swing构建图形用户界面,提供友好的日历视图和事件...
这通常涉及后台服务(如Java的ExecutorService)和推送技术,如Google的Firebase Cloud Messaging (FCM) 或Apple的Push Notification Service (APNs)。 9. **好友系统**:仿QQ软件需要实现添加好友、删除好友等功能...
推送服务依赖于苹果的 APNs(Apple Push Notification service),确保用户不会错过任何重要信息。同时,推送服务的集成通常需要与证书管理和设备令牌处理打交道,ChatKit 的封装使得这一过程变得更加简单。 消息...