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

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

Lambda (Node.js) から SNS 経由で IOSデバイス にプッシュ通知

# はじめに
LambdaからSNS経由でアプリをインストールしたIOSデバイスにプッシュ通知する方法についてまとめました。

# 事前構築
– プッシュ通知用証明書(p12)は、発行済とする
– IOSデバイスのデバイストークンは、取得済みとする
– 参考記事
– https://kahoo.blog/howto-aws-sns-ios-push-notification/

# SNS作成
SNSでプッシュ通知の設定をします。
## プラットフォームアプリケーションの作成
`プラットフォームアプリケーションの作成`をクリックします。
![スクリーンショット 2022-10-14 16.00.24.png](https://qiita-image-store.s3.ap-northeast-1.amazon

元記事を表示

構造体(Struct)について死ぬほど簡単にまとめてみた #1

## はじめに
長いソースコードを長時間眺めていると(お決まりの)ゲシュタルト崩壊を起こし、構造体やそのスコープ内でやっている処理など訳分からんくなるときが多々ある。そんなとき、構造体の基礎中の基礎をしっかり思い出し、冷静に対応することの大切さをしみじみと実感したので2〜3記事程度でまとめることとする。前提として、どの記事・参考書よりも短く簡潔に触れていこうと思うので、めっちゃ詳しく勉強したい人は今すぐこのブラウザを閉じてくれ。

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

– (~~ワイのような~~)センスのないエンジニア
– プログラミング初学者

## 構造体とは
構造体とは設計図であり、インスタンス化(PCのメモリにぶっ込む)をして初めて使用することができる。また、インスタンス化とは実体化ともいう。
上記を踏まえて、超大まかに要点だけ絞っていうと二つにまとめることができる。
1. プロパティ(変数や定数)、メソッド(関数)、イニシャライザ(初期化関数)をひとまとめにしたもの
2. 入力(引数)、出力(戻り値)の役割を担うもの

## 詳細
・ インスタンス化を

元記事を表示

【Swift】MintでSwiftGenを導入する

# はじめに
SwiftGenを初めて使ってみたので忘れないように記録しておきます。

# SwiftGenとは
公式からはこのように説明されていました
>SwiftGen is a tool to automatically generate Swift code for resources of your projects (like images, localised strings, etc), to make them type-safe to use.

英語は苦手なので日本語も載せておきます
>SwiftGenは、プロジェクトのリソース(画像やローカライズされた文字列など)に対してSwiftコードを自動生成し、タイプセーフで利用できるようにするツールです。

***どういうことか?***
通常、画像を表示させようと思ったら以下のようになります。
“`swift
Image(“share”)
“`
しかし、SwiftGenを使用すれば以下のように書くことができます。
“`swift
Image(uiImage: Asset.share.image)
“`

これは便

元記事を表示

【Swift】文字列にNGワードが含まれているか配列で確認するコード

入力値にNGワードが含まれているか配列で確認するコード

## 前提
NGワードの文字列の配列があり、
入力値などの、とある文字列がそれらを1つ以上含んでいるか確認したい

一見`contains`を使えば良さそうにも思えるが、NGワードの配列の要素を1つづつ確認するには繰り返し処理を使わなければならない。

## 解決策

`allSatisfy`を使う

“`swift
// NGワードの配列
var prohibited_words : [String] = []

// 入力値など
var value = textLabel.text

if self.prohibited_words.allSatisfy({ !value.contains($0) }){
// NGワードが1つも含まれていなかった場合の処理
}
else{
// NGワードが1以上含まれていた場合の処理
}
“`
`allSatisfy`は配列の全ての値が条件を満たすか判定するメソッド

https://developer.apple.com/documentation/swift/ar

元記事を表示

スコープ内外のお決まりについて(グローバル変数を添えて)

## はじめに
業務で扱う長いソースコードを長時間見ているとゲシュタルト崩壊を起こし、スコープ内外のお決まりについてすっかり忘れ、凡ミスをするという失態をおかした。そのため、非常に簡単ではあるが改めてスコープの範囲についてまとめる。

## 対象者
この記事は下記のような人を対象である。

– (~~ワイのような~~)センスのないエンジニア 
– プログラミング初学者

## 結論
– スコープにはアクセスできる範囲とできない範囲がある。
– {} ← スコープとはコレのことである。
– スコープ外にアクセスするにはグローバル変数などにする必要がある。
## 詳細
– スコープ内の変数や定数はスコープ内でのみアクセス可能
スコープ内の定数numはスコープ内でのみアクセス可でき、print関数で出力可能。それとは逆にスコープ外でのアクセスやprint関数で出力しようとも出力は不可能である。(スコープ外だと定数numは破棄される)
“`swift:Swift
for i in 1…10 {
//スコープ内の定数
let num = i
print(num)
}

元記事を表示

【Flutter】share_plusがiPadで機能しない

公式に書かれている通りに実装したけど、 AndroidやiPhoneでは機能するのにiPadでは機能しない。

しかも長文の謎のエラーを吐く。

“`
[LayoutConstraints] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don’t want.
Try this:
(1) look at each constraint and try to figure out which you don’t expect;
(2) find the code that added the unwanted constraint or constraints and fix it.
(Note: If you’re seeing NSAutoresizingMaskLayoutConstraints that you don’t understand, refer to

元記事を表示

【Xcode14】iPadを非対応にする

# はじめに
Xcode14から色々と操作が変わって「これってどうやってやるんだ?」ということが割とあるので毎回記事にできたらなと思います。
今回はXcode14でiPadを非対応にしたいという記事です。

# やりかた
① プロジェクトを選択します
② ターゲットを選択します
③ 「Build Settings」を選択します
④ `Targeted Device Families`と検索欄に入力します
⑤ 背景が緑色の欄をタップします
![スクリーンショット 2022-10-13 20.34.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/dc6b01bd-001f-ffa0-7adb-bc7be7237379.png)

⑥ 「iPhone」を選択します
![スクリーンショット 2022-10-13 20.43.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/d48488b7-

元記事を表示

iOSシュミレーターの実機(デバイス)を変えての検証

現在35モデル以上のデバイスを抱える`iPhone`ですが、`Flutter`で開発しているとディスプレイの大きさによって画像の調整が必要になるなど、それぞれで検証しないといけない状況がやってきます。`2022/10`現在の`iOS 16.0`で対応している実機だと、小さいサイズで`iPhone SE(第3世代)`の`4.7インチ`大きいサイズで`iPhone 14 Pro Max`の`6.7インチ`と2インチ(5.08cm)もの差があります。なので`4.7 / 5.4 / 6.1 / 6.7`の4機種を検証に当てると良いかと。

|機種|ディスプレイ(縦横)|
|:———–|————:|
|iPhone 8|4.7インチ(11.938cm)|
|iPhone SE(第3世代)|4.7インチ|
|iPhone 12 mini|5.4インチ(13.716cm)|
|iPhone 8 Plus|5.5インチ(13.97cm)|
|iPhone X|5.8インチ(14.732cm)|
|iPhone 13|6.1インチ(15.494cm)|
|iPhon

元記事を表示

【旧版】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.5 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`プロトコル

元記事を表示

OTHERカテゴリの最新記事