Closed15
iOSアプリ作成4:アプリの作成と配布
ここではアプリについて記載する。
前項で述べた通り、アプリはXCode上でSwiftを用いて実装した。
ちなみに、通知を送るためのバッチ処理は、VSCode上でJavaScriptを用いて実装した。
手順
- ドットインストールで Swift の学習(終盤になってからもう少ししっかりと Swift の学習を行なってから実装に移ればよかったと思った)
- バッチの実装
- アプリの実装
実装時に困ったこと
エントリポイントの@main と@UIApplicationMain の差異
- Swift はバージョン等によって書き方が結構異なるようでかなり苦戦した
- 実装を進めていく際に参考にしたサイトなどがバージョンが古いのがたくさんあり、しっかり解釈してから実装を行わなければならなかった。
- Swift 自体の学習があまりできていなかったので、どこが原因で落ちているか分からず、解決に時間がかかった。
- →Swift 5.3 より前のバージョンでは、@main は @UIApplicationMain と呼ばれていた。
- →@UIApplicationMain は、main.swift が無くてもプロジェクトのエントリーポイントにすることができるが UIkit を import しないと使えない。
AppDelegate が呼び出せない
- SwiftUI の新しいライフサイクルにすると@UIApplicationDelegate がなくなるという記事が散見されたので、そのように実装を進めようとしたが、AppDelegate が呼び出せずに困った。
- → しかし、Push 通知などの一部の機能については、UIApplicationDelegate を使う必要があった。
- → また、メソッドの呼び出しのようにできるのではないかと試していたが、@UIApplicationDelegateAdaptor を使わないと AppDelegate が扱えなかった。
画面が真っ暗!!
- プレビューで実行してみたら良い感じだったので、実機で試してみたところ画面に何も映らず困った。
- エントリポイントのところでも記載したが、Swift や Xcode はバージョンによって書き方や自動生成されるファイルが結構違う。
-
画面表示させるためには、ストーリーボードで簡単に実装することができます!!
という記載を発見し、なんだ簡単なんだと思いながら自分のフォルダを確認したところ.......ストーリーボードとか無いんですが...?? - → プロジェクトを作成する際に SwiftUI を選択するとストーリーボードは作成されず、プロジェクトを作成し直さないと行けないとのこと。
- → 結局、@main から View を呼び出すことに成功したが、どのバージョンの記事かよく精査してから読まないと行けなかったと反省。
配布について。アプリの作成後、プロジェクトメンバーへの配布方法を検討した。
iOSアプリの配布方法は、7種類もあるようである。
今回はネイティブアプリを作成したので、Webクリップは関係ない。Androidの人はハナから切り捨てており申し訳ない。また、審査に通るかもわからない上時間がかかるので、Appleへの申請はできればしたくなかった。この時点で選択肢は3つ。
残りを検討する。
- InHouseアプリ
ADEP(Apple Developer Enterprise Program)の契約を締結できている組織だけが利用できる。していないので利用不可。 - AdHocアプリ
動作対象端末のUDID(端末識別子)をあらかじめ収集しておく必要がある。また、配布方法もTestFlight比べて面倒そうだった。
一旦はTestFlightを採用することにした。明確な欠点として以下があるが、今今は許容することにした。
- テスターのiOS端末には TestFlight なるApple公式専用アプリを予めインストールしておく必要がある
- TestFlightアプリでインストールされたテスト用アプリは、有効期限が90日
このスクラップは2023/10/12にクローズされました