- 1. 【Swift】MintでLicensePlistを使う
- 2. 【Swift】公式ドキュメントのSequenceプロトコルを読む
- 3. iOS・Android兼用Appアイコンを作成する (Flutter)
- 4. Swiftポケットリファレンスのメモ
- 5. Lambda (Node.js) から SNS 経由で IOSデバイス にプッシュ通知
- 6. 構造体(Struct)について死ぬほど簡単にまとめてみた #1
- 7. 【Swift】MintでSwiftGenを導入する
- 8. 【Swift】文字列にNGワードが含まれているか配列で確認するコード
- 9. スコープ内外のお決まりについて(グローバル変数を添えて)
- 10. 【Flutter】share_plusがiPadで機能しない
- 11. 【Xcode14】iPadを非対応にする
- 12. iOSシュミレーターの実機(デバイス)を変えての検証
- 13. 【旧版】iOS(iPhone/iPad) 監視モードとDEPとVPPとABMについての個人的メモ
- 14. iOS16を旧Xcodeでビルドする!
- 15. 【Swift】一部だけ丸かどにする
- 16. ライブラリを使わずネット接続状況を取得してみよう
- 17. iOS16でのHealthKit データ出力 (export.xml) のバグ回避
- 18. iOS13以降プレースホルダー内の背景はダークモードを考慮して実装しなければならない説
- 19. Firestoreでcountの集計がとれるようになっていたのでiOSで実装してみた
- 20. AppStoreのios証明書の更新について
【Swift】MintでLicensePlistを使う
# はじめに
以前、[CocoaPodsを使用してLicensePlistを導入する記事](https://qiita.com/SNQ-2001/items/dc6433f63799ef76dd04)を書きました。
しかし、個人的にxcworkspaceが作られるのが好きではないでの最近はmintを使用してLicensePlistを導入しています。
今回はmintを使ってLicensePlistを導入する方法を記事に記録しておきます。# 今回使用するサンプルプロジェクト
![スクリーンショット 2022-10-15 21.16.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/d21acd7c-c01c-0855-8b5b-6194273734e7.png)# やりかた
### Mintfile
“`:ターミナル
cd プロジェクトフォルダ
“`
Mintfileを作成します
“`:ターミナル
touch Mintfile
“`
Mintfileを開きます
“`:ター
【Swift】公式ドキュメントのSequenceプロトコルを読む
# この記事は何?
SwiftのSequenceプロトコルについて、解説したものです。
[開発者ドキュメント](https://developer.apple.com/documentation/swift/sequence)より# 宣言
“`swift
protocol Sequence
“`# 概要
シーケンスは、1つずつ連続して取得できるリスト形式の値です。
シーケンスの要素を反復処理する代表的な方法は、`for-in`ループです。“`swift
let oneTwoThree = 1…3
for number in oneTwoThree {
print(number)
}
// Prints “1”
// Prints “2”
// Prints “3”
“`これによって、どんなシーケンスに対しても、多くの操作方法を実行できるようになります。
例えば、シーケンスに特定の値が含まれているかどうかを確認するために、「値が一致するか、シーケンスの最後に到達する」まで、各値を順次チェックできます。
次の例では、昆虫の配列に「蚊
iOS・Android兼用Appアイコンを作成する (Flutter)
# はじめに
“`Flutter“`でiOS / Android両対応アプリを作成した時に、“`AppIcon“`の作成に一番時間を取られたので作業ノウハウをまとめました。## どこに時間を取られたのか?
**iOS**
1024 x 1024 px[^1]の画像を用意すれば良いです。**Android**
“`Android 8“`から導入された“`Adaptive Icon“`[^2]によって、画像中央の直径“`66 dp“`の“`セーフゾーン“`を残して周囲が切り取られる場合があるので、予め構図を考えておかないと意図しないアイコン表示になってしまいます。
:weary:
Swiftポケットリファレンスのメモ### Swiftポケットリファレンスを読んだ後のメモ
[本のリンク](https://www.amazon.co.jp/%E6%94%B9%E8%A8%82%E6%96%B0%E7%89%88-Swift%E3%83%9D%E3%82%B1%E3%83%83%E3%83%88%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9-POCKET-REFERENCE/dp/4774196177/ref=asc_df_4774196177/?tag=jpgo-22&linkCode=df0&hvadid=295704876452&hvpos=&hvnetw=g&hvrand=11315013947549265090&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=1009225&hvtargid=pla-526262305170&psc=1&th=1&psc=1)
### iOSのレイア構造| 名前 | 概要|フレームワーク|
| :—: | :—:
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.textif 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 Apple SDK 10.0.0で、Firestoreのドキュメント数のcountができるようになった( ´・‿・`)?
リアルタイム監視はできずgetのみだけど。
明記されてないけど、1READ扱いかな?今後、他のAggregation(集計)操作対応も期待( ´・‿・`)
– https://t.co/cV3q9idCwC
– https://t.co/nJnznWdyS5 pic.twitter.com/puoSSSLpKJ— mono (@_mono) October 11, 2022
というわけで、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)