- 1. iOS13.3ではビルドできないよ!!!13.4にアップデートしましょう!!
- 1.0.1. その他注意点
- 1.0.2. “001 UILabelで文字を表示” iOS app開発 習得日記 (5)
- 1.0.3. iPhone実機のUDIDを確認する
- 1.0.4. RxSwiftとApolloでつくるGraphQL API Client
- 1.0.5. iOS app開発 習得日記 (4)
- 1.0.6. CompositionalLayoutでリマインダー風のレイアウトを実装する
- 1.0.7. WIP: コロナウイルス 下でAppleのアプリ審査にどのくらい時間がかかるか試してみた。
- 1.0.8. Sign in with apple実装中に、サーバーサイド側でJWTを検証しようとしたところ、Signature verification raisedが発生する
- 1.0.9. Storyboardが複数の場合の画面遷移
- 1.0.10. [Swift] Unity as a LibraryをSwiftから呼ぶ
- 1.0.11. Swift5 UITextFieldやUITextViewで全角文字数制限、半角文字数制限(全角数の倍)
- 1.0.12. iOS app開発 習得日記 (3)
- 1.0.13. 遷移しよー!with CircleMenu
- 1.0.14. 【Flutter】BLoCパターンでアプリを作成してみた。~カウンターアプリ、githubリポジトリ検索アプリ~
- 1.0.15. GitLab で Unity の iOS アプリを自動ビルドするようにしてみた
- 1.0.16. PokéAPIを利用してMVP+CleanArchitectureのiOSアプリを作ったので解説する
- 1.0.17. iOS app の習得日記 (2)
- 1.0.18. 【iOS】Realm Database簡単解説&サンプル!超簡単で高性能なモバイルデータベース!みんな使お??
iPhoneのショートカットAppを使って、ヘルスケアに体温を楽々で記録する
みなさんこんばんは、スズキです。コロナ流行ってますね。怖いです。
## 求められる検温
さて、世の中的にはリモートが広まりつつありますが、友人の会社は作業開始時の日報に検温の記録が求められ始めたそうです。いやまぁ確かに学校と保育園は既にそうではあった。
そして、**「検温記録で検索したらルナルナしか出ない、そうじゃないんだ」**という声が飛び込んできました。検温の記録自体は、iOS標準のヘルスケアアプリに記録することが出来ます。ですが、辿り着くまでのUIUXがちょっと分かりにくいんですよね。ご婦人系のカテゴリの中に入ってしまっていて…。(あんまり言うのも野暮なので各自確認してくれ)。
結論として、**iPhone標準のヘルスケアアプリで体温の記録の蓄積は行なえます。**
ちょっと調べてみたところ、ショートカットAppのAPIがあったので、気不味い画面を開くこと無くスムーズに健康を管理出来るよう、レシピを作ってみたので公開します。尚、本件は以下のサイトを大いに参考にさせて頂きました。
ありがとうございます。[何となく風は爽やか](https://kazesawayaka
【SwiftUI】NavigationViewのようなカスタムViewを自作しようとして分かった事と分からなかった事
この記事は、SwiftUIで以下のような**「内部のViewの情報をコンテナViewで読み取るデザインのカスタムViewを作りたい」**というiOSエンジニアへの知見共有を目的としています。
“`swift
NavigationView {
Text(“Hello World”)
.navigationTitle(“MyApp”)
}
“`iOSでもAndroidでもよく見かけるEmptyState(iOSでは昔DZNEmptyDataSetがよく使われてた)をPureSwiftUIで実装しようと思ったときに、分かった事とわからなかった事があったので紹介していきます。
この記事は現状では代替案を最後に解説していますが、正しい解決法が分かり次第タイトルを含む記事の内容を更新します。
# APIデザイン設計
冒頭にも挙げましたが、SwiftUIとのAPI一貫性を保つコンポーネントを作るために以下のNavigationViewようなAPIを目指しました。## 参考にしたデザイン
“`swift
NavigationView {
Text
FlutterがiPhoneの実機ではビルドできない人へ
iOS13.3ではビルドできないよ!!!13.4にアップデートしましょう!!
僕の伝えたいことはこれだけです。
謎のエラーにflutterでアプリ開発し始めた瞬間思いっきり出鼻を挫かれましたが、久々に触ってみて、iOSをアップデートしたら直りました。
しっかりstackoverflowか何かでアップデートに伴うバグはチェックしましょう、、、(自戒)
その他注意点
Xcodeの設定を忘れずにしましょう。
- Signing & CapabilityでTeamを設定すること
- BundleIDの設定
など。
・BundleIDの設定についてのメモ
アプリのBundleIDとそれが含めるbundleのBundleIDが一致しているよ(?)みたいなエラーが出た時はそれらのBundleIDを異なるものにしたら直りました。(雑すぎてすみません)リクエストがあればできるかぎり詳しく書いていこうと思います!!
“001 UILabelで文字を表示” iOS app開発 習得日記 (5)
UIkitを覚えるために
こちらの写経がいいときいたので始めた
(http://docs.fabo.io/swift/uikit/001_uilabel.html)001 UILabelで文字を表示
“`
import UIKitclass ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.let bWidth: CGFloat = 200
let bHeight: CGFloat = 50let posX: CGFloat = self.view.bounds.width/2 – bWidth/2
let posY: CGFloat = self.view.bounds
iPhone実機のUDIDを確認する
Appium等でiPhoneの操作を自動化するにあたって、UDIDを調べる必要が出てくる場合があります。
やり方も複数あるので、お好みの方法で。
## Apple Configurator2を使う
App Storeからダウンロードできます
### 手順
まず、iPhoneの実機をMacにUSB接続します。
次に、AppleConfigurator2を起動します。
すると、画面に接続済みのiPhoneが表示されます。![スクリーンショット 2020-04-08 17.03.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/46492/99336
RxSwiftとApolloでつくるGraphQL API Client
## はじめに
今までRxSwiftをあまり積極的に使用していなかったのですが、
最近業務で使う機会がありましたので、
勉強のために作ったデモアプリの内容をまとめていこうと思います。## 開発環境
|Tool|Version|Description|
|:–:|:–:|:–:|
|Xcode|11.3.1 (11C505)|IDE|
|apollo|2.26.0|Apollo GraphQLのコマンドラインツール
https://www.npmjs.com/package/apollo|ライブラリの導入は、Swift Package Managerで行いました。
|Library|Version|Description|
|:–:|:–:|:–:|
|apollo-ios|0.24.0|GraphQLクライアント|
|RxSwift|5.1.0|リアクティブプログラミング|
|RxApolloClient|1.3.0|Apolloクライアント用のRxSwift extension|
|RxViewController|1.0.0|UIViewControl
iOS app開発 習得日記 (4)
(https://qiita.com/nori0620/items/66ebc623f63fc3f0ca20)
こちらのサイトをみて勉強中
サーバーサイドのAPIというのを初めて作った。
json webサーバーにphpファイル遅れるだけで作れるとは。本チャンのios app
“`
import UIKit
import Firebase
import GoogleMobileAds@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {var window: UIWindow?
var myNavigationController: UINavigationController?
var json_string:String?
var selected_id: Int?func application(_ application: UIApplication, didFinishLaunchingWithOptions launc
CompositionalLayoutでリマインダー風のレイアウトを実装する
## はじめに
CompositionalLayoutとは2019年にWWDCで発表されたUICollectionViewのレイアウト手法です。個人的にこのレイアウト手法が登場してからすごく楽にUICollectionViewのレイアウトを組めています!!(Webでいうとfloatからflexboxに変わるくらい)
しかし、学習する際に調べたところハンズオン形式で学べる記事というものがなかなか見つからなかったので、今回はCompositionalLayoutを使ってiOSにデフォルトでインストールされているリマインダー風のレイアウトを作っていきたいと思います!!また、初心者さん向けの話し方で説明していますのでご了承ください。[CompositionalLayoutについての詳細はこちらの記事が参考になるかと思います。](“https://qiita.com/shiz/items/a6032543a237bf2e1d19”)
## 目標物
少し雑ですがこのようなレイアウトを組んでいきたいと思います!!
WIP: コロナウイルス 下でAppleのアプリ審査にどのくらい時間がかかるか試してみた。### 2020/2月
自作アプリ完成
・ アプリ名 PriLingo
アニメ「プリパラ」シリーズを題材にした語彙を収録する。日本語・英語・中国語(簡体字&繁体字)で閲覧・音声再生ができる。お気に入り登録ができる。![IMG_7739拷貝.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392332/53dc4609-d11f-e7e1-214e-fcca77721db0.png)
![IMG_7740拷貝.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392332/ff2ff1c0-7612-0721-f4ac-6cdd25a23e19.png)
![IMG_7741拷貝.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392332/81b56e3d-ccbe-ed2e-5327-4256368e3232.png)機能として
Sign in with apple実装中に、サーバーサイド側でJWTを検証しようとしたところ、Signature verification raisedが発生する
iOSクライアントからJwt送信 -> Rails側でデコードをする場合に `Signature verification raised`が発生した
各種パラメーターは正しく与えているのにデコードに失敗してしまう
jwtの有効期限が切れたのかと思ったがそういうわけでもないようだった
結論、keysの正しいkidを選択していなかったことだった
Appleのサイトから証明書のjsonを取得すると、keysが2つあるのに気づいていた
確認したところ、デコードに使えるのは片方1つのみで、それはjwtの中に指定されている
正しいkeyのkidを指定したところ、うまく動くようになった
Storyboardが複数の場合の画面遷移
# はじめに
`Storyboard:ViewController=1:1`で開発する時に画面遷移ってどうするんだろう、と思ったのでやってみました。
そこら中に記事があるので、自分用の備忘録として残しておきます。
想定は「Main.storybard」→「Sub.storyboard」の画面遷移です。# 手順
1.`Main.storyboard`を開いて画面遷移する用のボタンを用意する。
~~~swift:MainViewController.swift
import UIKitclass MainViewController: UIViewController {
override func viewDidLoad() {
super.viewDid
[Swift] Unity as a LibraryをSwiftから呼ぶ
基本的なところはここを見ながら進める。
https://qiita.com/tkyaji/items/7dbd56b41b6ac3e72635SwiftでUnityクラスを作る。上の記事ならこんなかんじ。
“`swift
class Unity: NSObject, UnityFrameworkListener, NativeCallsProtocol {
static let shared = Unity()
private let unityFramework: UnityFrameworkoverride init() {
let bundlePath = Bundle.main.bundlePath
let frameworkPath = bundlePath + “/Frameworks/UnityFramework.framework”
let bundle = Bundle(path: frameworkPath)!
if !bundle.isLoaded {
Swift5 UITextFieldやUITextViewで全角文字数制限、半角文字数制限(全角数の倍)
#はじめに
UITextFieldやUITextViewで入力された文字数を制限する方法は簡単にできますが半角全角混在した文字列を全角で50文字(半角だと100文字)みたいな
簡単にできそうな事がswiftで実現するには苦労しました自分なりに試行錯誤しながら考えた方法ですが
下記の方法以外にいい方法があったら教えてください#ゴール
#####最大文字数が全角で50文字(半角で100文字)以内という条件の時
全角で50文字、半角で100文字を越えるとそれ以上入力できない
もしくは超えた分を削除#####詰まるところ半角全角が混在した文章がshiftJISで100バイトを超えない事
#コード全文
この後に冗長的な解説がありますので…取り急ぎコードのみでわかる方用に全文載せておきます
“`swift:ViewController.swift
//swift5import UIKit
class ViewController: UIViewController, UITextFieldDelegate, UITextViewDelegate {
iOS app開発 習得日記 (3)
(https://qiita.com/gomi_ningen/items/4e0e5bd98f08c4bcf93d)
続き
4.6.2
まで行くが、つまづくエラーが理解できない
viewDidLoadにdelegateプロパティを設定するところ
“`
addTaskTextField.delegete = self
“`
ここで、Use of unresolved identifier とでる。
tableViewと同じように宣言しなければならないのはわかっているのだが、
どうすればいいのか?
接続するのか?誰か教えてください!!
“`
import UIKit
import Foundationclass TODOMainViewContorller: UIViewController {
@IBOutlet weak var dismissButton: UIBarButtonItem!
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var
遷移しよー!with CircleMenu
こんにちは!!!
## 手元からPCが消え去って1ヶ月。やっっっとパソコンが買えたので投稿。
### 今回はCircleMenuというオシャレなライブラリがあることを(今更)知ったのでこのアニメーションを利用してふわっと遷移しようという趣旨。
別にCircleMenuのオシャレなアニメーションに乗っかって遷移してるだけのハリボテです。~~ブランクあるんや、、リハビリみたいなもんや、、~~
# 成果物
なんかgifだと残念な感じに円が残るけど実際には普通にスゥーっ!っと消えます!!!(血眼)
![Unknown](https://user-images.githubusercontent.com/61507019/78570467-fd975100-785f-11ea-8dcc-ab496d462cf1.gif)
# コード
“`swift
import UIKit
import CircleMenuclass ViewController: UIViewController {
let menuButton: CircleMenu = {
【Flutter】BLoCパターンでアプリを作成してみた。~カウンターアプリ、githubリポジトリ検索アプリ~
## BLoCパターンとは
BLoC PatternはFlutterでのアプリケーション開発時に用いる、状態管理手法の1つです。
ビジネスロジックをコンポーネント単位で管理しやすくするためのパターンです。[こちら](https://qiita.com/tetsukick/items/32d6cab8e176ecea2694)を参考にしてください。
## サンプルアプリの紹介
[Githubはこちら](https://github.com/Tetsukick/flutter_BLoc)
### カウンターアプリ
プラスボタン、マイナスボタンを押下することで画面中央の数字がインクリメント、デクリメントされます。GitLab で Unity の iOS アプリを自動ビルドするようにしてみた
# GitLab で Unity の iOS アプリを自動ビルドするようにしてみた
GitLab で Unity の iOSアプリを自動ビルドするようにしてみました。
ipaファイルを配布するようにしたかったのですが、無料の範囲ではできないようです。
自動ビルドして作成した ipaファイルは Mac の Xcode を使って iPhone へインストールします。## 環境
– macOS Catalina 10.15.4
– GitLab CE 12.8.6(Windows10上の仮想サーバーで動かしています)
– GitLab Runner 12.9.0(Mac上で動かしています)
– Unity 2018.4.20f1## フォルダ構成
| ファイル/フォルダ | 内容 |
|:–|:–|
| TestProject_Unity/ | Unityプロジェクトフォルダ |
| TestProject_Unity/.gitignore | Git無視リストファイル |
| TestAutoTest/TestProject_Unity/Assets/Editor
PokéAPIを利用してMVP+CleanArchitectureのiOSアプリを作ったので解説する
#はじめに
最近、勉強会などで、iOSの業務未経験の人たちと話している時に、これからiOSエンジニアとして仕事を得るためにどういったことを学べばいいのか、業務で実際にどういうことを意識して設計やツールを駆使しているかということをよく聞かれるので、それについて説明することができたらなと感じていました。実際に業務で作っているコードを公開することはできないので、業務で作っているコードにかなり近い形のサンプルのアプリを作成、公開したので、それを参考にしながら私がどういったことを考えてiOSの業務をこなしているかについてを解説していきます。
**注意:これはあくまで私が個人的に思う業務における考え方であって、正解というわけではありません。一つの意見として捉えてもらえると幸いです。**
##最も重要なことは何か
私は、iOSに限らずアプリケーション開発の業務を遂行する上で、最も重要なことは、**アプリケーションのリリースサイクルを短くして、ユーザーに最速で最大の価値を提供し続けること**だと考えています。それを達成するためには、以下の様なことを意識するのが効果的と考えて、業務で実践して
iOS app の習得日記 (2)
(https://qiita.com/gomi_ningen/items/4e0e5bd98f08c4bcf93d)
続き
4.1 todoリスト作成までいった
```
import UIKit
import Foundationclass TODOMainViewController: UIViewController {
@IBOutlet weak var dismissButton: UIBarButtonItem!
override func viewDidLoad() {
super.viewDidLoad()
dismissButton.target = self
dismissButton.action = #selector(TODOMainViewController.dismissButtonTapped(_:))
}func dismissButtonTapped(_ sender: Any) {
dismiss(animated: true, co
【iOS】Realm Database簡単解説&サンプル!超簡単で高性能なモバイルデータベース!みんな使お??
#はじめに
Realm Databaseの簡単な解説とサンプルの記事です。
Realm自体、もう登場してから何年か経っているので
それなりに記事も出てきています!
なので特に目新しい事は無いかもしれませんが、
生暖かい目で見てくださいw#Realm Databaseとは
###特徴はざっくり言うと次の通り
– モバイル向けに作られたNoSQLのデータベース
(データの抽出はNSPredicateを利用する)
– SQLite、CoreDataより高速!
– 従来のテーブル定義がクラス定義になっている!
– 1体多のリレーションが持てる
– バックアップ、リストアが可能この中でも**「従来のテーブル定義がクラス定義になっている」**という所が
私の中では一番のメリットだと思います!
このおかげてSwiftでアプリを作ってる方であれば
比較的抵抗無くデータベースを構築できると思います!言葉だけではイメージが湧かないと思いますので、
さっそくサンプルを見ていきましょう!
ちなみに今回はRealmの導入方法は記載していません。
導入方法を探している方は他の記事をあたってくださ