6

Google App Engine と JDO in Java を使用して iOS アプリのサーバー側を開発していますが、GAE が Apple Push Notification Service をサポートしていないことに気付き、非常にイライラしています。

私は、Urban Airship、xtify などのソリューションをかなり見てきました。しかし、重要な数のユーザーを獲得するには費用がかかりすぎます。

また、Javapns などについて調べてみましたが、GAE も BouncyCastle をサポートしていません。

月額 200 ドルを支払うことができないため、GAE サーバーで APNS をサポートするための無料または低コストのソリューションがあるかどうかを知りたいです。私の問題の解決策がない場合、javapns を使用して Apple プッシュ通知を行うためだけに別のサーバーを構築し、私の GAE がそれと通信することは可能でしょうか?

4

8 に答える 8

3

サードパーティのライブラリnotnoop/java-apnsを使用しています。使いやすいです。唯一の問題は、以下の Java 例外のようなGAE のスレッド制限です。

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

この問題は、maven centralのバージョン1.0.0.Beta3で解決されています。詳細な解決策は、このプル リクエスト#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);
于 2014-07-23T02:17:05.260 に答える
1

AppEngine はソケットをサポートするようになったため、javapns のわずかに変更されたバージョンを使用できるようになりました。1.7.7 の新しいソケット機能を使用する AppEngine (python) で PyAPN を正常に動作させることができました。

APNS を実行する私の python AppEngine プロジェクトに興味がある場合は、お知らせください。回答を編集してリンクを追加します。ここにリンクを投稿するたびに、何らかの理由でモデレーターが私の回答を削除します

于 2013-04-18T15:19:54.760 に答える
0

チェックアウトできjava-apns-gaeます。

これは、Google App Engine で動作 (および使用) するように特別に設計されたオープンソースの Java APNS ライブラリです。

于 2014-08-27T10:25:04.907 に答える
0

Appengine は 1.7.7 でソケットをサポートするようになったため、APNS を使用できます。Java ランタイムは、java-apns ライブラリを少し変更して使用できます。 ここに、必要な変更に関するブログ投稿があります

于 2013-04-28T19:19:52.333 に答える
0

これについて議論しているスレッドがここにあり、ここでソケットのベータ版にサインアップできます。

それがあなたのやりたいことをやらせてくれるかどうかはわかりませんが、後者のスレッドの人々はそうなると思っているようです.

于 2012-10-31T11:40:42.503 に答える
0

本当に良いニュースです....公式サポートはベータ版では利用できなくなりました

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

于 2013-07-03T19:53:57.657 に答える
0

Google は公式に iOS プッシュ通知をサポートしています。次のサンプル コードをご覧ください: ios-push-notification-sample-backend-javaおよび Google の投稿: Google アプリ エンジンは、ios プッシュ通知の送信に苦労します

于 2013-08-07T06:30:37.303 に答える