Google app engine 谷歌应用引擎APNS

Google app engine 谷歌应用引擎APNS,google-app-engine,apple-push-notifications,Google App Engine,Apple Push Notifications,我正在用Google app Engine和Java中的JDO为iOS应用程序开发服务器端,我刚刚意识到GAE不支持Apple推送通知服务,我非常沮丧 我见过很多解决方案,如城市飞艇、xtify等;但是如果我想拥有大量的用户,那就太贵了 此外,我一直在调查Javapns和类似产品,但GAE也不支持BouncyCastle 我想知道我的GAE服务器上是否有免费或低成本的支持APN的解决方案,因为我不能每月支付200美元。 如果我的问题没有解决方案,是否有可能只为使用javapns进行Apple推送

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

我见过很多解决方案,如城市飞艇、xtify等;但是如果我想拥有大量的用户,那就太贵了

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

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

有一个线程正在讨论这个问题,您可以注册sockets beta


我不知道这是否会让你做你想做的事,但后一条线索上的人似乎认为会

因为您需要它来聊天,所以尝试考虑从客户端本身内部发布推送通知(同时您的服务器提供朋友的推送令牌)。它非常适合您的聊天计划。

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


如果你有兴趣看我的PythonAppengine项目,它提供APNS,请告诉我,我将编辑我的答案并链接到它。每次我在这里发布链接,主持人都会出于某种原因删除我的答案。Appengine现在支持1.7.7中的套接字,因此您可以使用APNS。java运行时只需稍加修改即可使用java apns库

确实是个好消息。。。。官方支持现在不再提供beta版


谷歌正式支持iOs推送通知。您可以查看以下示例代码:和Google的帖子:

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

java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "modifyThreadGroup")
这个问题在maven central的版本中得到了解决。详细的解决方案将在本请求中解释

因此,准备并向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);
//准备ApnsService
ClassPathResource证书=新的ClassPathResource(“aps_production.p12”);
ApnsService服务=null;
试一试{
service=APNS.newService()
.withErrorDetectionThreadFactory(ThreadManager.currentRequestThreadFactory())//使用GAE currentRequestThreadFactory
.withCert(certificate.getInputStream(),certificatePassword)
.withProductionDestination()
.build();
}捕获(InvalidSSLConfig | IOE异常){
logger.warn(“无法初始化APNs服务”);
}
//发送通知
字符串apnsPayload=APNS.newPayload()
.alertBody(“测试警报”)
.徽章(1)
.声音(“默认”)
.customField(“类型”、“一般”)
.build();
服务推送(,呼吸暂停);

您可以查看
java apns gae


这是一款专为在谷歌应用程序引擎上工作(和使用)而设计的软件。

谢谢,但它仍处于测试阶段,我需要在短时间内完成。我已经注册了,但我没有任何希望。如果你有大量的用户,GAE提供的免费配额在任何情况下都不可能足够。是的,当然,你可以建立另一个GAE对话的服务器。当然,但我不想只为苹果的通知建立一个服务器。我正在寻找在GAE中制作APN的方法,但我不知道Urban Airship是否对少量用户免费,或者我的服务器是否会收到大量通知的用户(我正在建立聊天室,因此如果我写消息,必须向其他人发送通知)。无论如何,谢谢你。