gpt4 book ai didi

google-app-engine - 谷歌应用引擎 APNS

转载 作者:太空宇宙 更新时间:2023-11-03 15:23:03 25 4
gpt4 key购买 nike

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

我见过很多解决方案,例如 Urban Airship、xtify 等;但如果我要获得大量用户,成本就太高了。

此外,我一直在研究 Javapns 和类似的东西,但 GAE 也不支持 BouncyCaSTLe。

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

最佳答案

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

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

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

因此,准备和向 APNs 发送推送通知的示例代码片段如下所示,解决线程限制的关键是方法 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);

关于google-app-engine - 谷歌应用引擎 APNS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13154987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com