我使用第三方庫notnoop/java-apns。它很容易使用。你能遇到的唯一問題是在GAE像下面的Java異常的線程限制:
java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "modifyThreadGroup")
的問題解決在版本1.0.0.Beta3在Maven中央。詳細解決方案在此拉動請求#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);
謝謝,但它仍處於測試階段,我需要很短的時間。我已經註冊了,但我沒有任何希望。 –
如果您擁有大量用戶,那麼GAE提供的免費配額不可能在任何情況下都足夠。是的,當然,您可以構建另一個GAE會談的服務器。 –
當然,但我不想只爲Apple的通知構建一臺服務器。我正在尋找一種方法來製作GAE中的APNS,但我不知道Urban Airship對於少量用戶是免費的,還是我的服務器會通過太多通知獲得大量用戶(我正在建立聊天,所以如果我寫了一條消息,通知必須發送給其他人)。不管怎麼說,還是要謝謝你。 –