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

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

[iOS] 動画像テクスチャを使って時系列変化を表示する AR アプリを作る

![pict1_1024.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/420332/4d5c6778-0028-50b2-83d8-80a1b0c5fc94.jpeg)

iOS / iPadOS デバイスで動作する AR(拡張現実)アプリにおいて、仮想オブジェクトの表面素材(マテリアル)として動画像を使うことで、AR 体験に動きのある風景を取り入れたり、時系列データのビジュアル化に応用することができます.iOS SDK の ARKit と RealityKit を使うと数行のコードでこれを実現することができます.この記事では、NASA earth observatory の動画像(衛星データを元にした地球環境変化のビジュアライズ動画像)を例にとって AR 表示する方法を説明します.

# 仕組み

RealityKit の VideoMaterial 機能を使って動画像を AR 空間の仮想オブジェクトのマテリアルとして再生します.この VideoMaterial 機能は WWDC20 で紹介された

元記事を表示

MacbookでFinderを終了させたい

## はじめに
Macbookを使っていてとても気になること、それはFinderアプリが常に起動していること。
Windowsでいうエクスプローラーの位置づけにあるFinderアプリはたしかによく使うのだが、常に起動状態にあることがモヤモヤしている人も多いのでは。
そんな問題を解決すべく方法を今回はシェアします。
一瞬です。

## Finderアプリの終了する設定

“`
defaults write com.apple.Finder QuitMenuItem -bool true
“`

ターミナルを開いて、上のコマンドを実行するだけです。

このコマンドを実行し、パソコンを再起動すると、Finderアプリのメニューに「Finderを終了」という項目が追加され、⌘+QでFinderを終了できるようになります。

ちなみに以下のコマンドを実行すれば元の状態に戻ります。

“`
defaults write com.apple.Finder QuitMenuItem -bool no
“`

以上、Finderを終了させる方法でした。

元記事を表示

iOS用アプリのストア掲載についての備忘録

IT業界でエンジニアの卵として働いている小生が、iOS用アプリのストア掲載について毎回手順を忘れるので備忘録として手順を記録します。今回のケースはコーディングを外注しており、それをgitで管理しそれをクローンするところから始まります。すでにAppleIDの登録やAppleDeveloperでのアプリの登録は済んでいるものとし省略します。

1. gitからリポジトリurlをクローンしXcodeで呼び出す
1. 証明書要求の作成(mac側での操作)
1. Certificate(証明書)の作成
1. プロビジョニングプロファイルの作成
1. Xcodeでのビルド
1. ストアアップロード

![iosビルド図.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1508384/117c7e14-a855-444e-7b3a-ba63b3cf4f1e.jpeg)

## 1. gitからリポジトリurlをクローンしXcodeで呼び出す
バージョン管理システムであるgitで共有された、、サーバーリポジトリを

元記事を表示

UnityAds使用アプリにてiOS14以降のATT対応で安心してたらGDPR絡みでリジェクトされた話

#はじめに
これまでに買いきりアプリを作った経験はあるものの、広告収入のアプリは経験ないもので、
iOS14.5からATT(App Tracking Transparency)対応が必要だと言われてもなにそれ(?)状態でした。
「iOS14.5 UnityAds ATT」あたりでググって先人たちの知恵を拝借しなんとかなった結果、
とりあえず2021年12月にリリースできた拙作がコチラ↓(まず宣伝!)

https://play.google.com/store/apps/details?id=jp.Acodebank.JigsawPuzzle&hl=ja

https://apps.apple.com/jp/app/%E3%83%91%E3%82%BA%E3%83%AA%E3%82%A3%E3%83%8F%E3%82%A6%E3%82%B9/id1591404180

万全を期して作ったつもりですが不具合があったり、様々な都合で仕様変更があったりで
アプリのバージョンアップをすることに……

とは言うものの「一度審査を通過しているから大丈夫だろう」なんて思っていました。

Unity

元記事を表示

【2022年1月】【AppleStore審査】審査までの手順が微妙に変わってる。

#AppleStoreConnectの審査提出ページが変わってる。

