Frage Google App Engine APNS


Ich entwickle die Serverseite für eine iOS App mit Google App Engine und JDO in Java, und ich habe gerade festgestellt, dass GAE den Apple Push Notification Service nicht unterstützt, und ich bin sehr frustriert.

Ich habe schon viele Lösungen gesehen wie Urban Airship, xxtify, etc; Aber es ist zu teuer, wenn ich eine große Anzahl von Benutzern erreiche.

Außerdem habe ich über Javapns und Ähnliches nachgedacht, aber GAE unterstützt auch nicht BouncyCastle.

Ich möchte wissen, ob es eine kostenlose oder kostengünstige Lösung für Support APNS in meinem GAE-Server gibt, weil ich 200 $ pro Monat nicht bezahlen kann. Wenn es keine Lösung für mein Problem gibt, wäre es möglich gewesen, einen anderen Server zu bauen, nur um die Apple Push-Benachrichtigung mit Javapns zu machen, und dass meine GAE damit spricht?


6
2017-10-31 09:38


Ursprung


Antworten:


Ich benutze die 3rd-Party-Bibliothek Notnoop / Java-APNs. Es ist einfach zu bedienen. Das einzige Problem, das Sie erfüllen könnten, ist die Thread-Begrenzung auf der GAE wie unter Java Ausnahme:

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

Das Problem ist in der Version gelöst 1.0.0.Beta3 in der maven zentral. Die Detaillösung wird in dieser Pull-Anforderung erläutert # 162.

Das Beispiel-Code-Snippet zum Vorbereiten und Senden von Push-Benachrichtigungen an APNs ist wie folgt: Der Schlüssel zur Lösung der Thread-Beschränkung ist die Methode withErrorDetectionThreadFactory wie nachstehend

// 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);

3
2017-07-23 02:17



AppEngine unterstützt jetzt Sockets, so dass Sie jetzt eine leicht modifizierte Version von javapns verwenden können. Ich habe erfolgreich PyAPNs auf AppEngine (Python) arbeiten, die die neue Socket-Funktionalität in 1.7.7 verwendet.

Wenn Sie an meinem Python AppEngine-Projekt interessiert sind, das APNS ausführt, lassen Sie es mich wissen und ich werde meine Antwort mit einem Link bearbeiten. Jedes Mal, wenn ich hier einen Link poste, löscht ein Moderator meine Antwort aus irgendeinem Grund


1
2018-04-18 15:19



Da Sie es für den Chat benötigen, versuchen Sie, die Push-Benachrichtigungen intern vom Client selbst zu veröffentlichen (während Ihr Server die Push-Token Ihrer Freunde bereitstellt). Es kann gut zu Ihrem Chatvorschlag passen.


0
2017-12-27 08:19



Appengine unterstützt jetzt Sockets in 1.7.7, so dass Sie APNS verwenden können. Die Java-Laufzeitumgebung kann die java-apns-Bibliothek mit einer geringfügigen Änderung verwenden. Hier ist ein Blogpost zu den notwendigen Änderungen.


0
2018-04-28 19:19



eine sehr gute Nachricht in der Tat .... offizielle Unterstützung jetzt nicht mehr in der Beta verfügbar

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


0
2017-07-03 19:53



Google unterstützt offiziell die Push-Benachrichtigung von iOS. Sie können sich diesen Beispielcode ansehen: ios-Push-Benachrichtigung-Beispiel-Backend-Java und Google's Post: Die Google App-Engine macht sich keine Sorgen mehr über das Senden von IOS-Push-Benachrichtigungen


0
2017-08-07 06:30



Es gibt einen Thread, der dies diskutiert Hierund du kannst dich für die Beta-Sockets anmelden Hier.

Ich habe keine Ahnung, ob das dich das tun lässt, was du tun willst, aber die Leute auf dem letzten Thread scheinen zu denken, dass es so sein wird.


0
2017-10-31 11:40