APNs
検索して出てくる情報を読んでいけば、だいたいできるようになるので、それ以外の雑多な情報。
でもAppleのドキュメントは最初に一通り読んでおいたほうがいい。
- Local and Push Notification Programming Guide: About Local Notifications and Push Notifications
https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Introduction.html - LocalおよびPush Notificationプログラミングガイド
https://developer.apple.com/jp/devcenter/ios/library/documentation/RemoteNotificationsPG.pdf - Technical Note TN2265: Troubleshooting Push Notifications
https://developer.apple.com/library/ios/technotes/tn2265/_index.html
5000バイトごとに切断する件
Appleのドキュメントには、ソケット接続したら接続したままにしてくれ、と書いてあるのだが、連続して送信しているとAPNsサーバ側から切断されてしまう。
Webの情報を元に、5000バイトごとに切断して再接続すると、確かにうまいこといく。これはこういうものだということか。昔の携帯メールへの送信制限みたいな感じ?
- iPhoneにPUSH通知を送る - CentOSでサーバー構築→LAMP環境でWEBプログラミング・・・入門
http://begin-centos.com/archives/2013/0630_144800.html
送信するバイナリデータ形式
APNsサーバ側証明書の検証
- Entrustのサイトからルート認証局の証明書をダウンロードする。以前は、sandboxと製品環境で証明書が違ったようだが、2010/12/22以降の現在は同じものでいい。
- PHPでの実装の場合、明示的にこの認証局証明書を指定してあることが多い。
- Javaの場合、jre/lib/security/cacertsに、最初から入っていることを前提としてある場合がある。2010年より前の古いJREでは入ってないかも。
- Home ・ notnoop/java-apns Wiki ・ GitHub
https://github.com/notnoop/java-apns/wiki - javaでSSL接続をすると、PKI PATHの構築に失敗となる | メランジ雑記帳
http://www.melange.co.jp/blog/?p=2345
InstallCert.javaを使うと、サーバの証明書が入ったcacertsファイルができる。使わなかったけど便利そうなので、メモ。
証明書に設定したパスワード間違い
java.io.IOException: failed to decrypt safe contents entry: javax.crypto.BadPaddingException: Given final block not properly padded
SSL接続でクライアント側証明書のパスワードが間違っていた時に出る例外。
ま、そういうケースもあるということで。
異なるプロバイダ側サーバから同じ証明書(クライアント側)でアクセスしても、特に問題はないみたい。
Appleのドキュメントには特に書いてないけど、プロバイダ側のサーバを複数立てて全然違うIPアドレスでもいいみたい。
- iphone - APNS Send notifications from multiple servers - Stack Overflow
http://stackoverflow.com/questions/3512727/apns-send-notifications-from-multiple-servers - ios - Can two servers from different domains subscribe for events from APNS? - Stack Overflow
http://stackoverflow.com/questions/19671781/can-two-servers-from-different-domains-subscribe-for-events-from-apns