自分でiOSアプリを開発したいと考えている人も多いのではないでしょうか?iOS アプリを開発するにはいくつかの方法があります。1 つは「正式な」方法、つまり Xcode+ObjC です。ただし、これには、ObjC 言語の学習と Xcode 開発環境のセットアップの両方が必要です。すべてが完了しても、iPhone/iPad でアプリを実行するのはまだ非常に困難です。
ただし、Safari ブラウザには、Web ページをデスクトップに追加し、独立したアプリとして実行する機能が提供されています。この機能があれば最高ですね!Web 言語 (HTML+CSS+JS) を直接使用して iOS アプリを開発することができ、非常に簡単です。
1. 環境設定
1. Linux環境のインストール
Web を使用してアプリを作成するには、まず Web サービスを実行する必要があります。このステップには 2 つの方法があります。
1 つ目: サーバー/コンピューターを見つけて、その上で Web サービスを実行します。この方法は可能ですが、パブリック IPを持つサーバーが必要です(そうしないと外部からアプリにアクセスできません)。ただし、この方法では、他の人のためにアプリを「インストール」する可能性があります。この記事ではこの方法は使用しません。
2 番目: iPad で Web サービスを実行します。この方法にはパブリック IP は必要ありませんが、使用できるのは独自のアプリのみです。この記事ではこのアプローチを使用します。
iOS ではアプリが基礎となるレイヤーにアクセスすることを許可していないため、iOS が Linux をベースにしているとしても、Web サービスを iOS 上で直接実行することはできません。ただし、最初に Linux 環境をインストールしてから、Linux 環境に Web サービスをインストールすることもできます。
Linux環境をインストールするにはどうすればよいですか?
実際には、App Store で iSH というアプリケーションをインストールするだけです。
インストールが完了したら、アプリケーションを開くと、Linux シェルが表示されます。
2. いくつかのツールをインストールします
iSH は apk パッケージ マネージャーをサポートしています。次のコマンドを使用してパッケージをインストールできます。
apk add 软件包名
今日使用するソフトウェアをインストールしましょう。
apk add vim python3
ソフトウェア パッケージをインストールするときは、アプリを開いたままにしてください。そうしないと、インストールが失敗する可能性があります。
3. Webサービスを開始する
なぜ python3 をインストールするのですか? Web 開発を使用していませんか?
実際、今日は python3 に付属する Simple HTTP サービスを使用します。
まず、Web サービスのルート ディレクトリとして新しいディレクトリを作成します。
mkdir www
cd www
次に、Python3 で HTTP サービスを開始します。
python3 -m http.server 80
python3 は、現在のディレクトリを Web サイトのルート ディレクトリとして使用します。80 はポート番号です。
Nginx/Apache を使用しないのはなぜですか?
iSH は Alpine Linux に基づいて実装されています。Alpine Linux は小規模な Linux システムであるため、フル機能はあまりありません。iSH 上で Nginx を実行すると、アクセスできなくなります。Apacheは試していません。ただし、いくつかの小規模なアプリケーションを開発する場合、そのような強力な Web サーバーは必要ありません。
4. 安定した動作
Python3 はあまり安定していません。場合によっては、Web サーバーがエラーを報告して終了することがあります。
安定させるには、非常に簡単な方法があります。while true ループを直接追加すると、終了後に自動的に再起動されます。
while true; do python3 -m http.server 80 > /dev/null 2> /dev/null; done &
http.server は受信した HTTP リクエストを自動的に出力するため、出力されないようにするにはコマンドの後に > /dev/null 2 > /dev/null を追加します。端末に影響を与えずにバックグラウンドで実行するには、コマンドの後に & を追加します。
5.電源投入後、自動的に起動します。
iSH アプリを閉じて(ターミナルで終了コマンドを入力するか、ホームボタンを 2 回押して iSH を閉じるか、iPhone/iPad を再起動する)、再度開いた場合、Web サーバーは実行されません。長時間実行するには、起動時に自動的に起動する必要があります (つまり、iSH を開いたときに自動的に実行されます)。
どうやってするの?
実際には、/etc/profile ファイルを編集するだけで済みます。
vim /etc/profile
次の 3 行のコードを最後に追加します。
cd /root/www
while true; do python3 -m http.server 80 > /dev/null 2> /dev/null; done &
cd ~
/etc/profile 内のコマンドは起動時に自動的に実行されます。
変更が完了したら、「exit」と入力すると、iSH が自動的に終了します。アプリを再度開くと、Web サーバーが自動的に実行されます。
6. バックグラウンドで実行する
iPhone/iPad で他のアプリケーションを開いている場合、30 秒後に Web サーバーに接続できなくなります。これは、他のアプリを開いたときに iOS が iSH をバックグラウンドに置くためです。iOS のバックグラウンド強制終了は非常に強力で、iSH がバックグラウンドで 30 秒間実行されると、iOS によって一時停止されます。
何をするか?
または、/etc/profile を変更し、最後にコード行を追加します。
cat /dev/location > /dev/null &
次に、exit を入力して、iSH を再度開きます。
iSH は位置情報を取得する許可を求めます。必ず「常に許可」を選択してください。(このオプションがない場合は、「設定」->「プライバシー」->「位置情報」で「常に許可」に設定してください)
これにより、バックグラウンドで実行できるようになります。
cat /dev/location とはどういう意味ですか?
/dev/location は、iSH に付属するデバイス ファイルで、現在の地理的位置を示します。cat /dev/location を実行すると緯度と経度が出力されます。
なぜこれがバックグラウンドで実行できるのでしょうか?
常に位置情報を取得するアプリがある場合、iOS はそのアプリをバックグラウンドで実行できるようにするためです。