Google App Engine APNS

时间:2012-10-31 09:38:58

标签: google-app-engine apple-push-notifications

我正在为使用Google App Engine和JDO in Java的iOS应用开发服务器端,我刚刚意识到GAE不支持Apple推送通知服务,我非常沮丧。

我看到过像Urban Airship,xtify等解决方案;但是如果我有足够数量的用户,那就太贵了。

此外,我一直在调查Javapns和类似物,但GAE也不支持BouncyCastle。

我想知道在我的GAE服务器中是否有支持APNS的免费或低成本解决方案,因为我不能每月支付200美元。 如果没有我的问题的解决方案,是否可以构建另一个服务器只用于使用javapns进行Apple推送通知,并且我的GAE会与它进行对话?

8 个答案:

答案 0 :(得分:3)

我使用第三方库notnoop/java-apns。它很容易使用。您可以遇到的唯一问题是 GAE上的线程限制,如下面的java异常:

java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "modifyThreadGroup")

该问题已在maven中心版本1.0.0.Beta3中解决。详细解决方案在此拉取请求#162中进行了解释。

因此,准备和向APN发送推送通知的示例代码段如下所示,解决线程限制的关键是方法withErrorDetectionThreadFactory如下

// Prepare ApnsService
ClassPathResource certificate = new ClassPathResource("aps_production.p12");

ApnsService service = null;
try {
    service = APNS.newService()
      .withErrorDetectionThreadFactory(ThreadManager.currentRequestThreadFactory()) // use GAE currentRequestThreadFactory
      .withCert(certificate.getInputStream(), certificatePassword)
      .withProductionDestination()
      .build();
} catch (InvalidSSLConfig | IOException e) {
    logger.warn("Fail to initialize APNs service");
}

// Send notification
String apnsPayload = APNS.newPayload()
    .alertBody("test alert")
    .badge(1)
    .sound("default")
    .customField("type", "general")
    .build();

service.push(<your device id>, apnsPayload);

答案 1 :(得分:1)

AppEngine现在支持套接字,因此您现在应该可以使用稍微修改过的javapns版本。我已经成功地让PyAPNs在AppEngine(python)上运行,它使用1.7.7中的新Socket功能。

如果您有兴趣看到我的python AppEngine项目进行APNS,请告诉我,我将使用链接编辑我的答案。每次我在这里发布链接时,主持人都会因某种原因删除我的答案

答案 2 :(得分:0)

有一个讨论此here的帖子,您可以注册套接字测试版here

我不知道这是否会让你做你想做的事情,但后一线程的人似乎认为它会。

答案 3 :(得分:0)

由于您需要进行聊天,因此尝试在客户端内部发布推送通知(同时您的服务器提供朋友的推送令牌)。它可以很好地适合你的聊天建议。

答案 4 :(得分:0)

Appengine现在支持1.7.7中的套接字,因此您可以使用APNS。 java运行时可以使用java-apns lib进行微小修改。 Here is a blogpost on the modifications needed

答案 5 :(得分:0)

确实是一个非常好的消息......官方支持现在已不再提供测试版

http://googlecloudplatform.blogspot.in/2013/07/google-app-engine-takes-pain-out-of-sending-ios-push-notifications.html

答案 6 :(得分:0)

Google正式支持iOs推送通知。您可以查看以下示例代码:ios-push-notification-sample-backend-java和Google的帖子:Google app engine takes pain out of sending ios push notifications

答案 7 :(得分:0)

您可以查看java-apns-gae

这是专为在Google App Engine上工作(和使用)而设计的open-source Java APNS library

相关问题