iOS関連のことを調べてみた2019年12月19日

iOS関連のことを調べてみた2019年12月19日

XCTest+αでJSON形式のテストデータを使い倒す

テストを拡充させていくにあたり,検証に都合のよいデータを手軽に用意できるようにした作業内容のメモ. サンプルコード→[gaussbeam/TestDataloader](https://github.com/gaussbeam/TestDataLoader) ## やりたいこと – あらかじめ用意しておいた`.json`ファイルと型を指定することで,jsonファイル内のデータをもとに必要な形式のデータを取得できるようにする ### なぜやりたいのか 1. テストコード内で`init()`すると,テスト自体とは直接関わりのないコードが増え,テストの内容が把握しづらくなる 1. そもそも`init(from decoder: Decoder)`しか実装していないようなオブジェクトの場合,コードからのテストデータ生成のために別途イニシャライザを定義する必要がある 1. 異なるテストケースで同様のデータを利用する場合,その都度データ生成用のコードを書くのは冗長 ## やったこと 以下に示す方法でjsonファイルから任意の型のテストデータを生成できるようにした. ### 1. `Load
元記事を表示

react-native-maps使おうとしたらAIRMapが無いって怒られた

## 環境 “` $ react-native -v react-native-cli: 2.0.1 react-native: 0.61.5 “` ## 状況 react-native-mapsを使ってiOSで地図を表示させたい。 でも、react-native run-iosで起動してみたらエラー出てしまったので解消したい。 ## run-iosまでにやったこと “` $ npm install react-native-maps // react-native-mapsをインストール $ react-native link react-native-maps // react-native-mapsをプロジェクトと紐付け “` そして下の記事を参考にしてApp.jsをちょちょっと書き換えてあげました。 (参考)https://qiita.com/megane42/items/a53db54c0aa64647c6e3 ## エラー内容 ![スクリーンショット 2019-12-19 6.58.59.png](https://qiita-image-st
元記事を表示

FeliCa が遅いしフルスキャンも不可能 前編【iOS 13 Core NFC】

気づけば Advent Calendar も後半戦…。 私はこれまで FeliCa を iOS 13 の Core NFC で読み取るサンプルを紹介してきました。 – [iPhone で電子マネー(楽天Edy、nanaco、WAON)を読み取ってみよう!](https://qiita.com/treastrain/items/f5c518486d19ba3573d3) – [iPhone で交通系IC(Suica、PASMO、ICOCA、…etc.)を読み取ってみよう!](https://qiita.com/treastrain/items/d54ef2c2abbcd40fb9f1) そして、前回の – [FeliCa システムコードの切り替えは Polling コマンドのみで【iOS 13 Core NFC】](https://qiita.com/treastrain/items/04f50a91f70fd6480fc0) では iOS での FeliCa の取り扱いの制限(システムの切り替えを IDm で行うことができない)について述べました。 …ですが、現在の iOS
元記事を表示

RxSwiftのオペレーターの勉強 その2(結合編)

[Atrae Advent Calendar 2019](https://qiita.com/advent-calendar/2019/atrae) の18日目を担当するアガツマです。 普段は、ビジネス版マッチングアプリ [yenta](https://yenta.talentbase.io/yenta) のiOS版を開発をしています。 [前回](https://qiita.com/_xAGAx_/items/b3fe92c9f2a31e1a6ca5)に続いて、RxSwiftのオペレーターについて書きます。 今回は、オペレーターの中でも複数のobservableを合成(結合)するようなものについてまとめました。 RxSwiftを勉強する際の参考になったら嬉しいです。 ※RxSwiftのオペレーターとは、Observableに用意されているイベントを加工する用のメソッドのことを指します # 複数のobservableを合成するオペレーター ## combineLatest **処理** 2つのObsrvableのを監視してどちらか1つのObsrvableが送信される時
元記事を表示

【iOS】サポートバージョンを上げた時にやったこと

# 概要 アプリを長い間開発していると、必ず生じるサポートバージョン問題。 そんなサポートバージョンを上げた時にどこを変更するのか忘れそうなので 備忘録的な意味合いも兼ねて更新したいと思います。 ## iOS Deployment Target まぁ、これは言わずもがなですね。 ここで内部的には判定されているものと思われます。 ## @available属性 旧バージョンに対応していた場合、新しいOSでしか対応していないAPIを使う際には @available属性などで条件分けして実装していたと思います。 これが必要なくなります。 “`swift @available(iOS, [version], *) “` [version]の値が今回のサポートバージョンに含まれている場合は 消してしまって問題ありませんので消してしまいましょう! また、この表記がある場合、この[version]に満たないバージョンで 代わりに呼ばれるメソッドがあるはずなので、そちらも消してしまいましょう! ## Podfile 忘れがちなのが、これではないでしょうか。 ~~(今回この記事を書いたの
元記事を表示

プロパティをクロージャで初期化する(Initialization Closure)

前回の投稿から長い時を経て、就職してiOSエンジニアとして日々勉強をしています。よろしくお願いします。 今回はタイトルの通り、Initialization Closureについてまとめようと思います。 (この記事は[就職先の技術ブログ](https://techblog.recochoku.jp/7479)の内容を転機したものです) ## TL; DR – Initialization Closureは__Stored Property__の初期化に使われる書き方。 – Computed Propertyではないので、__`{}`の中は1度しか呼ばれない__。 ## 未知との遭遇 現在開発中のアプリでUIViewControllerのライフサイクルとAuto Layoutの反映タイミングに悩まされ、`viewDidLayoutSubview()`で最初の一回だけ処理をしたくなり、[この記事](https://blog.kuromusubi.com/develop/language/swift/20180525-lazy)にたどり着きました。 実際に以下のようなコードを書
元記事を表示

【Swift】Partial application of ‘mutating’ method is not allowedってなんだ

structを使っていたら、 > Partial application of ‘mutating’ method is not allowed というエラーに遭遇しました。 僕の場合、原因は別件だったんですが、日本語情報があまりないエラーメッセージだったので、記事にしてみます。 # 僕のエラーの原因 僕の場合、 “`swift protocol aDelegate { var aView: ViewClass } struct AIRadarMapBorderRenderer { private weak var delegate: aDelegate? private mutating func aFuncation() { switch aView.aVariable { //この行で”Partial application of ‘mutating’ method is not allowed” case .any //any default:
元記事を表示

Sketchと1対1を目指すAtomic designなSwiftUIの作り方

## はじめに [VALU Advent Calendar 2019](https://qiita.com/advent-calendar/2019/valu) 11日目 (!) の記事です! VALU ではデザインに Atomic design (アトミックデザイン) を採用しています。 本記事では,VALU のデザイナーが作成した素敵な Sketch シンボルを差分なく反映し,かつ変更に耐えうる SwiftUI を運用するための方法をご紹介しようと思います。 [昨年の VALU Advent Calendar](https://qiita.com/advent-calendar/2018/valu) にて,[Sketchと1対1を目指すAtomic designなStoryboardの作り方](https://qiita.com/YutoMizutani/items/e14c918232af83f34e29) を投稿しました。本記事はそれを SwiftUI で行ったものです。まだご覧になっていない方は先にご覧ください。 ## Highlights – SwiftUI を利
元記事を表示

Flutterで作ったアプリをfastlane+App Distributionで配信する(iOS編)

開発以外のメンバーに実機テストをしてもらう場合にTestFlightだけで配信してたけど、流石に面倒なのと、ステージング環境用にビルドしたアプリを本番用とは別アプリとして配信したいので、[App Distribution](https://firebase.google.com/products/app-distribution/?hl=ja)で配信することにした。 ひとまずローカル環境でfastlaneを使ってApp Distributionに配信できるようにしたので、備忘録。 #1.環境を分けてビルド 基本的には@mono0926さんの記事で大体できるはず。とても丁寧に書かれていて、ありがとうございます。 [Flutterで環境ごとにビルド設定を切り替える — iOS編](https://medium.com/flutter-jp/flavor-b952f2d05b5d) 1個注意点として、ステージング用に別アプリにする場合、Identifiersをそれ用に用意しないといけない。 例えば、`com.test.app`が本番用だとして、`com.test.app.stg`みたいな
元記事を表示

iOS でマルチモジュールを試したときにハマったこと

Web ではマイクロサービスの話をよく聞くようになり、また Android でもたまにマルチモジュールの話を聞くようになりました。 iOS でも企業で採用している話をチラチラ聞くようになり、また今回のアドベントカレンダーにもマルチモジュールについての話が上がっています。 iOSでもマルチモジュール化したい! https://qiita.com/hironytic/items/3fcd825cc1ef135f5b0f ということで私もプライベートで作成している iOS アプリをモジュール分割してみたらハマりまくった話。 ## 環境 – Swift: 5.1 – Xcode: 11.3 – Deployment Target: iOS 13.1 今回はサンプルとして、 – インターフェースなどを提供する `Common` モジュール – `Common` モジュールを実装する `Core` モジュール – 画面などの機能を提供する `ModuleA` ・ `ModuleB` モジュール – アプリのエントリポイントとなる `MultiModuleSample` モジュール の
元記事を表示

[iOS] IPAファイルのプロビジョニングプロファイルを差し替え

## [iOS] IPAファイルのプロビジョニングプロファイルを差し替え **iPAファイルを展開する。** “` unzip *.ipa “` **再署名に必要になるentitlementsファイルを作成** “` codesign -d –entitlements :- Payload/*.app > entitlements.plist “` **再署名に必要になるentitlementsファイルを作成** 「○○○○○○.mobileprovision」は、Apple Developerから更新したプロビジョニングプロファイル “` cp -p ○○○○○○.mobileprovision ./Payload/*.app/embedded.mobileprovision “` 「replacing existing signature」で成功 **再署名を実施** 「’iPhone Distribution: ○○○○○○’」は、キーチェーンアクセス.app から確認できる証明書の名称 “` codesign –force –sign ‘
元記事を表示

アプリ開発初心者が Flutter に入門して 1 か月でアプリをリリースした話

## はじめに 最近 Flutter に入門しました。無事に一つアプリをリリースすることができたのですが、ネイティブアプリの開発が全くの素人で苦労した点があったので、同じく入門する初心者の方に記録として残していこうと思います。 また、事情があり家の PC でなかなか開発が進められないため社内の PC で業務終了後に開発を進める形になりました。社内環境では Proxy にネットワーク通信が阻まれてしまうため、よくある入門の記事通りに行かないことがとにかく多くあり・・・(というかむしろここが一番苦労したと思います。) 同じく Proxy 環境での開発を余儀なくされている方の助けになれば幸いでございます。 なお、Flutter やその周辺等知識が甘い部分が多いと自負しているため誤りやアドバイス等あればコメントしていただけると幸いです。ただちに確認致します。 ## リリースしたアプリの紹介 ### BundleApps こちらのアプリです ⇒ [BundleApps](https://play.google.com/store/apps/details?id=com.johnwo
元記事を表示

Xcode11でiPadの画面回転設定を行う

iOSアプリを新たに横画面に対応させようとした時にハマったのでメモ。 #問題点 通常、画面回転を行いたい場合はTargetのGeneralタブの「Device Orientation」部分のチェックボックスで設定を行うのだが、ここでの設定変更はiPadでは反映されない。(特にエラーメッセージも出ないので、ユーザーのレビューで指摘されるまで気付けなかった…) スクリーンショット 2019-12-18 11.01.04.png #解決策 Info.plist を直接編集する。 “` UISupportedInterfaceOrientations UIInterfaceOrientationPortrait <
元記事を表示

SwiftUI UITextField  キャレット動作

こんにちはフリーランスの永田です。最近は法人化の手続きを開始しました。 SwiftUI案件を1月から実施予定で、現在技術を調査中です。

今回はキャレット動作 returnButtonを押下しましたら、水平移動する対応です。

#### 環境 Xcode 11.3 SwiftUI #### SwiftUIではない場合(オリジナルです。) https://gist.github.com/daisukenagata/253ae79692234dbf89d042f5010f2387 #### キャレット動作しない場合 https://gist.github.com/daisukenagata/5002c49061f18d72e0a40dfda1290b1a #### キャレット動作 https://gist.github.com/daisukenagata/253ae79692234dbf89d042f5010f2387 “`swift import UIKit impo
元記事を表示

レガシーアプリのiOS13対応(UISegmentedControl編

##はじめに UISegmentedControl編とタイトルには記載してますが、 続編等は今の所は全くありませんwww さて、私が普段担当しているアプリは、業務で利用するInHouseの古いアプリなんですが 今年もiOSのバージョンアップ対応を毎度のごとく行っておりました。 UISegmentControlに関しても、今年は大幅に見た目が変わると知っていたので TintColorの設定をして、アプリに合う見た目にして対応する事で十分だろうと思っていました。 先方にも、見た目がiOS13から変更された旨を伝え、一度はOKをもらっていましたが **やっぱり、前の見た目に戻してくれないか?** … オォォーーー!! w(゚ロ゚;w(゚ロ゚)w;゚ロ゚)w オォォーーー!! AppleがiOS13で変更した見た目に対して iOS12以前の状態に戻していくことは Appleに対しての反逆行為やぞーーーー(´;ω;`)(勝手に思っているだけ?) できれば今のiOS13の見た目のままでカスタマイズしたかったのですが、、、 NGが出てしまったのでは仕方ない。iOS12以
元記事を表示

R.swiftとSwiftGenの導入方法とどちらを採用した方がいいのか

[CA Tech Dojo/Challenge/JOB Advent Calendar 2019](https://qiita.com/advent-calendar/2019/dojo-challenge-job)の18日目は[@ostk0069](https://qiita.com/ostk0069)が書かせていただきます。 次の日、19日目は[@hmarf](https://qiita.com/hmarf)さんです!楽しみにしてます! 自分は、2019年8月にCATechDojo(Kotlin編)に参加させていただいた後、11月にCATechJOBでマッチングエージェントさんでiOSエンジニアとしてインターンをさせていただきました。大変お世話になりました。 # はじめに 私は現在進行形で個人アプリの開発をしています。その際に初めは[R.swift](https://github.com/mac-cain13/R.swift)を導入していたのですが、途中から[SwiftGen](https://github.com/SwiftGen/SwiftGen)へ移行したのでそこでわかっ
元記事を表示

iPhoneのアプリにPCからファイルを入れたいとき

## 背景 iPhoneにCSVとかのテキストデータをPCから入れたいときに、 どうやってXcodeの設定やるんだろーってことがあったのでそのメモ。 ## 設定方法 `Info.plist` に以下の項目を設定してあげると、 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113439/d5de50f9-86ab-fe2c-1553-f3d7aa31d155.png) MacはFinderからこんな感じ ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113439/bd69dd9d-1fcc-c202-c677-43b69d4c958c.png) WindowsはiTunesからこんな感じ ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113439/df4987bd-5de7-c
元記事を表示

とりあえず「アイーン」とpush通知してくれるiOSアプリをSAP CP Cloud Foundry環境のMobile Serviceを活用して実装してみた

Mona Lisacoです。SAP TechEdもDemo Jam Tokyoもあっというまに過ぎ去ってついにSAPアドベントカレンダーの季節となりました。 今回も懲りずに思わず大爆笑せざるを得ないアプリケーションを実装し、とある雑貨屋の麹町一丁目店の業務改善に取り組んでいきたいと思います。 (※ この記事は [SAP Advent Calendar 2019](https://adventar.org/calendars/3908) の12月18日分の記事として執筆しています) # 前回までのあらすじ 2018年末から吹き荒れる「ドリフ大爆笑」ブームが冷めやらぬ中、 麹町1丁目付近のとある雑貨店では「ドリフ大爆笑DVD」の調達に大忙し! そこで、[前回の記事](https://qiita.com/monamona/items/e5862409b6b7fb0902bf)では、「ドリフ大爆笑DVD」の調達プロセスをよりエモくするために下記のようなワークフロー関連iOSアプリケーションを、Appleの音声認識フレームワークを用いて構築しました。 – スタッフが「だっふんだ」と言
元記事を表示

iOSアプリからAR名刺を作る

この記事はフラー [Advent Calendar 2019](https://adventar.org/calendars/4155) – Adventarの17日目の記事です 昨日は[okumu](https://qiita.com/okumu)さんで[Jetpack Composeをすこし触ってみた](https://qiita.com/okumu/items/e5ac9a7892d3e2433fa0)でした はじめまして、フラーという会社でiOSエンジニアをやらせていただいているyudai_watanabeです。 この会社に入ってまだ1ヶ月半くらいしか在籍していないのですが 自分の在籍する部署の名前が最近新しくなり、さらにかっこいい名刺をもらえて嬉しかったのでこれを書くことにしました ちなみに部署はこんな感じのところです、サイトも格好いいのでぜひ見てください [共創スタジオ](https://www.kyoso-studios.com) ## Reality Composerとは ![RealityComposer.png](https://qiita-imag
元記事を表示

忘備録-iOSアプリの永続的なデータ保存

趣味でiOSアプリ開発をかじっていた自分が、改めてiOS開発を勉強し始めた際に、曖昧に理解していたところや知らなかったところをメモしています。いつか書き直します。 ## 参考文献 この記事は以下の書籍の情報を参考にして執筆しました。5章を読んでのメモになります。 – [本気ではじめるiPhoneアプリ作り Xcode 10.x対応 (Informatics&IDEA)](https://www.amazon.co.jp/%E6%9C%AC%E6%B0%97%E3%81%A7%E3%81%AF%E3%81%98%E3%82%81%E3%82%8BiPhone%E3%82%A2%E3%83%97%E3%83%AA%E4%BD%9C%E3%82%8A-Xcode-10-x%E5%AF%BE%E5%BF%9C-Informatics-IDEA/dp/4815600031/) ##iOSデバイスのデータ保存場所 [appleのページ](https://developer.apple.com/library/archive/documentation/FileManagement/
元記事を表示

OTHERカテゴリの最新記事