【问题标题】:Which Apple Push Notification Service Java library should I use? [closed]我应该使用哪个 Apple Push Notification Service Java 库? [关闭]
【发布时间】:2013-01-02 02:30:30
【问题描述】:

我需要使用 Apple Push Notification Service (APNS) 从我的 Java 服务器向 iOS 设备发送推送通知

我找到了两个用 Java 发送 APNS 推送通知的库:

  1. java-apns
  2. javapns

但两者似乎都被放弃了(或者至少它们有错误,最后一个版本是一年前的)。

java-apns 有很多 forks。该库是否有任何更新的分支正在积极开发中?还有其他更好的选择吗?

【问题讨论】:

    标签: java ios apple-push-notifications


    【解决方案1】:

    翻了一会儿,我只能找到你提到的那两个库 我查看了 java-apns GitHub 页面上的一些最新分支,我能找到的最新分支是由名为“froh42”的用户完成的。他的叉子位于here [dead]。最近的提交是 4 天前,但我不确定这个人是否真的在添加到 repo 的核心功能,因为它已经很晚了,我太累了,无法检查。

    我的建议是,如果您要使用 java-apns,请查看 froh 的 repo 并查看它是否签出。如果没有,您可以从原始 java-apns repo here 查看分叉列表。抱歉,我无法为您提供更多帮助,祝您好运!

    注意:请勿使用您的任何库,因为这些库基于 Binary Provider API,将从 2020 年 11 月起停止工作!

    【讨论】:

    • 首先,感谢您的回答。在询问之前,我查看了 GitHub 上库的所有分支。其中之一就是你提到的那个。所以我可能会开始尝试这个。
    • 为了将来参考,该分支已关闭并重新加入主干。
    • @stevenelberger 看起来叉子不见了。
    【解决方案2】:

    几个月前,我在我们的一个应用程序的 Java 后端遇到了同样的问题,在搜索了库(实际上这在 Google App Engine 上甚至不是一个可能的选项)后,我找到了Urban Airship

    Urban Airship 是您的后端和各种推送通知服务之间的中间人(它确实支持 APNS,但也支持 android/blackberry/Win)。您只需要在他们的平台上配置您的推送服务,对他们的端点之一实施 REST 调用即可!

    他们有从每月 100 万 (1.000.000) 条通知开始的免费计划。

    到目前为止,服务非常好,它使我们能够快速扩展到其他推送服务,而无需在我们的服务器端实现特定代码。

    【讨论】:

    • 我在 Urban Airship 方面有过一些不好的经历,如果可以的话,我建议你自己做
    【解决方案3】:

    看起来 java-apns 正在更新。上次提交是 1 个月前...

    https://github.com/notnoop/java-apns

    我还没用过,但看起来至少项目没有死。

    2020 年更新:该项目已终止,并且基于已弃用的 API,该 API 将于 2020 年 11 月停止工作。

    【讨论】:

    • 第一次尝试它,它工作正常......可能会使用这个或 JavaPNS。还不确定!
    • 运行哪个 Java 邮件文件来发送 Apple 推送通知?在此代码中何处提供设备令牌和 cert.12 文件?请尽快帮助
    【解决方案4】:

    如果其他人正在寻找 Java 中的 APNs 库,我们 RelayRides 刚刚发布了 Pushy (http://relayrides.github.io/pushy/)。它在某些方面与其他两个竞争者不同(例如异步网络 IO),因此它可以非常快速地发送大量消息。我们实际上也在生产中使用它,所以它由我们的工程师积极维护。享受吧!

    编辑:明确地说,Pushy 是免费和开源的(MIT 许可证)。

    编辑:项目已移至https://github.com/jchambers/pushy

    【讨论】:

    • Pushy 可以在 App Engine 下使用吗?或者,由于缺乏创建套接字的能力,它会无法正常工作?
    • 我不太熟悉 App Engine 或其限制,但如果它限制打开任意网络连接/套接字,我怀疑它不会工作。
    • 对不起,我想我记错了这里的限制。这个问题更多地与限制线程创建有关,而不是与打开套接字有关。我相信后者很好,但在没有额外线程的情况下处理异步 IO 很困难。我喜欢 Pushy 的外观,但我相信它使用库中的额外线程来处理来自 APNS 服务器的响应,我怀疑这些会在 App Engine 上中断。有人试过吗?
    • 关于 App Engine:打开套接字不是问题,但 pushy 使用 App Engine 上受限的 nio 类。也就是说,它不适用于 App Engine。 :( 看起来比任何其他 APNS java 库都更棒。
    • 我选择 Pushy 主要是因为它在 maven 中有一个包。我有一个在 jboss8 (wildfly) 服务器上运行的 Java Web 应用程序,我很惊讶用 pushy 实现推送通知功能是多么容易,它在第一次运行时就没有例外。我对这个选择非常满意。
    【解决方案5】:

    最后我决定在我的项目中使用 JavaPNS (https://code.google.com/p/javapns/),它易于使用且符合我的要求。

    但我最近发现了一个看起来很有前途的新项目,我打算在不久的将来使用。

    AeroGear 项目内部有几个库。其中之一是AeroGear UnifiedPush Server,支持 Apple 的 APN、Google Cloud Messaging 和 Mozilla 的 Simple Push。

    还具有客户端库(iOS、Android),可轻松与服务器集成:

    还有其他一些很酷的功能,例如Administration consoleJava Sender client APIRest API、...

    希望对其他人有所帮助。

    【讨论】:

    • 您在项目中使用 AeroGear 了吗?我正在努力寻找一种方法将其用作推送通知抽象库,而不是完整的服务器。
    【解决方案6】:

    如果您打算使用queue mode,我不会推荐JavaPns,因为您想一次发送许多消息。有一个非常讨厌的Bug,它会让你失去推送通知,但图书馆说,一切都已发送。

    【讨论】:

      【解决方案7】:

      我使用javapns,目前没有发现问题(我的项目还在开发中);但我看到该项目自 2 年前以来没有更新。 并且java-apns一直在更新,我试试看。

      更新了我的答案,我从 3 个月前开始使用 pushy 作为 APN,它确实有更好的性能。现在我建议使用 pushy。

      【讨论】:

        【解决方案8】:

        这个很好用了

        https://github.com/notnoop/java-apns

        我也试过 javaapns

        https://code.google.com/p/javapns/

        但有些方法对我不起作用。它在发送通知时给了我成功 = true 但我的设备无法接收它。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-01-14
          • 2011-01-18
          • 1970-01-01
          • 2017-01-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多