WebSocket接続を介して通信するiPadアプリのWebビューのWebページで実行されるjavascriptクラウドアプリを作成しましたが、httpsではなくhttpサイトにいる場合にのみ機能します。そうしないと、CFNetwork SSLHandshake failed (-9806)エラーが発生しますXcode および Web サイトでは、ハンドシェイク中にタイムアウトと表示されます。
これは、iPad の Web サーバーが HTTPS ではなく HTTP で実行されているためですか?
JAVASCRIPTクラウドアプリ
クラウド内のこの部分は、iPad で Web サーバーに接続するときに HTTP で機能します。
var protocol = "ws";
if (this.useSecureConnection)
protocol = "wss";
var url = protocol+'://localhost:'+this.port+'/service';
this.connection = new WebSocket(url);
Xcode iOS iPad アプリ (Objective-C)
それが問題だと思ったので、HTTPS を有効にしようとしましたが、「sslIdentityAndCertificates」メソッド用に何を作成すればよいかわかりません。
- (BOOL)isSecureServer
{
HTTPLogTrace();
// Override me to create an https server...
return YES;
}
/**
* This method is expected to returns an array appropriate for use in kCFStreamSSLCertificates SSL Settings.
* It should be an array of SecCertificateRefs except for the first element in the array, which is a SecIdentityRef.
**/
- (NSArray *)sslIdentityAndCertificates
{
HTTPLogTrace();
return nil;
}
私が見た他の投稿のいくつかは、iOS ではなく Mac でのみ利用可能な API を使用しています。
ATS アクセス許可の組み合わせもいくつか試しました。すべての結果、HTTPS は WebSocket 接続を許可しませんでした。
どんな助けでも大歓迎です!:)