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

iOS関連のことを調べてみた2019年11月03日
目次

素人がiPhoneアプリを作った話<メッセージ表示>

ちょっと時間が空いてしまいました。
プライベートでい家族の不幸などろいろあってなかなか時間が取れませんでした。

その間、ニフティクラウドのモバイルバックエンドのおかげでバージョンアップしないといけなくなり、Lancersで手伝ってくれるランサーを探したのですが、コミュニケーションが上手く取れず、心が折れました。
そして、アップルにバージョンアップを申請するも、WordPress Rest APIで作ったSNS機能が何も変更していないのに投稿削除ができなくなっていることで、申請却下( ̄◇ ̄;)
そのまま放置しています。_| ̄|○
誰か助けて〜!_:(´ཀ`」 ∠):
薄謝支払いますけん(>人<;)

チームで開発をしたことがない(開発そのものが初めてだし!)ので、どうやって共有するのかなどもあまりよくわかっていませんが、一人ではできないことを力を合わせてやるということをやりたいので、引き続き協力者を募集中です(^人^)

というわけで、続きをとりあえず連投します(間違えて同じものを先ほど投稿しましたので削除しました)。

#やりたかったこと

+ 100を超える数の励ましのメッセージ

元記事を表示

JavaScriptでアプリを開発できることを知り、環境構築し新規アプリ開発に臨むまで

#概要
普段はReact NativeでiOSアプリを開発してます

今回は、初心に帰りiOSアプリを作る際あとあとAnd/roi/dでも作ることを見越してなにかいいフレームワークないかなと作る前に調べた結果ReactNativeを見つけiOSアプリ実装してきたことを思い出しつつその過程のメモを共有していきます

#環境構築…を行う前に
MacOSにて、
基本的に[ReactNative](https://facebook.github.io/react-native/docs/0.54/getting-started)に沿って構築していきます

が下記手順を行う前に長時間かかるであろう、[Xcode]
(https://apps.apple.com/jp/app/xcode/id497799835?mt=12)を並行してインストールし環境構築時間の短縮を試みましょう

#環境構築
では改めて構築していきます

ReactNativeを動かすためのライブラリを[Homebrew](https://brew.sh/index_ja)でのインストールを行います
Homebrewがな

元記事を表示

IPAファイルの署名やプロファイルを手作業で差し替える

勤務先のプロジェクトで発生したトラブル対応のお話を、備忘録も含め書き残したいと思います。

# Enterprise な Developer Program に優しくない
勤務先のあるプロジェクトでは、私が所属しているのとは別のチームのメンバーが Unreal Engine (以下、UE) でモバイルアプリを開発し、そのアプリの配布先がインハウスな iOS デバイス、というワークフローが存在します。

今回そのプロジェクトの成果物であるアプリが、Provisioning Profile の有効期限切れを迎えるため UE 側から再ビルドしようとしていたのですが、Apple の証明書周りの不具合?でビルドできず詰んでしまい、急遽 .ipa ファイルの中身 (Provisioning Profile) を差し替え、手作業で再署名することでなんとか延命しようと対応しました。

もはや慣れっこですが、iOS 開発は Developer Program 契約なしでの開発入門であったり、Xcode による証明書の自動生成であったり、何かと “初見殺し” とか、”最初は問題なくとも後々の応用部分で詰む

元記事を表示

最新のiOSで最新のXcodeで実機ビルドしようとすると、最新のXcodeバージョンアップしてくれよと言われビルド出来ない

状況は掲題の通りで、Flutterを実機ビルドしようとすると「Xcodeでやってくれ」と言われ、Xcodeでビルドしてみると、最新なのに「最新のXcodeにアップデートしてくれ」と言われました。

今回こちらを参考にさせていただきました。
https://qiita.com/yamataku29/items/6fdc9e512b42d7f66386

Device Support Fileというのが足りないのが原因だった模様。こちらでダウンロード出来ます。
https://github.com/filsv/iPhoneOSDeviceSupport

私はiOS13.2でしたので13.2.zipをダウンロードし、READMEに従ってunzipしたものを`/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/`へ配置。
Xcodeを再起動したらXcodeでのビルドも、Flutterコマンドでのビルドも出来るようになりました!

出来るようになったのですが、今度はXcodeが

元記事を表示

Ionic + Firebaseで記録するカレンダーアプリを作る その2 実機でビルド

#完成イメージ

#はじめに

環境は以下の通り
・ionic4
・Nativeとの橋渡しには[capacitor](https://capacitor.ionicframework.com)を使用
・カレンダーについては[ionic2-calen

元記事を表示

【SwiftUI】contentShapeでTap領域を広げる

SwiftUIで
あるViewに
`onTapGesture`を設定した際
中にある個々のViewをタップすることはできますが
その他の領域はタップしても反応しません。

例えば下記ような`VStack`に対して`onTapGesture`を設定します。

“`swift

import SwiftUI

struct ContentView: View {

@State private var checked = false

var body: some View {

VStack(spacing: 20) {
Image(systemName: checked ? “checkmark.seal.fill” : “checkmark.seal”)
.foregroundColor(checked ? .green : .gray)
Text(“画像とテキストのみTapできる”)
}
.frame(width: 300, heigh

元記事を表示

【Swift】TableViewのセクションの色を変更する

# やりたいこと
![Screenshot 2019-11-02_00-16-14-502.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509577/8479e3a6-6cc4-99eb-6709-093f0ceb8f20.png)

これを…

![Screenshot 2019-11-02_00-15-34-522.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509577/7460de72-36aa-16ba-6f84-3175ac8990c9.png)

こうしたい

##やりかた
“`swift
// セクションの背景とテキストの色を変更する
func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
// 背景色を変更す

元記事を表示

[Xcode] Fabric CrashlyticsのInfo.plistエラー

XcodeでiOSアプリをビルドしようとしたら、FabricのRun Scriptで `Info.plist` が処理できないという内容のエラーが発生しました。

![スクリーンショット 2019-11-01 11.15.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/27943/e8d9efe4-e88c-c73c-379a-ac3c5bd0df7e.png)

## 環境

“`
❯ sw_vers
ProductName: Mac OS X
ProductVersion: 10.14.6
BuildVersion: 18G103

❯ xcodebuild -version
Xcode 11.1
Build version 11A1027
“`

## 解決方法

> Running upload-symbols in Build Phase mode
Validating build environment for Crashlytics…
error: Info.plist E

元記事を表示

ターミナルからiOSシミュレータを立ち上げるよ

iOSシミュレータでテストしたい時、いちいちXcode立ち上げてそこからシミュレータを開くのは面倒ですね。
いきなりXcodeのアップデートとか始まっちゃってイライラ爆発することもありますよね。
そんな訳でターミナルからシミュレータを開く方法をご紹介するよ。

“`zsh
$ open -a simulator
“`

これだけです。
僕は.zshrcでエイリアスを作って、”ios”と入力するだけで開くようにしています。

“`zsh:.zshrc
# iOS シミュレータを開くエイリアス
alias ios=”open -a simulator”
“`

元記事を表示

iOS 9 Webブラウザのユーザーエージェント

## iPhone 4s + iOS 9.3.6 + Safari

Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_6 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13G37 Safari/601.1

元記事を表示

“Xcodeが予期しない理由で終了しました。” (The Xcode build system has crashed.)解決方法

# 環境
Xcode 10.3

#現象

どのプロジェクトも”Xcodeが予期しない理由で終了しました。”となる。

・`rm -r ~/Library/Developer/Xcode/DerivedData/`
・`rm -r myapp.xcworkspace
pod install`
どちらも試したが、解決せず。

#解決方法

メニュー>File>Project Setting から
「Legacy Build System」を選択

スクリーンショット 2019-10-31 18.20.03.png

#参考URL
https://stackoverflow.com/questions/50870787/xcode-9-4-unexpected-service-error-the-xcode-build

元記事を表示

スマホアプリ開発初心者 flutterでの iOS / Android デュアル開発備忘録

iOS, Androidデュアル開発でたまたま巡り合ったflutterについての備忘録。まだまだflutterは開発途上の感じがして万人受けはきついようだ。

・flutter そのものはGoogleが開発している。今後もしばらくはエンハンスが期待できそう。
・Android Studio にプラグインはあるが、レイアウト編集、GUIツールが内包されていない(2019年10月現在)。他、Visual Studio Code でも対応ができるようだ(自身は未検証)。
・Dart言語のみ
・日本語資料が少ない=日本では開発者が少ない、オープンソースのライブラリもほとんど見かけない(英語資料も他の設計ツールに比べると相対的にまだまだ少ない)
・各OSに依存する処理は結局別々に対応しなければならない
・初心者には(私も)インストール&環境設定(下記参考資料参照)、レイアウトも考慮したコードの記述方法全般でハードルが高く、あまり浸透しない理由の一つであろう。

#flutterの特徴
・Layout.xmlが存在しない:Widgetの概念の組み合わせ、Dartコード内で完結、React Nati

元記事を表示

iOS13で追加されたモーダル画面が下スワイプ操作でdismissするのを無効にしたい

# 前提
モーダルとかdismissとかって何? って方は下記をご覧ください。
[【iOS】画面遷移方法まとめ
](https://qiita.com/eg_19_/items/54baed2ac374ac969100)

# 事象
iOS13から、モーダル画面のデフォルトが変更になり、下スワイプ操作で閉じられるようになりました。

# 何が困る?
困るケースとして考えられるのは、たとえば下記です。

– 戻ることを想定していない画面
– 戻り先をアプリ内で指定しているような画面
– 入力を完了させるまで戻らせない設計にしていた画面
– 書いてみたものの、どんなケースだ?
– 半強制で答えさせたいアンケート情報とか?
– 「重要事項を確認しましたか?」→「はい」「いいえ」を絶対に押させる、とか?

UI/UX的に考えると、絶対に戻れない画面ってそもそもよくないですが、
要件によってはそうしたいケースも出てくるかとは思います。

# 回避方法は2つ
回避方法は2つあります。

1. modalPresentationStyleに.fullScreenを指定する
2

元記事を表示

ViewControllerのviewの上に乗せた別のviewでもsafeAreaLayoutGuideは有効な値か?

3周遅れでAutoLayoutを取り入れています。よろしくおねがいします。
今回のテーマは
**ViewControllerのviewの上に乗せた別のviewでもsafeAreaLayoutGuideは有効な値か?**
です。
知らない人には新しい、知ってる人には懐かしい、そんな記事を目指してます。

#結論
有効です。

#コード

“`
class ViewController: UIViewController {

let testView1 = UIView()
let testView2 = UIView()

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.

view.addSubview(testView1)
testView1.addSubview(testView2)

testView1.backgroundColor = .red
testView2.backgroun

元記事を表示

Flutterインストール(for macOS)

2019/11/01 更新
macos10.15(Catalina) + flutter_macos_v1.9.1+hotfix.6-stable.zip のファイルで再確認

# Flutterインストール方法

https://flutter.dev/docs/get-started/install/macos
を参考に。

flutterパッケージをDLしてパスを通す。

### ポイント

“`
$ export PATH=”$PATH:`pwd`/flutter/bin”
“`
サイトに説明がある方法だと、ウィンドウを閉じると設定が消えてしまうので
$HOME/.bash_profile
に対して設定をする。

“`
$ vi ~/.bash_profile
“`
でファイル追加、更新する。

“`
export PATH=”$PATH:[PATH_TO_FLUTTER_GIT_DIRECTORY]/flutter/bin”
“`
を追加して
[PATH_TO_FLUTTER_GIT_DIRECTORY]→flutterフォルダをおいているフルパス

“`
$

元記事を表示

【ios】swiftのユニットテストでHTTPリクエストをスタブ化する

# 背景

iosアプリのユニットテスト(XCTest)を実行するたびにAWSのAPI Gatewayに接続していた
ユニットテストなので、外接のサービスとは関係を持って欲しくない

# やったこと

## ライブラリのインストール

今回は[OHHTTPStubs](https://github.com/AliSoftware/OHHTTPStubs)を選択した(実行まで時間化からなさそうだったから)

CocoaPods でインストールする
下記をPodfileに追記する

“`
pod ‘OHHTTPStubs/Swift’
“`

podコマンドでインストール

“`
pod install
“`

## コーディング

テストクラスでインポートを記述

“` swift:
import OHHTTPStubs
“`

スタブの設定を記述
http接続した際の戻り値を設定しておく

“` swift:
stub(condition: isHost(“[ここにホスト名を記述(ex:hiroky.com)]”)) { _ in
# 返却するJsonObjec

元記事を表示

NativeScript(Angular): Web/Android/iOS

## はじめに

この記事は、Angularを触った事がある方を対象にしています。

### NativeScriptとは

[NativeScript](https://www.nativescript.org/)はWebとMobileアプリ(AndroidとiOS)をJavaScriptとCSSで実装出来るフレームワークです。
NativeScriptで作成されたアプリはFull-Nativeなモバイルアプリになります。

### NativeScriptの何が嬉しいか

– __簡単導入__

– Angular Schematics と `ng add` を使う事によって簡単に導入できます。

– 同じリポジトリ内でWebとMobileを構築していくことが出来るため、コードの共有化が可能になります。

– __完全ネイティブ__

– NativeScriptで開発されたアプリは完全にネイティブです。これは、ネイティブUIやネイティブAPIへのアクセス、およびデバイス上のネイティブレンダリングを意味しています。

– __コード共有__

– KotlinとSw

元記事を表示

「No signing certificate “iOS Development” found」がでてarchiveが正常にいかなくなったときになんとかした話

# 始めに
今回の記事では、JenkinsでUnityビルド→Xcodeビルドをした際に
「**No signing certificate “iOS Development” found**」がでてarchiveができなくなった際にしたことを書き留めていきます。

本来distributionでビルドするはずだったのになぜかDevelopmentになっている!
そんな困ったことが起こった時に対応できると思います。

宜しくお願い致します。

# 開発環境
Unity 2018.4
Xcode 10
Jenkins
pipeline
# なぜ起きたのか
こちらに関しては調査をしていたのですが、原因究明までは至りませんでした。
ただ、XcodeのBuild settingがDevelopmentになっていたのでここの設定項目(何も設定していないせい)で発生していたのではないかと思います。

さらに言えば、今回発生した原因の一つとしてビルドをする際の状況が特殊だったことも起因しているのではないかと思います。
(開発におけるアレコレ)

# 対策
まず下記の記事のようにXcode自体の設定を

元記事を表示

SwiftでType Eraserを使いgenericなAPI protocolを作成する

## I. はじめに

APIをViewControllerなどに持たせる場合、直接APIを持たせるのではなく、modelを取得するインターフェースを持つprotocolを作成し、それに準拠した実態としてのAPIをDIすると言うやり方で実装する人が多いのではないだろうか。

protocolをgenericにしてAPIのレスポンスの型を差し込み使いまわしたいところだが、protocolをgenericにしてしまうと、それを変数として宣言できなくなってしまうため、毎回個別にprotocolを定義しなければいけない。

今回はこの問題をType Eraserと言うテクニックを使い、genericだが変数として保持可能なprotocolを作成することで解決したと思う。

## II. よくある実装例

### protocolを作成
ユーザーを取得するインターフェースをprotocolとして作成

“`UsersRequestable.swift
protocol UsersRequestable {
func fetch(completion: ((Result<[User

元記事を表示

Massive View Controllerの真実

Massive View Controller。おそらこの言葉を聞いたことがある人は、それに悩まされたことがある人かもしれない。Massive View ControllerとはView Controllerに処理が集中して一つのView Controllerの膨大の量のコードが書かれてしまったもののことを言う。

View ControllerがMassiveになってしまうと

– コードの見通しが悪い
– コードを変更しにくい
– テストがしにくい
– etc.

などなど様々な弊害が発生する。もっと色々あると思うが、それはMassive View Controllerと対峙してきた各々の心の中にとどめておいてもらおう。ではなぜView ControllerはMassiveになってしまうのか?その原因を探り、View Controllerのダイエット方法の見つける参考にしたい。

## MVCは実はMとVだけ
Massive View ControllerはMVCのアーキテクチャで生まれることが多い。それはMVCではViewControllerが事実上のVie

元記事を表示

OTHERカテゴリの最新記事