iOS関連のことを調べてみた2022年10月13日

iOS関連のことを調べてみた2022年10月13日

【旧版】iOS(iPhone/iPad) 監視モードとDEPとVPPとABMについての個人的メモ

※この記事は2021/12/25版のバックアップです。

# はじめに

最初に書いてから数年経過しているので、古い情報が混じっている場合があります。
また、元は個人的メモなのでいい加減な書き方になっています。
「もっと詳しく(まともに)書け」といった項目があれツッコミをどうぞ。

この内容は、iOSの監視モードおよび、DEPとVPPについてまとめたものです。
Apple School Managerについては触れていません。
MDMについては、具体的な製品名にはあまり触れず、機能概要のみの記載に留めます。
特定MDM/EMMのトラブルシュートとかは書いてません。Intuneとか。
MDMのUser Enrollmentについても触れていません。

Androidで似たようなことをやりたい場合は「[Android Enterprise](https://qiita.com/garupon/items/844770b1eb48ac004ced)」と「[Zero Touch](https://www.android.com/intl/ja_jp/enterprise/management/

元記事を表示

iOS16を旧Xcodeでビルドする!

# こんな方向け
– まだXcode13を使ってるけど、iOS16を持つ実機でビルドしたい。
– 新しいバージョンXcode14のDeviceSupportからiOS16用のDeviceSupportフォルダをXcode13に入れたけど、ビルドできない。

## 解決できるエラー
“`This operation can fail if the version of the OS on the device is incompatible with the installed version of Xcode. You may also need to restart your mac and device in order to correctly detect compatibility.“`

## 開発環境
macOS: Monterey 12.3.1 Intel
Xcode: 13.2.1
iOS: 16.0.3

# 結論
– iOS16から[DeveloperMode](https://developer.apple.com/jp/news/?id=r1sz7dke

元記事を表示

【Swift】一部だけ丸かどにする

# やりかた
“`swift
label.layer.cornerRadius = 10
label.clipsToBounds = true
label.layer.maskedCorners = [.layerMinXMinYCorner, .layerMinXMaxYCorner, .layerMaxXMinYCorner, .layerMaxXMaxYCorner]
“`
|左上|左下|右上|右下|
|-|-|-|-|
|.layerMinXMinYCorner|.layerMinXMaxYCorner|.layerMaxXMinYCorner|.layerMaxXMaxYCorner|

# おわり
割と使うので覚えておきたいです

元記事を表示

ライブラリを使わずネット接続状況を取得してみよう

## はじめに
端末が「ネットに接続されているとき」はスタンプを送信して〜や「ネットに接続されていないとき」はアラートを表示して〜みたいなことをしたいときが来る(はず)。そんなとき、NWPathMonitorを使用すればライブラリを使わずネットの接続状況を取得できる。

## 対象者
この記事は下記のような人を対象にしている。

– 駆け出しエンジニア
– プログラミング初学者

## 結論
NWPathMonitorとは、ネットワークの変更を監視して対応するためのオブザーバーである。
また、`func start(queue: DispatchQueue)`を使用することでパスの変更を監視することが可能。

## 詳細
1. ネットワーク状況を監視するための `NWPathMonitor()`とパス配信するイベントキュー`DispatchQueue.global(qos: .background)`を宣言する。
1. パスモニターを開始し、ネットワークパスの更新を監視できるようにする。
1. ネットワークパスが更新されたら行いたい処理を記述する。

“`swift:Swift
im

元記事を表示

iOS16でのHealthKit データ出力 (export.xml) のバグ回避

iPhoneではAppleWatchなどで収集したHealthKitのデータを、xmlファイルとしてダウンロードする事ができる。

:::note
HealthKitのデータをダウンロードする方法
1. **ヘルスケアアプリ** を開く
1. (概要のページの)右上のサムネイルを押す
1. 開いた画面の下の方にある **すべてのヘルスケアデータを書き出す** を押す。
1. データを書き出して良いか聞かれるので、**書き出す** を押す。
1. **ヘルスデータを書き出し中** と表示するので、しばらく待つ。
1. **書き出したデータ**を保存するダイアログが表示されるので、AirDropやメール等で保存する。データはZIPでアーカイブ・圧縮されている。
:::

ところがiOS16[^1]ではこのxmlファイル(`export.xml`)の属性リスト宣言に誤りがある為、正しく読み込めない事がある。10/12/2022現在iOSの最新バージョンは16.0.2だが、まだ直っていない。
属性リストを直せば問題なく読み込めるので、patchを作成した。

“`patch:export1

元記事を表示

iOS13以降プレースホルダー内の背景はダークモードを考慮して実装しなければならない説

## はじめに
TextFieldのプレースホルダー内に’ここに入力’的なヒントを付け加えたい。
しかし、現行のソースコードには既にTextFieldのプレースホルダー内にヒントを表示させる実装がされていた。そのため、何が原因かイマイチ分からず頭を抱え抜いた人向けの記事となる。
## 対象者
この記事は下記のような人を対象にしている。

– 駆け出しエンジニア
– プログラミング初学者

## 結論
iOS13以降、ダークモードが搭載された端末において、プレースホルダー内の文字色を明示的に設定することはあまりよろしくない。というのも、ユーザーがライトモードとダークモードの設定を変更するとTextFieldの背景が動的に変化する。そのため、それに応じてテキストの色が変化する実装をしなければならない。
## 詳細
1. ViewDidLoadなど描画を担当するメソッドに以下コードを記載する
“`swift:Swift
override func viewDidLoad() {
super.viewDidLoad()
//メインの背景の上に重ねられるコンテンツの色。

元記事を表示

Firestoreでcountの集計がとれるようになっていたのでiOSで実装してみた

こんにちは。[virapture株式会社](https://virapture.com)でCEOしながら[ラグナロク株式会社](https://ragna-rock.com)でもCKOとして働いている[@mogmet](https://twitter.com/mogmet)です。
![mogmet.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/8d49d5b8-5312-bf3c-856f-c3cf02901f69.jpeg)
一昔前の聖地巡礼したときの写真がgoogleにサジェストされました。あの花はとても名作なので是非みてない人は見てください。

本日はmonoさんが衝撃な機能をツイートしていたので実際に試してみた記事になります。(monoさん素敵な情報ツイートありがとうございますー!!)

というわけで、Firebase

元記事を表示

AppStoreのios証明書の更新について

# 概要
iOS Distribution Certificate証明書は一年に一度更新する必要がある。
更新しなければ、新しいアプリケーションやアップデート版を App Store に提出することはできなくなる。

# 対応方法
以下のリンクを参考にしました
[【iOS】 Certificate証明書の更新 (現在ご利用のiOS Distribution証明書の有効期限まであと30日になりました。](https://marumaro7.hatenablog.com/entry/certificateupdate)

[[iOS] Appストアに公開したアプリの証明書の有効期限が切れたらどうなるか](https://b.0218.jp/20160905143643.html)

元記事を表示

ONLYOFFICE DocumentsのiOS版 v7.2の紹介:手書き認識、文書保護、検索フィルターなど

皆さまに朗報です。

[ONLYOFFICE DocumentsのiOS版](http://www.onlyoffice.com/office-for-ios.aspx?utm_source=blog&utm_medium=article&utm_campaign=onlyoffice_documents_7.2)の最新版がリリースされました!手書き文字認識、文書保護、検索フィルター、編集ウィンドウの再設計など、多くの新機能と改良が加えられています。詳細はこの記事をご覧ください。

Meet ONLYOFFICE Documents v7.2 for iOS: handwriting recognition, document protection, search filters and more

## 手書き文字認識

ONLYOFFICE DocumentsのiOS版は、バージョン7.2より、Appleデバイス上で手書き文字を入力したテキストに変換することができるようになりました。Apple Pencilで入力した内容をアプリが自動的に認識し、文書に挿入するため、キーボードを使用

元記事を表示

【Swift】LaunchScreenでカスタムフォントが使えない

# 問題
ビルド時にカスタムフォントが適用されない

|Xcode上での表示|ビルド時の表示|
|-|-|
|![スクリーンショット 2022-10-11 14.53.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/4522208f-ad72-1c4b-226f-30e36ca8e3d7.png)|![Simulator Screen Shot – iPhone 12 – 2022-10-11 at 14.52.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/b1201e8e-373b-32ed-73c3-cb7eaa8f6972.png)|

# 原因
起動時点ではカスタムフォントの読み込みが終わっていないので設定できてない(たぶん)

# 解決方法(仮)
画像で配置する

# おわり
もっと良い方法があればコメントで教えていただけると嬉しいです。

元記事を表示

モバイルアプリの自動テストツールShiratesを使ってみよう

本記事は自動テストツールShirates(シラテス)の紹介記事です。※はてなブログからの転載です。

# モバイルアプリのテストの自動化

昨今、ソフトウェアテストの自動化がますます重要になっています。モバイルアプリも例外ではありません。自動化を実現するツールには有償・無償のものが多数存在します。無償のもので注目されている製品としてはAppiumがあります。筆者もAppiumを導入して使用しましたが、とてもハードルが高いという感想です。はっきり言って、茨の道です。ちゃんと使ってテストの実務で成果を出せるようになるにはある程度の期間修行が必要です。開発スキルを持ったエンジニアでも苦労するのですから、もっと導入や使用方法が簡単でないとテストエンジニアに広く普及させるのは難しいと考えています。

# Shiratesとは

Shiratesはそのような敷居の高さを少し下げてくれるOSSのツールです。GitHubから入手できます。

https://github.com/ldi-github/shirates-core/blob/main/doc/markdown/index.md

元記事を表示

【Swift】公式ドキュメントのIteratorProtocolを読む

# この記事は何?
SwiftのIteratorProtocolについて調べました。
主に、[開発者ドキュメント](https://developer.apple.com/documentation/swift/iteratorprotocol)
より翻訳した内容になります。

# Declaration
宣言

“`swift
protocol IteratorProtocol
“`

# Overview
概要

Swiftにおいて、「連続して、値を一つずつ取り出せるデータ構造」を**シーケンス**といいます。
`Sequence`プロトコルに適合する型のインスタンスは`for-in`ループを使って、要素ごとに処理を反復できます。
その際、シーケンスに対して「一つずつ値を取り出す役割」を果たすインスタンスが**イテレータ**です。
インスタンスの型が`IteratorProtocol`プロトコルに適合する場合、`makeIterator()`メソッドでイテレータを取得できます。

`IteratorProtocol`プロトコルは`Sequence`プロトコル

元記事を表示

【Swift】SnapKitの制約まとめ

## 中央
“`swift
// 「label」を画面の中央に配置
label.snp.makeConstraints { make in
make.center.equalToSuperview()
}
“`
![スクリーンショット 2022-10-10 22.31.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/85aeb26d-674b-833a-19ce-ee0bbf2339e7.png)

## X中央
“`swift
// 「label」をXの中央に配置
label.snp.makeConstraints { make in
make.centerX.equalToSuperview()
}
“`
![スクリーンショット 2022-10-10 22.32.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/1dd239fa-34dd-807f-99

元記事を表示

Cordovaアプリ開発の備忘録(プラグイン編)

前回の投稿では、Cordovaアプリの基本的な開発手順についてまとめました。
今回は、プラグインの開発手順についてまとめようと思います。

Plugin Development Guide

https://cordova.apache.org/docs/en/11.x/guide/hybrid/plugins/index.html

# プラグイン名を決める

まずは、プラグイン名を決めましょう。
今回は適当に「sampleplugin」とでもしておきましょうか。

フォルダ名は、慣例があり、「cordova-plugin-sampleplugin」となります。

“`
> mkdir cordova-plugin-sampleplugin
> cd cordova-plugin-sampleplugin
“`

# plugin.xmlを作成

“`xml:cordova-plugin-sampleplugin/plugin.xml
WindowsでiPhoneのデベロッパモードを有効にする方法

# iOS16からデベロッパモードが導入
iOS16からiPhoneで開発する際には「デベロッパモード」を有効にする必要があります。
https://qiita.com/YokohamaHori/items/d00e1786c34b4ab30638

### iOS16βではデフォルトで「設定」にデベロッパモードの項目が表示されていますが、製品版では表示されなくなったようです。

原則としてMac(XCode入り)につないで項目を表示させてから、ONにする必要があります。
(↑ この部分で何らかの命令を飛ばしている?)

## Windowsのみでデベロッパモードを有効にする

通常はiPhoneの開発をするのにMacがないなんて考えられないのですが、なんやかんやあって、WindowsのみでデベロッパモードをONにする必要が生じました。

iOSデバイス用のオープンソースライブラリである[libimobiledevice](https://github.com/libimobiledevice/libimobiledevice)では、対応してそうなissueがありますが、windows

元記事を表示

Cordovaアプリ開発の備忘録

スマホアプリのアプリ開発にCordovaを使っています。サーバサイドはNode.js、ブラウザアプリはJavascriptを使っているので、スマホのネイティブアプリの開発もJavascriptで開発できるのは新言語を覚える必要がなく、Javascriptに専念できるので魅力的です。
さらに、iOSやAndroidの両方のネイティブアプリを1つのコードで動作できるのはありがたいです。

Cordova

https://cordova.apache.org/

今回は、Cordovaアプリを開発・デバッグするための方法や、OS独自の機能を実装できるプラグインの開発方法についてまとめておきます。いろんな開発をやっていると、Cordovaの開発方法を結構忘れがちになるので、備忘録として残しています。

# Cordovaのインストール

Node.jsがインストールされている前提です。
以下を実行すれば完了です。

“`
> npm install cordova -g
“`

また、開発する対象のスマホOSごとにコンパイル環境のインストールが必要です。

[Androidの場合]
An

元記事を表示

AWS AmplifyでコンテナREST APIをデプロイしiOSアプリと通信する

# はじめに
AWS Amplifyを用いることでバックエンドの構成をほぼ意識することなくAPI, 認証、データベースなどをAWS環境に構築し、フロントエンドアプリケーションから呼び出すことができます。
REST APIを作成すると、Amazon API GatewayとAWS Lambdaを用いたイベント駆動型の環境を構築できます。ですが、ユースケースによってはイベント駆動ではなく、常駐型のサーバが適切な場合もあるかと思います。
AWS Amplifyではプロジェクト設定を変更することで、このようなケースにコンテナを用いて対応することができます。

今回は、AWS Amplifyを用いてコンテナREST APIをデプロイし、iOSアプリと通信したいと思います。

# 環境
Amplify CLI: v10.0.0
Xcode: v14.0.1

# 手順
1. Xcodeプロジェクトを作成します。
2. Xcodeプロジェクトディレクトリ直下でAmplify CLIを用いて `amplify init` でAmplify プロジェクトを初期化します。
3. Amplify CLIを用

元記事を表示

【Swift】まとめてアンラップする

# はじめに
`if let`や`guard`をまとめられるのを知らなかったので記録しておきます。

# if let
“`swift
let int: Int? = 10

let string: String? = “hello world”

if let int, let string {
print(int)
print(string)
}
“`
:::note info
**ポイント**
“`swift
if let int = int, let string = string
“`

“`swift
if let int, let string
“`
は同じ意味
:::

# guard
“`swift
let int: Int? = 10

let string: String? = “hello world”

guard let int = int, let string = string else { return }

print(int)
print(string)
“`
:::note info
**ポイント**
“`sw

元記事を表示

【SwiftUI】文字色を背景色の反対色にする

# はじめに
背景色が動的に変更されるアプリだと背景色と同化して文字が見えなくなる問題が発生します。
そんな問題を発生させないメソッドを見つけたので紹介します。

# サンプルアプリ
![Simulator Screen Recording – iPhone 14 Pro – 2022-10-08 at 20.36.58.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/f427e221-883d-99a1-9251-87b45c1e077f.gif)

# 実装
“`diff_swift
import SwiftUI

struct ContentView: View {
@State var percentage: CGFloat = 100
var body: some View {

VStack(alignment: .center) {

batteryShape.overlay(batteryText)

元記事を表示

iOSアプリ設計パターン入門(第2章:設定パターンを適用する前に)

# 概要
「責務」「パターン」「設計の原則」の3つを中心に設計プロセスについて説明しており、設計パターンをする前にSwiftにおけるプログラミングの作法を中心に説明している。

# まとめ
「責務」「パターン」「設計の原則」の3つを中心に設計プロセスについて説明してくれている。

# 学び
・責務とは、解決すべき問題の領域のことで、モジュールに責務をまとめて置いている。
・責務分離が適切に行われた状態は、モジュール内で責務がまとまっており高凝集といい、モジュール同士では責務が分かれている疎結合状態という。
・あるモジュールの責務は、他のモジュールとは分離されているはずでありその境界線を崩してしまうと、重大なエラーを発生させてしまう可能性もある。
・Apple公式によるUIViewControllerの役割は、以下の4点である。
①データの変化に応じてViewsの内容を更新②ユーザーインタラクションへの反応③レイアウトの管理④他のオブジェクトとの連携
・関数や変数を命名する際には、「ユーザーがそこ関数の挙動を行うと、どのような処理を動くのか」を考えて命名すると他のメンバーも関数や変数に関

元記事を表示

OTHERカテゴリの最新記事