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

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

【Flutter】FlutterJsonBeanFactoryがとても便利という話

インドネシアの[PT.AQ Business Consulting Indonesia](https://aqi.co.id/)でFlutterのエンジニア兼アドバイザーをしております菊池と申します。

Zennで本を出版しております[flutter chips](https://zenn.dev/tetsukick/books/06ee607e30e243)(30,000字程度)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261934/5183aafc-d1d7-534f-f618-031f10790fdc.png)

## FlutterJsonBeanFactoryとは
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261934/d1b52181-fefe-1141-e570-5fa8e81ec090.png)
[FlutterJsonBeanFactory](https://p

元記事を表示

SwiftUIを使ってWidgetを実装

# はじめに

この記事は、[NTTテクノクロス Advent Calendar 2021](https://qiita.com/advent-calendar/2021/ntt-tx) 19日目です。

NTTテクノクロスの神長です。社内では、モバイル向けアプリ開発の技術支援、ノウハウ記事の執筆、[社内研修講師](https://www.ntt-tx.co.jp/products/soft_dojyo/?utm_source=qiita&utm_medium=ac2019&utm_campaign=13)等を担当してます。

また、業務外の活動は[2018年から地域の小学生を対象にしたプログラミング教育](https://www.ntt-tx.co.jp/column/p-education.html)や[社内の仲間と技術書典へ書籍の出展](https://techbookfest.org/product/5925951072370688?productVariantID=4873627981840384)等を行ってます。

今回、Widgetを題材にした記事を書こうと考えた理由は、

元記事を表示

[Firestore][iOS] Ballcap-iOS 使用時に子 View が更新されない場合がある

Firestore のラッパーライブラリ [Ballcap-iOS](https://github.com/1amageek/Ballcap-iOS) を使っていた時に、思っていたのと違う挙動が起きたので、解消法についてメモします。

# 問題は何?

以下の View で “recreate item“ をタップすると “vm.item“ が更新され、 “ChildView“ の表示( “item“ の生成時刻 = “item.dateDebugDescription“ )が変わるはずですが、変わらないという問題です。

“`swift:
import SwiftUI

struct MyView: View {

@ObservedObject var vm = MyViewModel()

var body: some View {
VStack {
ChildView(item: vm.item)
Button(“recreate item”) { vm.rec

元記事を表示

リモート(lldb)でiPhone端末に接続してデバッグすることはできるか

### ある日浮かんだアイディア
LLDBのマニュアルには`Remote Debugging`について説明している部分があります。
![スクリーンショット 2021-12-18 18.03.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142904/9989fa0f-17e2-7b54-f676-e5afe508559f.png)
そして最近`ish shell`や`a-shell`など、iPhoneデバイス上でjailbreakしなくても「コマンド実行環境」を簡単に用意できるようになっていることから

##### もしかしたらリモートでiPhone端末に接続してデバッグすることができるかもしれない

と思いました。ここで「セキュリティー的にそんなことが出来るわけがない」と思った方もいるでしょう。この記事を書いている自分もそう思いましたが直接やってみて確認したかったので、検証してみました。
結論を先にお伝えしますと

##### 予想通りjailbreakしないとできません
lldbはリモートデバ

元記事を表示

M1(pro)でpod installができない時の処方箋?

##?はじめに
先日M1Proチップ搭載のMacを調達したのですが、そこでcocoaPodsのインストールができなく結構苦戦してしまい貴重な休日の勉強時間を削られてしまったので、
同じようなエラーが出ている人がサクッと開発に取り組めるようにこの記事を執筆します。

##?発生したエラー
エラーは全てのライブラリをインストールする時に現れるわけではなく、インストールできないライブラリとできるライブラリが存在したので余計解決を拗らせました。
実際に出たログはこちらです。

“`
[!] Oh no, an error occurred.

Search for existing GitHub issues similar to yours:
https://github.com/CocoaPods/CocoaPods/search?q=xx

If none exists, create a ticket, with the template displayed above, on:
https://github.com/CocoaPods/CocoaPods/issues/new

B

元記事を表示

【iOS】ストレージの空き容量を取得する方法 & 容量不足のデバッグ

# はじめに

この記事はand factory.inc Advent Calendar 2021 18日目の記事です。

昨日は @ichikawa7ss さんの「[アプリ・Webサービス開発者に必要なUIデザインの知識 – UIデザインの教科書をまとめた -](https://qiita.com/ichikawa7ss/items/5eb4d465aa550b346e0f)」でした。

こんにちは、and factory iOSエンジニアのykkdです!

さて今回は、

– iOS端末の空き容量を取得する方法
– デバッグ目的で実機、simulatorそれぞれにおいて、なるべく簡単に容量不足を再現する方法

について書きます。

# 端末の空き容量を取得する方法

## 実装

“`swift
let url = URL(fileURLWithPath: NSHomeDirectory())
do {
let result = try url.resourceValues(
forKeys: [

元記事を表示

ios ヘルスケアデータの一覧

iOSのヘルスケアで取得できるデータの一覧
DeveloperDocument を直訳したものになります

| データ名 | |
| :—: | :—: |
| ActiveEnergyBurned | ユーザーが消費した活動エネルギー量を測定する量的サンプルタイプ |
| ActivitySummary | アクティビティリングビューで表示されるアクティブサマリー |
| AppleStandHour | 1日のうち、1時間あたり1分以上立って動いた時間数をカウントするカテゴリサンプルタイプ |
| AppleStandTime | ユーザーが立っていた時間を測定する量的サンプルタイプ |
| AppleWalkingSteadiness | ユーザーの歩行の安定性を測定する量的サンプルタイプ |
| BasalEnergyBurned | ユーザーの安静時消費エネルギーを測定する量的サンプルタイプ |
| BodyMass | ユーザーの体重を測定する量的サンプルタイプ |
| DistanceCycling | ユーザーが自転車で移動した距離を測定する量的サンプルタイプ

元記事を表示

安全なAndroid OS環境を子供世代に

今や老若男女問わずスマートフォン(スマフォ)は生活の必需品になりつつあります。しかしながら、いきなり子供世代にスマフォを無防備に渡すことは、80歳のペーパードライバー祖父にフェラーリをプレゼントするようなものに違いありません。
私はかねてよりiOSもAndroid OSもアプリ開発等携わってきた経緯があるものの、普段使いではiOSを比較的好み子供世代にも使い古しのiPhoneを主にあてがってきました。

#1. iOSのペアレンタルコントロール

iOSにはスクリーンタイムという標準のペアレンタルコントロール機能が付加されていて、主に次のような機能を使うことになると思います。
![IMG_583B97170C98-1.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206965/83484c7c-29dd-c0b7-d8b5-ab87726a18b8.jpeg)

1. 休止時間➡1日の使用時間制限(一括も、曜日毎も可能)
1. App使用時間の制限➡アプリごとの使用時間制限(アプリごと、ジャンルごと)

元記事を表示

cordova-plugin-firebasexでiOSのみFirebase Cloud Messagingのプッシュ通知が届かない場合の対処

# 前提条件

cordova-plugin-firebasexがプロジェクトに含まれている
– GoogleService-Info.plistがプロジェクトに含まれている
– APNs認証キーまたはAPNs証明書がFirebaseにアップロードされている

# iOSだけFCMのプッシュ通知が届かない

MonacaIonicのドキュメント通りにコードを記述して、Androidではプッシュ通知が届くけど、iOSだけはプッシュ通知が届かない。
コンソール上には、FCMのトークンが表示されていて、 プラグインが正常に動作しているはずなのに、プッシュ通知が届かないことがあ

元記事を表示

self.navigationController is nilが調べても解決できない

## 結論

その偏移先のViewController, init使ってませんか?その中身はviewDidloadに移動して、init使うのはやめましょう。

## 経緯

 viewDidLoadではself.navigationControllerはnilになる、偏移先のViewControllerは偏移元のviewControllerのnavigatoinControllerのスタックの範囲外という情報が出てきますが、どれも効果なし。少し趣旨にはずれた質問の内容ですがこの記事の回答を見てinitをやめたところ解決しました。

https://www.generacodice.com/en/articolo/1696197/self.navigationcontroller-is-nil-even-if-called-with-initwithrootviewcontroller

元記事を表示

【Swift】プロトコル(protocol)の使い方

この記事は[レコチョク Advent Calendar 2021](https://qiita.com/advent-calendar/2021/recochoku)の18日目の記事となります。

## 自己紹介

はじめまして、株式会社レコチョクでiOSアプリの開発をしている新卒1年目の深山です!
邦ロック・ジャニーズ・ボカロが大好きで、たくさんのアーティストの情報を追うのに必死な毎日です!

そんな私が、10月に配属されてから2ヶ月の間でiOSアプリの開発に触れて学んだ**プロトコル**についてまとめたいと思います。

## 1. はじめに

Swiftには他言語でいうインタフェースに似た、**プロトコル(protocol)**という機能があります。

この記事では、

– プロトコルとは
– プロトコルの使用例
– プロパティ
– エクステンションの使い方

といった内容について解説していきます。

## 2. プロトコルとは

Swiftのプロトコルとは、クラスや構造体が保持するプロパティやメソッドなどの決まり事を定めるものです。
プロトコルを定義することによって、複

元記事を表示

【iOS】UIButtonの状態をコントールする

 UIButtonの[setTitle(_:for:)](https://developer.apple.com/documentation/uikit/uibutton/1624018-settitle)や[setImage(_:for:)](https://developer.apple.com/documentation/uikit/uibutton/1623997-setimage)メソッドを使用する際に、第2引数のforでUIControl.Stateを指定する必要があります。

## 1. UIControl.Stateとは
![スクリーンショット 2021-12-17 10.49.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/773915/a2156809-ce1c-46e6-820e-6cf646460084.png)
 [公式ドキュメント](https://developer.apple.com/documentation/uikit/uicontrol/state)では以下のよ

元記事を表示

[flutter]iOS開発・リリースプロセス時に遭遇した解決困難だったエラーの解決方法

## この記事の目的

flutterで開発をしていて、なかなか解決できなかったエラーをまとめる。

## エラー1: `xcode doesn’t support xx’s iOS 15.1 (19B74).`

### 問題点
実機テストを行おうとした際に、

“`
xcode doesn’t support xxxxx’s iOS 15.1 (19B74).
“`

とエラーが出て実機テストができない。

### 解決方法

– 以下のページから、該当versionのファイルをダウンロードする。

https://github.com/filsv/iPhoneOSDeviceSupport
![スクリーンショット_2021-12-18_0_50_57.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/270898/1cc78f75-8c37-cd5f-8e6e-aec4a29fa302.jpeg)

– ダウンロードしたファイルを解凍して、以下のフォルダに移動する。

“`
/Applic

元記事を表示

【Apple Store Connect】iPad用のスクリーンショット無しでiOSアプリをリリース申請する

#はじめに

iOSアプリとしてApple Store Connectで申請作業を進めていたら、通常だと下記のiPad用のスクリーンショットの提出を促され、審査に進めないかと思います。
> 12.9 インチ (第 2 世代 iPad Pro) 2048 x 2732 ピクセル(縦向き) 2732 x 2048 ピクセル(横向き)
>12.9 インチ (第 3 世代 iPad Pro) 2048 x 2732 ピクセル(縦向き) 2732 x 2048 ピクセル(横向き)

今回iPad用には提供しないため、わざわざスクリーンショットを用意するのは煩わしいと思い、どうにかならないか調べていたら下記方法でビルドすることでiPad用のスクリーンショットを用意しなくても審査を進めることが可能になりました:star:

# 対処法

### XcodeからDeploy Infoの設定を変更する
Xcode > Runner > TARGETS Runner > Generalタブから**Deployment Info**の設定項目から**iPad**のチェックを外す。

![スクリーンショット

元記事を表示

超簡単版iPhoneをWebex Deviceのリモコンにする方法【ノーコード】

#0.はじめに

滑り込みですが、Webex Advent Calendar 17日目に参加させていただきます。

実はQiitaで記事を書くのも初めてで、このためにアカウント作成したのですが、Webex Deviceの活用が盛り上がればいいなと思い書かせて頂きました。

本記事の着想および見出しについては、
[Webex Advent Calendar 2021 |15日目 @kunqi 様の記事](https://qiita.com/kunqi/items/090d1c59b9444832ea55 “iPadをWebex Deviceのリモコンにしてみた”)
を参考にさせて頂いております。
#1.背景

前提として、以下の実装を行うユーザアカウントと同じWebex組織にレジストしたWebex Deviceが必要になります。
(Webex Board, Webex Desk, Webex Roomkitなど)

Webex Deviceは見た目が非常にスタイリッシュでカッコイイこともあり、
お客様の注目を引きやすいです。(~~そのまま購入に繋がればなおいいのですが…~~)
製品紹介

元記事を表示

[Flutter] 動画プレイヤーを再実装する形でTexture Widgetについて調べてみた

この記事は「[Flutter Advent Calendar 2021](https://qiita.com/advent-calendar/2021/flutter)」の17日目の記事です。

FlutterにはiOS/Androidと言った「プラットフォーム側で用意されているView」や「ネイティブ側で再生した映像」などをWidgetとして表示する仕組みとして、「**[Texture Widget](https://api.flutter.dev/flutter/widgets/Texture-class.html)**」や「**[Platform Views](https://docs.flutter.dev/development/platform-integration/platform-views)**」と言った機能が存在します。

今回、前者の`Texture Widget`について調査してみたので備忘録序に纏めてみようと思います。
もし記事中で間違いや説明不足の箇所などあれば、コメントや編集リクエストなどで教えて頂けると幸いです。

なお、調査する上では以下の

元記事を表示

文字認識をiPhoneで簡単にしたいなら、VisionTextRecognitionで秒

#概要
画像から文字認識をする方法です。

#伝えたいこと
機械学習を使って文字を認識するのは、Visionのフレームワークで簡単にできます。

#解決したい課題
画像のテキストが難しい手続きなしで、パッと読み取れれば、たとえばOCRアプリなど、いろんなサービスに応用できます。

#解決手法
Visionを使います。
アップルのフレームワークで、機械学習ベースの文字認識が簡単に使えます。

###留意点
ただし、現在のところ日本語はサポートされていません。
>2021年 12月 現在のサポート言語
英語
フランス語
イタリア語
ドイツ語
スペイン語
ポルトガル語
中国語 簡体
中国語 繁体

“`swift
let request = VNRecognizeTextRequest()
let handler = VNImag

元記事を表示

ARKitのFaceTrackingを使ってゲームでよくみるあの入力を実装

こんにちは.株式会社ZOZOでiOSエンジニアとして内定者アルバイトをしている[@thenagain](https://github.com/thenagain)です.
本記事は[ZOZO Advent Calendar 2021](https://qiita.com/advent-calendar/2021/zozo)のカレンダー5の17日目の記事です.

#はじめに
ナンバリングが増すごとにワクワクする機能もどんどん増えていく[ARKit](https://developer.apple.com/jp/augmented-reality/arkit/)ですが,今年にリリースされたARKit 5の主なアップデートは以下の2点です.4と比べるとちょっと寂しい?

* **フェイストラッキングの対応拡大**
* A12 Bionicチップ以降を搭載したすべてのデバイスのフロントカメラで利用可能に
* **ロケーションアンカー**
* 街中や人気のスポットなど,特定の場所にAR体験を配置

今回はその対応拡大したという**フェイストラッキング**を使って**ゲームでよくみる

元記事を表示

2021年12月 iOS Human Interface Guidlineの翻訳版 vol.1

## 読み方
日本人はまず日本語で読むのが早いでしょ…英語で頑張って読まないで。という思いのもと、日本語訳をDeepL先生に訳してもらったものを掲載していきます。日本語がおかしいと思ったところは英語で読めるように英語も記載しておきます。基本的に日本語だけ読めばOK

後ほど図もこちらに差し込みます(いいねしておいてもらえば後で見返せるように。少々お待ちを。)

2021年12月現在のiOSのHuman Interface Guidlineの翻訳になります。

## iOSデザインテーマ

アプリデザイナーには、App Storeのランキングで上位に食い込むような、優れた製品を提供するチャンスがあります。そのためには、品質と機能に対する高い期待に応えなければなりません。

iOSは、3つの主要なテーマによって他のプラットフォームと差別化されています。

わかりやすさ。システム全体を通して、テキストはどのサイズでも読みやすく、アイコンは正確かつ明瞭に、装飾は控えめかつ適切に、そして機能性を重視したシャープなデザインが動機となっています。ネガティブスペース、カラー、フォント、グラフィック

元記事を表示

最低限困らない SwiftUI を指定した Xcode プロジェクトを XcodeGen で生成する

この記事は、[ゆめみ Advent Calendar 2021](https://qiita.com/advent-calendar/2021/yumemi) の17日目の記事です。

# はじめに
XcodeGen に入門しようと SwiftUI を指定した Xcode プロジェクトを題材にしたら、ビルドするためにちょっとした設定が必要でした。
この記事ではその原因と対応策を紹介します。

# 環境
– macOS 12.0.1
– Xcode 13.1
– XcodeGen 2.25.0

# 成果物
[gist](https://gist.github.com/macneko-ayu/2621414f90189f76c49bfc404e637d1d) にあげていますが、Qiita では展開されないので貼っておきます。

“`yml
# 任意のProduct Nameに置き換える(Targetも同様)
name: FooProduct

options:
bundleIdPrefix: com.example
deploymentTarget:
iOS: 15.

元記事を表示

OTHERカテゴリの最新記事