20211012のiOSに関する記事は5件です。

Flutterチュートリアル Todoアプリを作ろう! ~環境構築~

この記事を書こうと思った理由  この記事を書く前はFlutterでMarkdownで書けるメモアプリを作成していました。そのアプリの制作が終わったので、ここらへんで一旦自分のFlutterの知識をアウトプットしようと思いこの記事を書きました。 デバック環境 Windows 10 Android 30 Flutter環境構築 FlutterSDKのダウンロード  FlutterSDKのダウンロードリンク ここからSDKをダウンロードしCドライブ直下などに展開してください。 Flutter SDKのパス通し  SDKの展開したフォルダ・ディレクトリの名前が「flutter」になってると思います。その中の「bin」のファルダのパスを通してください。 Android Studioのインストール  Android Studioのダウンロードリンク ここからインストーラーをダウンロードしインストールしてください。 Flutter doctor  コマンドで下のコマンドを打つ。(※パスを通さないとコマンドが通らない) $ flutter doctor 大体はここで「Androidライセンスが*#$*%」みたいなやつが英語で出ることがあるのでつまずきますが、大丈夫です。 そんな時は、Android StudioのSDKマネージャーを開きAndroid SDK => SDK Tools => Android SDK Command-line Tools (latest)にチェックを入れ、右下の「apply」を押してから「ok」を押します。 その後、下のコマンドを打つと「Androidのライセンスを受け入れますか?」的なメッセージが英語で出るので、全部「y」を押しときます。 $ flutter doctor --android-licenses そのあともう一度しっかり「flutter doctor」を確認します。 最後にAndroid StudioにFlutterプラグインを入れる。これが終わればアプリ開発を始めることができます。 参考「Flutter大学」さんの動画を参考にしました。 初めてのFlutterデビュー  まず初めにAndroid Studioを開いて新しいFlutterのプロジェクトを作成します。 「Next」などを押して次に進むと、Flutter SDKのおいてある場所の登録をする画面が出てきます。 そこに環境構築で展開したflutterフォルダーのパスを入れます。 そうするとSDKのパスが登録されます。たまに「SDKがありません」などと出てきますが、パスが通ってないことや「Flutter doctor」をクリアしてないことがよくあります。 そこらへんは、気を付けてください。 Flutterのプロジェクト  Flutterのプロジェクトを作成するといろんなファイルが作成されていますね。 まず「lib」の中には、Flutterのプログラム本体が入っています。これからいじるのはここのプログラムです。 次に「ios」の中には、iosの設定ファイルやFlutterのプログラムをiosのプログラムに移植するためのコードが入っています。 最後に「android」の中には、iosと同じようにAndroidの設定ファイルなどが入っています。  主によくいじるのはここら辺のフォルダにあるファイルです。 そのほかにも「build」フォルダや「dart tool」などいろんなフォルダがあります。 Let`s run の前に  それでは、走らせてみましょう! とその前に、一番左上のFileのボタンを押してその中にある「Project structure」を開きます。そして、<No SDK>と書いてあるところをクリックしSDKを追加します。 追加前 追加後 そして次に、Project structureの左側にある「Modules」をクリックし、todo_appと書かれているところの上の「+」ボタンを押してAndroidのモジュールを追加します。 こうすることで、Android Studioについている機能でエミュレーター(PC上でスマホのOSを実行しアプリをデバックできるもの)の中のファイルを確認出る「Device File Explorer」が使えるようになります。 ここでAndroidのモジュールを追加すると、左側に表示されているファイル・フォルダのリスト(以後エクスプローラーと呼ぶ)の表示が少なくなっていると思います。  これはモジュールを追加したときに、このプロジェクトがAndroidのプロジェクトとして開かれている状態なので普通のFlutterのプロジェクトとして開く必要があります。下の写真のAndroidのところをProjectに変更しておきましょう。 次にアプリを実行する環境を作ります。 それではそのエミュレーターを作っていきましょう。  上の画像のボタンを押します。(AVD Manager) そうすると、AVDのリストが出てきますが初めての場合は何もAVDが無いので作成しましょう。 AVD Managerの下の方にある「Create Virtual Device」を押します。そうするとスマホの機種を選ぶ画面が出てきます。 自分の好きな機種を選びましょう。ただしPlay Storeのところにマークがついているものを選びましょう。(Play Storが必要ならばですが。) 次に進むとAndroidのシステムイメージを選ぶところに来ます。初めての人は使えるAndroidのバージョンが無いと思うので、Recommendedから好きなバージョンのAndroidをダウンロードしてから選択するようにしましょう。 次にAVDの名前を決めるところに来ます。わかりやすい名前を付けましょう。 最後にFinishを押すと、最初のAVDのリスト画面に一つエミュレーターができていることが分かります。 緑のスタートボタンを押してスタートするとAndroidの既視感のある画面が出てきます。 Let`s run !  それでは今度こそほんとに走らせてみましょう。 この写真の左の方に、「emulator-5554(mobile)」と書いてありますが、そこがWebブラウザになっていることがあります。 しっかりとmobileが選択されていることを確認しましょう。 FlutterはWebアプリの開発も出来ます。知らんけど... しっかりmobileを選択しないと勝手にブラウザで実行されます。 そしたら、スタートボタンを押しましょう!初めてのFlutterアプリが動き出します。 初めてのアプリはカウントアプリが立ち上がると思います。遊んでください。 これで環境構築は終了です。 この記事のまとめ mobileの開発はわからないことがいっぱいで、さらにFlutterの環境構築もイミフな奴が多いのでここでしっかりと順番道理に行ってください。 多分成功すると思います。多分!
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

