- 1. 素人がiPhoneアプリを作った話<メッセージ表示>
- 2. JavaScriptでアプリを開発できることを知り、環境構築し新規アプリ開発に臨むまで
- 3. IPAファイルの署名やプロファイルを手作業で差し替える
- 4. 最新のiOSで最新のXcodeで実機ビルドしようとすると、最新のXcodeバージョンアップしてくれよと言われビルド出来ない
- 5. Ionic + Firebaseで記録するカレンダーアプリを作る その2 実機でビルド
- 6. 【SwiftUI】contentShapeでTap領域を広げる
- 7. 【Swift】TableViewのセクションの色を変更する
- 8. [Xcode] Fabric CrashlyticsのInfo.plistエラー
- 9. ターミナルからiOSシミュレータを立ち上げるよ
- 10. iOS 9 Webブラウザのユーザーエージェント
- 11. “Xcodeが予期しない理由で終了しました。” (The Xcode build system has crashed.)解決方法
- 12. スマホアプリ開発初心者 flutterでの iOS / Android デュアル開発備忘録
- 13. iOS13で追加されたモーダル画面が下スワイプ操作でdismissするのを無効にしたい
- 14. ViewControllerのviewの上に乗せた別のviewでもsafeAreaLayoutGuideは有効な値か?
- 15. Flutterインストール(for macOS)
- 16. 【ios】swiftのユニットテストでHTTPリクエストをスタブ化する
- 17. NativeScript(Angular): Web/Android/iOS
- 18. 「No signing certificate “iOS Development” found」がでてarchiveが正常にいかなくなったときになんとかした話
- 19. SwiftでType Eraserを使いgenericなAPI protocolを作成する
- 20. Massive View Controllerの真実
素人が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/6fdc9e512b42d7f66386Device 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 実機でビルド
#完成イメージ
こんな感じ。 pic.twitter.com/CvOFjFq2th
— げん げんと (@gento34165638) November 2, 2019
#はじめに
環境は以下の通り
・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」を選択#参考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