`

最好用的Java APNS类库---消息推送

 
阅读更多
我在公司的项目组一直都在做一款ios应用,涉及到聊天功能,当用户在线时,可以使用长连接将消息推送过去,但应用可能并不处于运行中,比如用户关闭应用,或者切换到后台10分钟后应用会停止运行。如果这时需要给用户推送消息,那怎么办呢?此时就需要用到APNS(Apple Push Notification Service),网上关于APNS的介绍一大堆,这里就不做过多叙述了。大概是这么一个过程:我的server将消息发到苹果的服务器(APNS Server),苹果服务器再将消息转发到用户的iphone上,iphone收到消息后再弹窗提示用户。我们需要做的就是将消息发给APNS Server。下图是iphone收到通知后的截屏: 
 

      我是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
分享到:
评论

相关推荐

    IOS远程推送php测试--ApnsPHP-master

    在iOS应用开发中,远程推送通知(Remote Push Notification)是一项重要的功能,它允许开发者在用户不使用应用时向他们发送消息或更新。本资源“IOS远程推送php测试--ApnsPHP-master”提供了一套基于PHP的远程推送...

    iphone消息推送APNS

    **苹果推送通知服务(Apple Push Notification service,简称APNS)** APNS是苹果公司提供的一项服务,用于向iOS、iPadOS、watchOS、tvOS以及macOS设备推送通知。通过APNS,应用开发者可以在他们的应用不在前台运行...

    苹果消息推送 java端

    苹果消息推送(Apple Push Notification service, APNs)是苹果公司为开发者提供的一项服务,用于向iOS、iPadOS、watchOS、tvOS以及...通过研究这个项目,你可以深入理解如何在Java环境中有效利用APNs进行消息推送。

    .net APNS推送

    在这个项目中,.NET Framework提供了必要的类库和工具,使得开发者可以方便地创建APNS推送服务的实现。 3. **.NET APNS推送实现**: 在.NET环境中实现APNS推送,通常需要以下步骤: - **证书准备**:首先,开发者...

    php-APNS苹果推送通知服务的服务器端公共类.zip

    APNS(英文全称:Apple Push Notification Service),中文翻译为:苹果推送通知服务,该技术由苹果公司提供的APNS服务,下面是一个比较完善的苹果推送通知服务的php服务器端公共类.

    C# .net 实现APNS

    在IT行业中,苹果推送通知服务(Apple Push Notification Service,简称APNS)是苹果公司提供的一项服务,用于向iOS、iPadOS、watchOS以及macOS设备发送实时的通知。开发者可以使用APNS来实现在应用程序不在前台运行...

    .NET推送消息源码

    然后,创建相应的推送服务实例,如`ApnsService`或`GcmService`,并调用其方法来发送消息。消息可以包含标题、正文、图标和其他自定义数据,具体取决于目标平台的支持。 在推送过程中,`PushSharp`会处理错误和异常...

    苹果推送多线程

    根据提供的文件名,像是一个完整的APNs推送服务的项目,包含解决方案文件(JdSoft.Apple.Apns.sln)、模型文件(Models)、APNs相关的类库(APNS)、反馈服务(JdSoft.Apple.Apns.Feedback)以及测试项目(JdSoft....

    百度推送C#源码

    - iOS:百度推送服务支持APNs(Apple Push Notification service)协议,开发者需要获取苹果的推送证书并配置到项目中。 - Android:使用GCM(Google Cloud Messaging,已被Firebase Cloud Messaging取代)或FCM...

    c#友盟推送Demo(包括安卓和IOS) U-Push

    友盟U-Push是由阿里巴巴旗下的友盟提供的推送服务,它允许开发者通过云端平台向用户的设备发送消息,无论是通知、自定义消息或是富媒体消息。其优点在于统一的API接口,跨平台的支持以及丰富的推送策略,如地理位置...

    apns-worker:Apple的推送通知服务的python客户端库

    这是Apple的推送通知服务的客户端库。 它不是第一个用于Python的此类库,但是,通常情况下,现有选项不能完全满足我们的需求: 没有依赖项(六个除外)。 开火,算了。 APNs是一种古怪的二进制协议,经常需要重新...

    javapns-jdk

    JavaPNS是一个开源库,专为Java开发者设计,用于与Apple Push Notification Service (APNs)交互,即向iOS和watchOS设备发送推送通知。在Java后台应用中使用JavaPNS,可以简化与APNs服务器通信的过程,使得开发人员...

    PushSharp移动消息推送库 v4.0.10.zip

    《PushSharp移动消息推送库 v4.0.10——打造高效移动通知系统》 PushSharp,这是一个在移动应用开发领域广泛使用的开源库,专为iOS、Android以及其他平台提供便捷的推送通知服务。版本v4.0.10是其在不断优化与升级...

    ASP.NET实现IOS推送服务器端代码

    在iOS设备上,为了实现实时的消息推送服务,Apple提供了名为Apple Push Notification Service (APNS) 的服务。本文将深入探讨如何使用ASP.NET技术来构建iOS推送服务器端代码。 首先,理解APNS的工作原理至关重要。...

    IOS信息推送.NET

    3. **构建推送消息**:推送消息包含标题、正文、角标和其他可选属性,需要按照APNs的规范格式化。 4. **连接到APNs**:使用证书建立SSL/TLS连接到APNs的生产或开发服务器。 5. **发送通知**:通过连接发送构建好的...

    jsp iOS推送的包

    标题中的“jsp iOS推送的包”指的是一个针对iOS设备进行远程通知推送的开发资源包,主要基于Java平台。这个包包含了一系列的库文件,用于帮助开发者实现从服务器端向iOS客户端发送Push Notification服务。在iOS应用...

    基于Java的即时通信软件

    8. **推送服务**:为了实现实时消息推送,开发者可能需要集成第三方推送服务,如Google的Firebase Cloud Messaging(FCM)或Apple的Push Notification service(APNs)。Java客户端需要适配这些服务的API来接收和...

    Java+XML日程提醒系统.7z

    7. **通知机制**:系统可能集成邮件服务(如SMTP)或者消息推送服务(如Android的GCM或Apple的APNs),向用户发送提醒通知。 8. **用户界面**:可能使用JavaFX或Swing构建图形用户界面,提供友好的日历视图和事件...

    仿QQ开发的即时通讯软件

    这通常涉及后台服务(如Java的ExecutorService)和推送技术,如Google的Firebase Cloud Messaging (FCM) 或Apple的Push Notification Service (APNs)。 9. **好友系统**:仿QQ软件需要实现添加好友、删除好友等功能...

    IOS端的UI聊天组件ChatKit-OC .zip_android_religious72p

    推送服务依赖于苹果的 APNs(Apple Push Notification service),确保用户不会错过任何重要信息。同时,推送服务的集成通常需要与证书管理和设备令牌处理打交道,ChatKit 的封装使得这一过程变得更加简单。 消息...

Global site tag (gtag.js) - Google Analytics