iOS15でAppTrackingTransparency許可ポップアップが表示されなくなる問題解決法

公式フォーラムにて解決方法が提示されておりました https://developer.apple.com/forums/thread/690762 要約すると AppDelegateクラス内のapplicationDidBecomeActiveメソッド内にてポップアップ処理を記述、とのこと その他・雑談 iOS15でポップアップされなくなり審査リジェクトされた方が世界中でいる様子でした ※世界中で困ってた頃のフォーラムは以下でした https://developer.apple.com/forums/thread/690607 アプリ審査リジェクトされると以下のようなメッセージが来ます(参考までに) Guideline 2.1 - Information Needed We're looking forward to completing our review, but we need more information to continue. Your app uses the AppTrackingTransparency framework, but we are unable to locate the App Tracking Transparency permission request when reviewed on iOS 15.0.1. Since you indicated in App Store Connect that you collect data in order to track the user, we need to confirm that App Tracking Transparency has been correctly implemented.
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Xcode13 iOS15でアプリアイコンが表示されないバグについて

はじめに Xcode13・iOS15にアップデートしてから、アプリをXcodeでビルドしてインストールしてもアプリアイコンが反映されなかったので、一時的な方法ではありますが解決方法を残しておきたいと思います。 解決方法 シュミレーターでビルドした場合はインストールしたアプリを一度削除(アプリのアイコンを長押で消せます)してからもう一度ビルドすると反映されます。 実機転送でビルドした場合は、アプリインストール後に端末を再起動すると反映されます。 その他のアプリアイコンの作成などはいつも通りに行っていただいて問題ないと思われます。 iPhoneのバージョンが最新ではない場合はiOS15.0.1からiOS15.0.2にアップデートしてからビルドすると通常通りアプリアイコンの反映がされました。 おそらくiOS15.0.1のバグだったと思われるので、アイコンの反映がされていない場合はまずバージョンが最新か確認をしてから行うと大丈夫そうです。 最後に 簡単な解決方法でしたが、この方法に行き当たるまで30分ほどしどろもどろしたので、同じ問題で悩んでいる方々のお役に立てると嬉しいです。 参考サイト iOS 15 に対応する (Xcode 13.0) Blank App Icon (physical device) - iOS 15 Xcode 13 betas ?参考書籍 SwiftUI対応 たった2日でマスターできるiPhoneアプリ開発集中講座 Xcode 12/iOS 14対応 Swift UI対応 たった2日でマスターできる iPhoneアプリ開発集中講座 Xcode13/iOS15/Swift 5.5対応
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【就活】iOSエンジニア志望の面接で聞かれたことまとめ