AppleStoreConnectの右上が`審査へ提出`が`審査用に提出`になっていたり、プロモーションのテキストが`一番上`になってたり変わってます。
今まで通り右上から`審査へ提出`を押すだけでは、`審査に進みません!`
今までは`このバージョンの最新情報`の入力欄が一番上だったのが`中段`に移動したりと変わってますので記載する箇所には`要注意です!`

# 新しい審査提出手順

1.必要情報を記載して`保存`する。
ファイル名

2.`審査用に追加`を押下する。
ファイル名iOSアプリにApple Music機能を追加(音楽の検索と再生) (MusicKit)

これまでは、楽曲を検索するにはApple Music APIを使用する必要がありました。新たに発表されたiOSのMusicKitフレームワークによって、楽曲を検索したり、アルバム内の曲をすべてリストアップしたり、楽曲を再生したりするためのリクエストをより簡単に行えるようになりました。

このフレームワークは、Androidシステムでも利用可能です。この記事では、これについては触れません。

MusicKitの新たなフレームワークには、新しくなったSwiftの並行処理も採用されています。データのリクエストに対するレスポンスを待つには、`await`コマンドを使用することができます。

この記事では、`Apple Music`のカタログを検索し、音楽を再生するアプリの構築について説明します。

## 使用事例

Appleによると、可能となる使用事例にはゲーム内のBGM、トレーニング中の音楽、ソーシャルメディアなどが含まれています(しかしながら、ご使用の際にはライセンスや著作権などに関して、常にご確認をいただくようお願いします)。

## 最初にEntitlementを追加する

最初に

元記事を表示

【Swift】知っておきたいKeyPathの基本と使い方

# この投稿は何?
Swiftにおける`KeyPath`について、基本から解説します。

## 実行環境

– macOS 12.1
– Xcode 13.2.1
– Swift 5.5

# KeyPathとは
要は、「あるデータ型に定義されたプロパティまでの参照(パス)」です。

