Google App Engine APNS

后端 未结 8 2027
陌清茗
陌清茗 2021-02-06 10:08

Im developing the server side for an iOS app with Google App Engine and JDO in Java, and I just realized that GAE dont support Apple Push Notification Service, and I`m very frus

相关标签:
8条回答
  • 2021-02-06 10:43

    Appengine now supports sockets in 1.7.7 so you can use APNS. The java runtime can use the java-apns lib with a minor modification. Here is a blogpost on the modifications needed.

    0 讨论(0)
  • 2021-02-06 10:44

    I use the 3rd-party library notnoop/java-apns. It is easy to use. The only problem you could meet is the thread limitation on the GAE like below java exception:

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

    The issue is solved in the version 1.0.0.Beta3 in the maven central. The detail solution is explained in this pull request #162.

    So, the example code snippet to prepare and send push notification to APNs is like below, the key to solve the thread limitation is the method withErrorDetectionThreadFactory as below

    // 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);
    
    0 讨论(0)
  • 2021-02-06 10:47

    a very good news indeed .... official support now available no more in beta

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

    0 讨论(0)
  • 2021-02-06 10:57

    There is a thread discussing this here, and you can sign up for the sockets beta here.

    I've no idea if that will let you do what you want to do, but the people on the latter thread seem to think it will.

    0 讨论(0)
  • 2021-02-06 10:58

    Since you need it for chat, trying thinking of posting the push notifications internally from the client itself (while your server providing the push tokens of your friends). It can fit well to your chat propose.

    0 讨论(0)
  • 2021-02-06 10:59

    Google officially supports iOs push notification. You can take a look at this sample code: ios-push-notification-sample-backend-java and Google's post: Google app engine takes pain out of sending ios push notifications

    0 讨论(0)
提交回复
热议问题