はじめに 面接で聞かれたことをまとめていきます。iOSに限らず、エンジニア志望の方に役に立てばいいなと思っています。 具体的な社名などは伏せますし、面接日時や合否は書きません。 「技術」系 「将来」系 「チーム開発」系
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【iOS】続・半強制アップデートの仕組みをカジュアルに実装する

はじめに ユーザの端末にインストールされているアプリのバージョンが古いままだと、最新機能やバグ修正が提供できないだけでなく、メンテナンスが難しくなっていきます。ユーザには常に最新バージョンを使ってもらうのが望ましく、アップデートを促す仕組みは積極的に取り入れた方が良いと考えています。 アプリを起動したとき、最新バージョンがApp Storeにリリースされていることをユーザに伝え、アップデートを促す仕組みをこの記事では半強制アップデートと呼びます。 以前、「【iOS】半強制アップデートの仕組みをカジュアルに実装する」という記事でiTunes Search APIを利用した半強制アップデートの実装を紹介しました。このソースコードは僕が開発しているいくつものアプリに導入されており、これだけ流用するのならばフレームワーク化して一元管理した方が楽になってきます。 ということで、アプリの最新バージョンがApp Storeにリリースされたらアップデートを促す機能を提供するフレームワーク: SwiftyUpdateKitを作りました。なるべく少ないコード量で機能を実装できるように意識して作っています。 ソースコードはGitHubに公開しています。 SwiftyUpdateKitの使い方 インストール方法はCarthage、CocoaPodsに対応しています。ビルド済のxcframeworkもReleasesにアップしてあります。詳しくはGitHubのREADMEを見てください。 初期化 AppDelegateクラスのapplication(_:,didFinishLaunchingWithOptions:)メソッド内でコンフィグを設定します。以下のコードのコメントを参考にしてください。 AppDelegate.swift import SwiftyUpdateKit @main class AppDelegate: UIResponder, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { let config = SwiftyUpdateKitConfig( // 現在のアプリバージョン // 普通は以下の通りInfo.plistのバージョンを指定すれば良いはずです version: Bundle.main.infoDictionary!["CFBundleShortVersionString"] as! String, // iTunes ID // iTunes IDはブラウザでApp Storeのアプリページを開いたときのURLから分かります // e.g.) App Store URL: "https://apps.apple.com/app/sampleapp/id1234567890" -> iTunesID is 1234567890 iTunesID: "1491913803", // App StoreのアプリページのURL storeURL: "https://apps.apple.com/app/blue-sketch/id1491913803", // iTunes Search APIで使う国コード。省略したときはUSの情報を取得します // 国コードは↓で調べられます // http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 // 多言語対応するときはこの国コードを切り替えてください country: "jp", // アプリバージョンの比較方法 // 省略したときはX.Y.Z形式のバージョンをstoreVersion > currentVersionかで比較します versionCompare: VersionCompare(), // アップデートアラートのタイトル updateAlertTitle: "新しいバージョンがあります!", // アップデートアラートのメッセージ updateAlertMessage: "アプリをアップデートしてください。アップデート内容の詳細はApp Storeを参照してください。", // アップデートアラートの更新ボタン updateButtonTitle: "アップデート", // アップデートアラートのキャンセルボタン // nilを指定したときは非表示 -> キャンセル不可のためアップデートを強制します remindMeLaterButtonTitle: "また後で" ) // コンフィグをセットし初期化 // 第2引数のクロージャをセットしたときはフレームワークの内部ログを出力します SUK.applicationDidFinishLaunching(withConfig: config) { print($0) } return true } } iTunes IDの調べ方はこちらを参考にしてください。 バージョンチェックする 現在のアプリバージョンとApp Storeにリリースされているバージョンを比較するためにはcheckVersionメソッドをviewDidAppearメソッド内で実行します。 ViewController.swift override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) SUK.checkVersion(VersionCheckConditionAlways()) } この一行でバージョン比較を行ない、最新バージョンがApp Storeにリリースされていた場合は以下のようなアップデートアラートを表示します。アラートのテキストはコンフィグで設定したものになります。 checkVersionメソッドの引数のVersionCheckConditionには以下の種類があります。 // 常にバージョンチェックを行ないます VersionCheckConditionAlways() // 一日一回バージョンチェックを行ないます // 1回チェックした後は日付が変わるまでチェックを行ないません VersionCheckConditionDaily() // 常にバージョンチェックを行ないません VersionCheckConditionDisable() この他に独自の条件を指定したい場合はVersionCheckConditionプロトコルを実装し、そのオブジェクトを引数に指定してください。 public protocol VersionCheckCondition: AnyObject { /// If returns true, checks the app version. func shouldCheckVersion() -> Bool } 以前の記事では半強制アップデートの仕組みまでを紹介していました。SwiftyUpdateKitには更に追加の機能を用意しています。 アップデート後にリリースノートを表示する SwiftyUpdateKitを使えば、アプリアップデート後の初回起動時に変更内容を伝えるリリースノートをユーザに表示できます。以下のコードを御覧ください。先程のコードにnewRelease以降が足されています。 ViewController.swift override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) SUK.checkVersion(VersionCheckConditionAlways(), newRelease: { [weak self] newVersion, releaseNotes, firstUpdated in guard let self = self else { return } SUK.showReleaseNotes(from: self, text: releaseNotes, version: newVersion) }) } このコードはアプリのバージョンチェックを行ない最新Ver.であったとき、newReleaseクロージャが呼ばれます。その中でshowReleaseNotesメソッドを実行すると以下のようなViewControllerが表示されます。textに渡しているreleaseNotesは、App StoreのリリースノートをiTunes Search APIで引っ張ってきたものになります。firstUpdatedフラグは、SwiftyUpdateKitを導入して初めてアップデートしたとき(初回インストール含む)のみtrueになります。 showReleaseNotesメソッドの代わりに任意のViewControllerやViewを作って表示しても構いません。(デフォルトのViewControllerはかなりシンプルなので) アプリレビューを要求する もう一つの追加機能は以下のようなアプリレビューを要求できます。 以下のコードは、先程のコードにrequestReviewメソッドが足されています。requestReviewメソッドの引数のRequestReviewConditionは、VersionCheckConditionプロトコルと同様です。ユーザにレビューをお願いする条件をカスタマイズできます。 ViewController.swift override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) SUK.checkVersion(VersionCheckConditionAlways(), newRelease: { [weak self] newVersion, releaseNotes, firstUpdated in guard let self = self else { return } SUK.showReleaseNotes(from: self, text: releaseNotes, version: newVersion) }) { SUK.requestReview(RequestReviewConditionAlways()) } } このコードは、 現在のアプリバージョンが最新でないならば、アップデートアラートを表示 最新Ver.にアプリがアップデートされた後、初めて起動された時にリリースノートを表示 最新Ver.のアプリであり、リリースノートも表示済みならば、レビューを要求 という挙動になります。 まとめ SwiftyUpdateKitを使えば、簡単に以下の機能をアプリに組み込むことができます。 アプリの最新バージョンがApp Storeにリリースされたらアップデートを促す アプリアップデート後の初回起動時に変更内容を伝えるリリースノートをユーザに表示 任意の条件でユーザにレビューを要求
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む