## Swift3時代のString KeyPath
`KeyPath`は、Objective-Cの時代から利用されていました。
Swiftでもそれを受け継いでおり、クラスに`objcMembers’属性をマークすることで利用できました。

“`swift:参照型データの場合
@objcMembers class Kid: NSObject {
dynamic var nickname: String = “”
dynamic var age: Double = 0.0
dynamic var bestFriend: Kid? = nil
dynamic var friends: [Kid] = []

init(nickname: String, age

元記事を表示

Flutter モーダルボトムシート(iOS風)でWebView表示

# はじめに
**Flutter**で**iOS風 モーダルボトムシート**(モーダルが下から出て、後ろの画面が少し小さくなるあれ)でWebView表示を実装しました。

# 環境
– Dart: 2.15.1
– Flutter: 2.8.1

# 完成形

![modl_bottom_sheet.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1519965/ad735574-504d-e6fc-6494-c85c8edbf69f.gif)

# 実装
WebViewの説明に関しては、以下の記事で説明しているのでご覧ください。
– [Web画面表示(進捗バー付き)](https://qiita.com/k2rt/items/77cbd77b486c1b825d3f)

## Package

[modal_bottom_sheet](https://pub.dev/packages/modal_bottom_sheet)を使用します。(名前そのまま)

“`pubspec.yaml
dependen

元記事を表示

RxSwift入門に丁度いいサンプルコード書いてみた

## はじめに
最近、少しずつ`RxSwift`の勉強をしています。
僕が勉強始めた時、いい塩梅のサンプルコードを探すのに、少しだけ時間がかかってしまったので、自分が書いたサンプルコードを記事にしようと思いました。

これから`RxSwift`の門を叩く方のお役に立てれば幸いです。

## 前提条件
– Swiftが読めること
– Codableを利用したAPIリクエストについて理解していること
– MVVMの特徴を理解していること
– RxSwiftが概要レベルで分かること

## サンプルコードの概要
アプリを起動すると、Qiitaの記事一覧の検索APIをコールして、そのレスポンスをTableViewに表示するだけのアプリです。

`RxSwift`で動く簡単なアプリを第一目標にしたので、

– Protocolで抽象を参照するなどのリファクタリングはしてません。
– エラーハンドリングとか適当です。

↑ご容赦ください。

## コード&解説

`RxSwift`を利用するからには、データバインディングを活用したMVVMアーキテクチャを採用したいということで、今回は、MVVMで実

元記事を表示

【Swift】Screen(画面)・StatusBar・NavigationBar・TabBarのサイズ取得を集約

#はじめに
画面の縦横の幅やそれぞれのバーの高さを取得することが割と多く感じたのでまとめました。

#コード

“`swift
import UIKit

struct ScreenBarSizes {

// 画面の縦幅を取得する。
static func screenHeight() -> Int {

return Int(UIScreen.main.bounds.size.height)
}

// 画面の横幅を取得する。
static func screenWidth() -> Int {

return Int(UIScreen.main.bounds.size.width)
}

// ステータスバーの縦幅を取得する。
static func statusBarHeight() -> CGFloat {

return UIApplication.shared.statusBarFrame

元記事を表示

【iOS】世界一分かりやすいオープンソースライブラリの実装

#はじめに
アプリをリリースする際に著作権情報として使用したライブラリのライセンスを表示するかと思います。
LicensePlistを使用すると一発で使用中ライブラリを取得し設定アプリに表示してくれます。
アプリにコピペしなくて済む上に、ライブラリの追加・更新作業も自動でやってくれます。
もし他のサイトを参考にやってみたけどうまくできないという方にもお勧めです。

https://github.com/mono0926/LicensePlist

#実装
今回はCocoaPodsにて導入していきます。
Podfileにて↓を記入してpod installします。

“`
pod ‘LicensePlist’
“`

プロジェクトを開き、NewFileにてSettings Bundleを追加します。

![スクリーンショット 2022-01-24 15.45.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/656839/54bf6d16-949e-cd26-06ec-39d02fd97080.p

元記事を表示

【iOS】App内課金のレシート検証で responseBody.Latest_receipt_info が undefined だった時の対処法

“NG:“ responseBody. **L** atest_receipt_info
“OK:“ responseBody. **l** atest_receipt_info

先頭を小文字にすればOKでした。

公式DOC([responseBody.Latest_receipt_info _ Apple Developer Documentation](https://developer.apple.com/documentation/appstorereceipts/responsebody/latest_receipt_info))は大文字始まりで書いてあるので注意です。

元記事を表示

【Flutter】Shimmerを利用してUXの高いローディング処理を実現

インドネシアの[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)

## Shimmerとは
データの読み込み中であることをユーザーに伝える方法の一つとして、読み込み中のコンテンツの形状に近似したUIの上に、グレー等の色でローディング状態を表現するアニメーションです。

以下、[Flutter公式](https://docs.flutter.dev/cookbook/effects/shimmer-loading)から参照。
![]

元記事を表示

Apple ホームAppで暖房の予約をする

#オフトゥンから出られない
執筆時現在の季節は真冬です。この寒い季節、私は朝布団からすぐに出ることができません。
そこで、起きる前にどうにかエアコンをつけて部屋を暖めておくことはできないかと考えました。

#自室の環境
エアコンの制御はhomebridgeを母艦とするAppleのホームAppを使用しています。
iPhoneのホームAppからエアコンの任意の設定を行うことが可能です。
わかりやすく言うと、iPhoneでエアコンのオンオフや温度設定を自由に行える状態にあるということです。

また、起床時のアラームはiPhoneの標準時計アプリを使っており、8時に予鈴が1回、20分後に1回鳴ります。

#環境の理想系
・就寝直前、翌朝の気温を確認して予約をする。
・予約がある場合、8時になったらエアコンをつける。
といったものを想定しました。

ここで必要になる事は、
__(A) 就寝から8時までの間、予約をすることを記録しておく事__
__(B) その記録を元にエアコンをつける事__
の両方を満たす事です。
この環境でのこれらを満たす最適解を見つけようとしました。

#解決策

###(i

元記事を表示

FlutterでFirebaseを使ってみる〜Firebase導入編(iOS)〜

## 投稿の経緯
FlutterのキャッチアップでFirebaseと連携してFirestoreを使うサンプルプロジェクトを立ち上げました。今回はiOSアプリにFirebaseを導入してエミュレーターでビルドするところまでを書こうと思います。

## 環境
Flutter:2.8.1
MacOS:12.1

## サンプルプロジェクト
GitHubにコードPushしています。気になる方はご覧ください。
![QR_925113.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643372/f774b418-6fc2-a814-c742-ebf8dde02847.png)

## Firebaseの導入
公式情報を参考にして進めていきます。

https://firebase.google.com/docs/flutter/setup?platform=ios#analytics-not-enabled

#### Firebaseプロジェクトの作成
![a800c466878afb7914d8583967d7

元記事を表示

【Combine】debounce(for:schedule:option) オペレータを理解する

今回は、`debounce`というオペレータについて、理解してみようと思います。

## 環境

【Xcode】13.1
【Swift】5.5
【macOS】Big Sur バージョン 11.4

## 公式ドキュメントから理解する

まずドキュメントにあったコードは以下の通り

“`swift
// 以下のimportはドキュメントにはなかったので追加
import Combine
import Foundation

let bounces:[(Int,TimeInterval)] = [
(0, 0),
(1, 0.25), // 0.25s interval since last index
(2, 1), // 0.75s interval since last index
(3, 1.25), // 0.25s interval since last index
(4, 1.5), // 0.25s interval since last index
(5, 2) // 0.5s interval

元記事を表示

[iOS] 国際宇宙ステーション(ISS)を歩く AR アプリを作る

![title_1024.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/420332/e44ab591-1fc5-d9e1-6b33-c879334a4d2f.png)

閉じた空間の中にある構造物を歩き回る体験を AR(拡張現実)を使って提供します.iOS SDK の ARKit と RealityKit を使うと数行のコードでこれを実現することができます.この記事では、宇宙空間に浮かぶリアルスケールの国際宇宙ステーション(International Space Station: ISS)(一部分のユニット)の中を自由に歩き回ることができるアプリの作成方法を説明します.

# 仕組み

ISS(一部ユニット)のリアルスケールの 3D モデルを用意します.AR 体験を開始する際のデバイスの位置を ISS モデルの通路に位置合わせして仮想空間を作成します.こうすることで、背丈の異なる大人や子供が、AR 体験を開始したデバイスの位置に合わせて作られる仮想空間により、通路の中を自然な姿勢で歩くことができます.

元記事を表示

アニメ変換をiPhoneでつかいたい — CoreMLに変換すればOK

#AnimeGAN2-pytorchをiPhoneで使える形式に変換する方法です

変換ずみモデルを入手したい方はこちら:

https://github.com/john-rocky/CoreML-Models

アニメ変換機械学習モデルであるAnimeGAN2をiPhoneアプリで使えるようにします。

#AnimeGANはかっこいい、、でもPythonかあ。。。

アプリケーションでPythonのモデルを使うには、サーバーに画像をアップして処理したり、、、と大変そう。

#CoreMLに変換すれば

元記事を表示

よく使うコマンド集

コマンドを使用する際に、いつも検索する事から始めてしまい、時間も取られてしまうので、予めメモとして投稿しようと思いました。
– – –
#指定先に移動する
“`
cd 指定ファイル、フォルダまたはディレクトリ
“`
cdの後に半角スペース、後は指定先をドロップアンドドラッグでOKです。
#gitの初期化
“`
git init
“`
#設定したRepositoryの確認
“`
git remote -v
“`
#コミット履歴確認
“`
git log
“`
#ローカルエリアの差分確認
“`
git status
“`
#ステージングエリアに保存(全て)
“`
git add .
“`
#コミットする
“`
git commit -m”任意のメッセージ”
“`
#現在のブランチの確認
“`
git branch
“`
#リモート環境にアップロードする
“`
git push origin master
“`
“`
git push origin main
“`
– – –
#・トラブル発生時によく使うコマンド
#ファイル全体のキャッシュ削除
`

元記事を表示

【SwiftUI】アラートを表示する

#環境
Xcode 13.2.1
Swift 5.5.2

#実装
ボタンをタップした時にアラートを表示する場合は以下のようなコードになります。

“`swift
struct ContentView: View {
@State private var isShowingAlert: Bool = false

var body: some View {
Button(“アラートを表示する”) {
isShowingAlert = true
}
.alert(“Text”, isPresented: $isShowingAlert) {
Button(“Button1”) {
// タップした時の処理
}
Button(“Button2”) {
// タップした時の処理
}
} message: {

元記事を表示

OTHERカテゴリの最新記事