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

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

Mac上で動くiOSアプリで-34018 エラー(キーチェーンアクセスエラー)に関して

Developer Technical Supportに問い合わせたところ、調査して頂いた結果、MacOSに**entitlementsを検証する方法のバグ**があることがわかりました。

iOS13.1以降で修正したいとのことでした。
今後、解決されることを期待します。

# Developer Technical Support からの解析内容

macOS 12では`entitlements validated`となってるが、なぜかmacOS 13ではそれがない。
iOSアプリ自体は正常にprovisioning profileも含まれており、問題なくアプリが作成されていた。

>I looked at your issue in depth yesterday and I now understand its immediate cause. I ran your app on macOS 12 and macOS 13 and observed a key difference. Consider this on macOS 12:
>
>…
code signing i

元記事を表示

Vision.frameworkでクレジットカード番号を読取る(Swift)

![Xcode-14.1](https://img.shields.io/badge/Xcode-14.1-brightgreen) ![iOS-16.0](https://img.shields.io/badge/iOS-16.0-brightgreen)

## はじめに
クレジットカード番号の読み取りに[card-io/card.io-iOS-SDK](https://github.com/card-io/card.io-iOS-SDK)というライブラリを使っていたのですが 2016 年くらいにアーカイブされています。iPhone 12 Pro Max だとピントが合わないという事象もあるみたいです([これ](https://sbapp.net/appnews/app/upinfo/ios16/pintogaawanai-139826)と同じ?)。

Vision.framework を使うと文字認識ができるみたいなので自作に挑戦してみようと思います:muscle:

こんな感じです(手書きなのでちょっと精度下がりました:see_no_evil:)。

![demo](http

元記事を表示

心安らぐ重すぎチャットアプリ(物理)

@yuneco さんからバトンを受け取りました @mizuhugu35 です.
[クソアプリ Advent Calendar 2022 3 15日目](https://qiita.com/advent-calendar/2022/kuso-app)を担当させていただきます?

クソアプリ1年目です

## ?はじめに
皆さんは「重すぎる言葉」を言われたことはありますか?

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/431953/0091be40-74e8-0f37-3710-65759360d5a7.png)

あいにく私は言われたことがないので、その心情があまりわからないのですが、友人が体験していたのをまじかに見て「重すぎる言葉」を受け止めるのは 大変そうだなナア と感じています

そこで閃いたわけです。重すぎる言葉には *物理的な重さ* を持たせてしまえばいいのでは.

お分かりでしょうか、百聞は一見にしかず、まずはご覧下さい。

## ?重すぎチャット

![omo

元記事を表示

【Swift】サードパーティ製キーボードの使用を検知する

# はじめに
アプリ内で機密な情報を扱う際にサードパーティ製キーボードを使われたくありません。
現在使用されているキーボードがサードパーティ製か判定できるようにしてみました。

# サンプルアプリ
![Simulator Screen Recording – iPhone 14 – 2022-12-14 at 20 01 01](https://user-images.githubusercontent.com/84154073/207577968-e06500d8-36aa-47d1-961b-0292957c3f26.gif)

# 実装
### View
“`swift
import SwiftUI

struct ContentView: View {
@StateObject var viewModel = ViewModel()
var body: some View {
VStack {
Text(viewModel.keyboard ? “サードパーティ製キーボードを使用中です” : “標準キーボードです”)

元記事を表示

【Swift】アプリ名称が離れすぎているとリジェクトされる話

・アプリリリース時になかなかにレアなリジェクトを食らったので紹介。

## 今回リリースしたアプリ
https://apps.apple.com/us/app/musicdictionary/id1641304793

## 1. リジェクトメッセージ
メッセージ本文ママ
“`
Hello,

Thank you for submitting your items for review. We noticed an issue with your submission that requires your attention.
Submission ID:
App Name: MusicDictionary

We look forward to working with you to resolve the issues with the following items:

App Version
1.4.1 for iOS

Guideline 2.3.8 – Performance – Accurate Metadata

We noticed that the app

元記事を表示

【Swift】Stubデータ作成に便利なお手軽protocol紹介

## 定義

“`swift
public protocol Stubbable {
static func stub(_ edit: (inout Self) -> Void) -> Self
static func stub() -> Self
}

public extension Stubbable {
static func stub(_ edit: (inout Self) -> Void) -> Self {
var stub = stub()
edit(&stub)

return stub
}
}
“`

## 使い方

“`swift
struct User {
var id: String
var name: String
var followers: Int
}

// 別ファイル(テストターゲット内)でextensionしてもOK
extension User: Stubbable {
// デフォルトのスタブを定義
static func

元記事を表示

React NativeでGoogle AdMobのバナー広告を出す

### 環境
– React Native:0.70.6
– pod: 1.11.3
– iOS:16.0

## 今回使うやつ

https://github.com/invertase/react-native-google-mobile-ads

## Google AdMobのアカウント作成

https://admob.google.com/intl/ja/home/get-started/

こんなもんに説明はいらねぇ
アカウント作ってアプリを追加。
広告ユニットも追加する。

## インストール

https://docs.page/invertase/react-native-google-mobile-ads

>_# Install the admob module
>yarn add react-native-google-mobile-ads

僕はnpmでやりたいんだい!!

https://www.npmjs.com/package/react-native-google-mobile-ads

npmに上がってたのでnpmでやる(いいのかなぁ)

“`

元記事を表示

flutter_webviewのWebViewをデバッグする

# はじめに
WebViewを組み込んだアプリを開発していると、WebViewのCookieや通信内容を見ながらデバッグをしたくなることがあります。
今回は、[webview_flutter](https://pub.dev/packages/webview_flutter)を使用しているwebviewのデバッグ方法を共有します。
※あまりフロントを触ってこなかったので、一部用語等が異なる可能性があります。ご了承ください。

## 対象
Flutterのアプリ内WebViewを[webview_flutter](https://pub.dev/packages/webview_flutter)で実装している人

## 用語
デベロッパーツール(Chrome)、Webインスペクタ(Safari)、などと呼ばれているアレを使用します。
どうやらChromeとSafariで呼び方が異なるようです。

## 環境
– Mac
– Android Studio
“`
Flutter 3.3.9
Dart 2.18.5
webview_flutter: 3.0.4
“`

# Flutter

元記事を表示

UnityIAPで課金を実装する (個人開発者向け)

# 概要

課金アイテムを実装してと言われてUnityIAPを触ることになった人に向けて備忘録として残しておきます。

# 目次
[1.前提](#1-前提)
[2.UnityIAPをプロジェクトに追加する](#2-unityiapをプロジェクトに追加する)
[3.実装](#3-実装)
[4.ストアの設定](#4-ストアの設定)
[5.おわりに](#5-おわりに)

# 1. 前提
CodelessIAPは使用しません。
レシート検証はこの記事では取り上げません。

# 2. UnityIAPをプロジェクトに追加する

Unityプロジェクトを開き、雲アイコンをクリックしてUnityGamingServicesを開く
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308814/18e1c421-74ce-7d85-efc0-2fb33ef02401.png)
InAppPurchasingをクリック
![image.png](https://qiita-image-store.s3.a

元記事を表示

【SwiftUI】マルチタスク画面に切り替わったら情報を見れなくする

# はじめに
iPhoneに標準でついているパスワード管理機能?(Twitterで二要素認証しようとしたら表示された)がマルチタスク画面に行くとパスワードなどが全て非表示になりました。
今回はそれを再現してみたいと思います。

# マルチタスク画面ってなに?
マルチタスク画面で合ってるの分からないので説明しておきます笑
![simulator_screenshot_DA3438A9-4838-48BE-AF01-560F80E4EE9F.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/6bc53154-fd72-9f8a-876c-df5c9a5cb871.png)

これのことです

# サンプルアプリ
![Simulator Screen Recording – iPhone 14 – 2022-12-13 at 20.38.22.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/93d7b

元記事を表示

はじめてのAppsFlyer: (1)アプリを管理画面に追加する

AppsFlyerを試用してみる手順をまとめます。
エンジニアの方が手元でテストするための「デバッグアプリ」としてアプリを登録する手順でまとめますが、基本的な手順は、本番リリース済みのアプリでも同様です。
(スクリーンショットは2022年12月現在のものになります。)

# サインアップ

まず、こちらのページからアカウントを作成するためサインアップします。

https://www.appsflyer.com/ja/start/

クレジットカードの情報などを入れなくても、アカウントを作れば下記の利用は無料でできます。試しにAppsFlyerを使ってみるのには十分かと思います。
– 12,000コンバージョン分(=計測リンク経由のアプリインストールもしくはアプリ再起動の数)の計測
– 各種有償のオプション機能の利用(30日間)
– ディープリンクを含むOneLinkの利用

![Monosnap 無料でアカウント登録!クレジットカードは不要です 2022-12-09 17-28-04.png](https://qiita-image-store.s3.ap-northeast

元記事を表示

UIViewを砕く(Swift)

![Xcode-14.1](https://img.shields.io/badge/Xcode-14.1-brightgreen) ![iOS-16.0](https://img.shields.io/badge/iOS-16.0-brightgreen)

## はじめに
`SpriteKit` をさわっているときに天啓が降りました:bulb:

Confetti のパーティクルをちょっといじれば `UIView` を砕けるのでは?

ということでやってみました。完成形はこんな感じです。

![break](https://user-images.githubusercontent.com/34936885/207287914-a49c0156-6cbb-4985-b204-60306793747e.gif)

## SKSファイル作成
昔は SpriteKit Particle File にデフォルトであった Confetti を少し修正して使います。設定はこんな感じです。

particle2列のピッカーの作成方法と左のピッカーに連動して右のピッカーの内容を変える方法

概要

2列のピッカーを作成して、左のピッカーに連動して右のピッカーの内容を変える方法について書いていきます。

今回使うクラス
UIPickerView

今回使うメソッド
component
UIPickerViewDataSource
UIPickerViewDelegate
列挙型のenumとswitchを使った切り替え

動画

![twinPicker.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2963152/13e62d95-ea94-3c65-1ea0-b5eb704b4e31.gif)

pickerViewの作成

まずはピッカーを作成します。

storyboardにPickerViewを設置し、IBOutlet接続したら
ViewControllerにUIPickerViewDataSourceUIPickerViewDelegateを追加します。

`cla

元記事を表示

【Swift】シングルトンは悪くない、sharedを直接触るのが悪いんだ

## シングルトン

古来からあるデザインパターンの一種で

– **A: クラスのインスタンスをアプリ内で1つのみ存在させる**
– **B: static変数のsharedでどこからでもアクセスできる**

という効果があります。
「単一のリソースに対してアクセスするクラスは、複数生成すると並列アクセス等でバグが出るからシングルトンにしようね」なんて言われてたりします。例としては以下のようなクラスです。

– ログイン状態を管理するクラス
– DBを操作するクラス
– デバイスの機能 (Location, Bluetooth) を使うクラス

“`swift
final class Auth {

// static変数で自分自身を保持
static let shared: Auth = .init()

var isSignedIn: Bool { … }
func signIn() async throws { … }

// initをprivateにすることで、クラス外でインスタンスを生成できなくする
//

元記事を表示

HealthKitを使って睡眠分析アプリを作ってみる

# はじめに
本記事はARISE analytics Advent Calendar 2022の13日目です。
昨日は@hktechさんの[AWS App Runnerでアプリケーションを動かす](https://qiita.com/hktech/items/c37dfcae8b17e5907264)
明日は@SaitomTechさんのServerless Framework を用いて Step Functions Distributed Map による Lambda の大規模並列処理を実現する
# HealthKitとは
HealthKitとは、iPhoneやApple Watch、他のヘルスケアアプリから集めた健康データを、iPhoneのヘルスケアアプリに連携する開発者向けツールです。例えば、Apple Watchで計測された心拍数や、体重計と連動しているアプリから連携される体重や体脂肪率をHealthKitが統合管理することで、我々開発者はさまざまなヘルスデータを利用することができます。
![HealthKit.png](https://qiita-image-store.s3.

元記事を表示

R.Swiftのプラグインの導入方法(Xcode project編)

2022/11/29に R.Swift 7.0.0 がリリースされ、Swift Package Manager ビルドツールプラグインの機能が追加されました。この R.Swift プラグインの導入方法についてREADMEに沿って説明します。

– R.Swift 7.0.0 リリースノート
– https://github.com/mac-cain13/R.swift/releases/tag/7.0.0
– リリース一覧
– https://github.com/mac-cain13/R.swift/releases

:::note info
インフォメーション
記事執筆現在、既に 7.2.4 がリリースされており、引き続き頻繁なリリースが続きそうな勢いです。
導入される方は最新のリリースを導入すると良いと思います :ok_woman:
:::

# R.Swiftのプラグインとは

R.Swiftにはこれまでプラグインの機能はありませんでした。今回の7.0.0で新規に追加されたものです。
この機能により、R.generated.swiftが自動生成されます。

元記事を表示

【SwiftUI】Combineでキーボードを監視する

# はじめに
私は現在カスタムキーボードを作成していて、キーボードの状態を知る方法を色々試しています。
この方法はCustomKeyboardExtensionでは使用できませんでしたが、メインターゲットでは使用できました。
せっかく試したので記事にしておきます。

# サンプルアプリ
ちょっと見にくいですが、以下の2項目を表示しています。
– キーボード状態(開いている or 閉じている)
– キーボードサイズ(width, height)
![RPReplay_Final1670849788_MP4_AdobeExpress.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/b335fb1b-9182-a355-9d53-a64fab4642d1.gif)

# 実装
### View
“`swift:ContentView
import SwiftUI

struct ContentView: View {
@StateObject private var viewMode

元記事を表示

SwiftのCollectionViewCellの型崩れについて

## 概要
SwiftのCollectionViewCellの実装中に、Cell内に配置しているUIButtonの形を円形にしようと実装していたところ、なぜかひし形のような形になって型崩れしてしまっていました。
## 条件
サーバーから取得してきたユーザー情報をCollectionViewCellに入れるというごく単純なものになります。
Swiftファイルとは別に切り出した、『CollectionViewCell.Swift』を作成し、ViewController.SwiftファイルのcellForAtでセル一つずつに情報を入れるという形で実装していました。

## 実装
コードの状況としては、以下のような感じでした。

“`CollectionViewCell.Swift
final class CollectionViewCell: UICollectionViewCell {

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

override func layoutSubviews() {
super.layo

元記事を表示

openapi-generator で自作テンプレートを用いて iOS API クライアントを自動生成した話

この記事は [ドワンゴ Advent Calendar 2022](https://qiita.com/advent-calendar/2022/dwango) 11 日目の記事です。1日遅刻してしまいました :bow:

こんにちは、@tasuwo です。普段はニコニコ動画 iOS アプリの開発に携わっています。ニコニコ動画iOSアプリ (以下、動画iOSアプリ) では3年程前から OpenAPI 仕様を元に APIクライアントを自動生成し、動画iOSアプリとボカコレアプリで利用しています。その中で得られた知見について紹介しようと思います。(そもそも OpenAPI とは?という話は、今回は割愛します :pray: )

## コード自動生成導入の経緯

主なモチベーションはやはり省力化でした。導入以前は仕様書を元に実装を行い、同じ仕様書を元にレビューするといった工程が必要でしたが、仕様書からコードが自動生成できれば多くの手間を省くことができます。
また、動画iOSアプリから主に利用するAPIでは既にOpenAPI仕様が提供されていました[^1]。この仕様を提供するチームは動画i

元記事を表示

SwiftUIで作る「Drag処理を利用したCarousel型UI」と「Pinterest風GridレイアウトUI」の実装例とポイントまとめ

## 1. はじめに

皆様お疲れ様です。Swift AdventCalendarの12日目を担当させて頂きます、fumiyasac(Fumiya Sakai)と申します。何卒よろしくお願い致します。

最近になって、業務や個人開発の中でも徐々にSwiftUIやそれを取り巻くアーキテクチャ等にも触れる機会が徐々に増えてきました。

UIKitが主流だった時代から今日までiOSアプリにおけるUI実装に関する部分は、自分にとっては一番関心が高いトピックではあるので、今後はある程度まとまった記事の形でも継続的な投稿ができる様にして参ります。
(もちろん不定期で公開しているTwitter等での手書きノートによるアウトプットも継続していく所存ではあります?)

私自身もそれほどSwiftUIに慣れているわけでは決してありませんが、これまでUIKitを活用して実装経験があるものや、サンプル実装検証をすすめた経験があるものの中で、

– UIKitを利用した際でも想像以上に工夫が必要だったUI実装を、SwiftUIに置き換えて考える事は可能か?
– 更にSwiftUI製の実装する場合は、従来のUIK

元記事を表示

OTHERカテゴリの最新記事