Apliko を試用頂きましたお客様から「アプリが起動しない(すぐ落ちる)」とのお問い合わせを何度か頂戴しました。原因を調査した結果、「サーバーが TLS 通信に対応していない(SSL 証明書が入っていない)」「自己署名証明書を利用している」など、いずれも TLS 通信に関係するものでした。
iOS ではセキュリティ確保のために「App Transport Security (ATS)」と呼ばれる仕組みを採用しており、外部とのネットワーク接続に TLS 通信を必要とします。また、証明書が無効な場合は接続が確立されません。そのため、アプリ動作の必須である設定ファイルを読み込むことができず、アプリが起動しない状態に陥ってしまいました。
対応を検討した結果、設定ファイルの読み込みに失敗した場合はエラーメッセージを出力するよう改善することを計画いたしました。しかしながら、自己署名証明書については残念ながら対応することができません。なぜなら、自己署名証明書に対応するコードをアプリに入れてしまうと審査でリジェクトされるためです。
そのため、Apliko をお試し頂く場合は有料の SSL 証明書、もしくは無料SSLサーバ証明書「Let's Encrypt 」が利用できるサーバー環境をご用意頂きたいと思います。最近ではウェブサイトの運用においても常時 SSL/TLS 通信化がトレンドとなっておりますので、SSL/TLS 通信をまだご利用でないお客様はこれを機にご検討されてみてはいかがでしょうか。
イントラネット・ローカルマシンにサーバーを立てていらっしゃる場合は認証局発行の証明書が利用できませんので、HTTP 通信でご利用頂くようになります。その際、iOS ではアプリの設定を変更して頂く必要がございます。Movable Typeの管理画面を開き、ウェブサイトの全般設定にあるウェブサイトURLの設定を「http://」から始まるように変更し、ウェブサイト・ブログの再構築とアプリのエクスポートを実施した上で、下記の作業を実施してください。
- 画面一番左のエリアに表示されている「SiteReader」を選択します。
- TARGETSの下にある「SiteReader」を選択します。
- 画面上部にGeneral, Capabilities, ...と並んでいる中から「Info」を選択します。
- 「App Transport Security Settings」の左の▶をクリックして開きます。
- 開いた中にある項目「Allow Arbitary Loads in Web Content」をマイナスボタンで削除します。
- アプリをビルドします。