2012-10-31 39 views
6

私はJavaでGoogle App EngineとJDOを使ってiOSアプリケーションのサーバー側を開発しましたが、GAEがApple Push Notification Serviceをサポートしていないことに気付きました。Google App Engine APNS

私はUrban Airship、xtifyなどのソリューションがかなり見られました。それは私が重要な量のユーザーを持つようになると高価すぎる。

さらに、私はJavapnsと同様のことを調べていますが、GAEはBouncyCastleをサポートしていません。

私は月額200 $を支払うcan`tためのサポートAPNSのための無料または低コストのソリューションは、私のGAEサーバに存在しているかどうかを知りたいです。 問題が解決しない場合は、javapnsを使用してアップルのプッシュ通知を行うためだけに別のサーバーを構築することができましたか?GAEと話し合っていますか?

答えて

0

スレッドについて議論しています。ソケットhereにサインアップすることができます。

あなたがやりたいことをやり遂げることができるのかどうかは分かりませんが、後者のスレッドの人々はそれがそうなると思います。

+0

まだベータ段階ですが、私は短期間で必要です。私はサインアップしましたが、私は希望がありません。 –

+0

大量のユーザーがいる場合は、GAEが提供する無料のクォータが十分であるとは考えられません。もちろん、GAEが話している別のサーバーを構築することもできます。 –

+0

もちろん、私はAppleの通知のためだけに1台のサーバーを構築したくありません。私はGAEでAPNSを作成する方法を模索していますが、Urban Airshipが少量のユーザーのために無料であるかどうか、またはサーバーがあまりにも多くの通知を持つユーザーをたくさん抱えるかどうかはわかりません(私はチャットを作成しています私はメッセージを書いて、他の人に通知しなければなりません)。とにかくありがとう。 –

0

あなたは(あなたのサーバーは、あなたの友人のプッシュトークンを提供しながら)、クライアント自体から内部でプッシュ通知を掲示するの思考をしようと、チャットのためにそれを必要とするので。あなたのチャットにうまくフィットすることができます。

1

AppEngineはソケットをサポートするようになりましたので、少し修正されたバージョンのjavapnsを使用できるようになりました。私は、1.7.7で新しいSocket機能を使用するAppEngine(Python)でPyAPNを動作させることに成功しました。

あなたはAPNSを行い、私のpythonのAppEngineのプロジェクトを見ることに興味があるなら、私に知らせて、私はそれへのリンクを私の答えを編集します。私がここにリンクを投稿するたびに、モデレータが何らかの理由で自分の答えを削除します

3

私はサードパーティのライブラリnotnoop/java-apnsを使用しています。それは使いやすいです。問題は、Mavenの中央にバージョン1.0.0.Beta3で解決され

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

:Javaの例外以下のようにあなたが会うことができる唯一の問題は、GAE上のスレッドの制限です。詳細は、このプルリクエスト#162で解説しています。

だから、のAPNにプッシュ通知を作成し、送信するための例示的なコード・スニペットは、以下のようなものである必要が​​をチェックアウトできる

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

以下のように、スレッドの制限を解決する鍵は、方法withErrorDetectionThreadFactoryあります。

open-source Java APNS library Google App Engineで動作するように特別に設計されています。