Closed15

iOSアプリ作成4:アプリの作成と配布

mikannmikann

ここではアプリについて記載する。

mikannmikann

前項で述べた通り、アプリはXCode上でSwiftを用いて実装した。
ちなみに、通知を送るためのバッチ処理は、VSCode上でJavaScriptを用いて実装した。

mikannmikann

手順

  1. ドットインストールで Swift の学習(終盤になってからもう少ししっかりと Swift の学習を行なってから実装に移ればよかったと思った)
  2. バッチの実装
  3. アプリの実装
mikannmikann

実装時に困ったこと

mikannmikann

エントリポイントの@main と@UIApplicationMain の差異

  • Swift はバージョン等によって書き方が結構異なるようでかなり苦戦した
  • 実装を進めていく際に参考にしたサイトなどがバージョンが古いのがたくさんあり、しっかり解釈してから実装を行わなければならなかった。
  • Swift 自体の学習があまりできていなかったので、どこが原因で落ちているか分からず、解決に時間がかかった。
  • →Swift 5.3 より前のバージョンでは、@main は @UIApplicationMain と呼ばれていた。
  • →@UIApplicationMain は、main.swift が無くてもプロジェクトのエントリーポイントにすることができるが UIkit を import しないと使えない。

https://qiita.com/shtnkgm/items/a793f26445f2b8390bee#uiapplicationmain
https://qiita.com/shtnkgm/items/2cba98b545c913d990bc

mikannmikann

AppDelegate が呼び出せない

  • SwiftUI の新しいライフサイクルにすると@UIApplicationDelegate がなくなるという記事が散見されたので、そのように実装を進めようとしたが、AppDelegate が呼び出せずに困った。
  • → しかし、Push 通知などの一部の機能については、UIApplicationDelegate を使う必要があった。
  • → また、メソッドの呼び出しのようにできるのではないかと試していたが、@UIApplicationDelegateAdaptor を使わないと AppDelegate が扱えなかった。
mikannmikann

画面が真っ暗!!

  • プレビューで実行してみたら良い感じだったので、実機で試してみたところ画面に何も映らず困った。
  • エントリポイントのところでも記載したが、Swift や Xcode はバージョンによって書き方や自動生成されるファイルが結構違う。
  • 画面表示させるためには、ストーリーボードで簡単に実装することができます!!という記載を発見し、なんだ簡単なんだと思いながら自分のフォルダを確認したところ.......ストーリーボードとか無いんですが...??
  • → プロジェクトを作成する際に SwiftUI を選択するとストーリーボードは作成されず、プロジェクトを作成し直さないと行けないとのこと。
  • → 結局、@main から View を呼び出すことに成功したが、どのバージョンの記事かよく精査してから読まないと行けなかったと反省。

https://satoriku.com/main-storyboard-is-not-displayed/

mikannmikann

配布について。アプリの作成後、プロジェクトメンバーへの配布方法を検討した。

mikannmikann

今回はネイティブアプリを作成したので、Webクリップは関係ない。Androidの人はハナから切り捨てており申し訳ない。また、審査に通るかもわからない上時間がかかるので、Appleへの申請はできればしたくなかった。この時点で選択肢は3つ。

mikannmikann

残りを検討する。

  • InHouseアプリ
    ADEP(Apple Developer Enterprise Program)の契約を締結できている組織だけが利用できる。していないので利用不可。
  • AdHocアプリ
    動作対象端末のUDID(端末識別子)をあらかじめ収集しておく必要がある。また、配布方法もTestFlight比べて面倒そうだった。
mikannmikann

一旦はTestFlightを採用することにした。明確な欠点として以下があるが、今今は許容することにした。

  • テスターのiOS端末には TestFlight なるApple公式専用アプリを予めインストールしておく必要がある
  • TestFlightアプリでインストールされたテスト用アプリは、有効期限が90日
mikannmikann

順番が前後するが、実装結果

mikannmikann

画面は以下のようにした。時間が足りなかったため、Tokenの表示トグル以外は飾りである。

このスクラップは2023/10/12にクローズされました