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

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

Kotlin Multiplatform Mobileで作ったプロジェクトで実機ビルドができない場合の対応

# 概要
プラグイン`Kotlin Multiplatform Mobile`を利用してプロジェクトを作った際、実機ビルドができないとなった時の対応。

– [Kotlin Multiplatform Mobile](https://plugins.jetbrains.com/plugin/14936-kotlin-multiplatform-mobile)

エラー内容としては下記。

“`
${Path}/iosApp.xcodeproj Building for iOS Simulator, but the linked and embedded framework ‘shared.framework’ was built for iOS.
“`

# 原因
AndroidとiOS側で共有されている’shared.framework’がiOS Simulator用にビルドされていて、実機では使えないという話。

FWは以下のような処理を経て生成される。
具体的にはConfigurationを基に各ターゲット向けに生成されたFWをコピーし、`xcode-frameworks`

元記事を表示

【iOS】個人開発で使って気分がよかったライブラリ5選【個人開発】

## [Yalantis/ColorMatchTabs: This is a Review posting app that let user find interesting places near them](https://github.com/Yalantis/ColorMatchTabs)
綺麗な上タブが作れるライブラリ!

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/138063/d08fce99-47c3-3cb6-af6e-7a920c196f20.png)

## [janselv/fave-button: FaveButton is an iOS cute animated like button written in Swift.](https://github.com/janselv/fave-button)
素敵なボタンが簡単に実装できる!
![fave-button1.gif](https://qiita-image-store.s3.ap-northea

元記事を表示

【iOS/Android】ネイティブアプリ開発をしたい人への上達マップ【初心者】

## 想定読者:これからネイティブアプリを開発したい人
想定読者に向けて、上達の全体像をお伝えします。
新人や駆け出しエンジニアの方が自分がどのあたりにいるか把握でき
モチベーションアップになれば幸いです。

## まずは入門書の前半くらい
画面のレイアウトを作れるようになる
数字や文字列を表示できるようになる
ボタンを作る
ボタンを押したら、数字が増えたり減ったりするカウンターを作れるようになる
画面遷移ができるようになる
画面遷移の時に値を渡せるようになる

## 入門書の後半くらい
値を保存できるようになる。
値を呼び出せるようになる。
データベースにデータを保存できるようになる。
データベースからデータを読み出せるようになる。

色や動きなどを実装できるようになる

## 結構大変になってくる
通信処理ができるようになる
エラーハンドリングができるようになる

## お、そろそろ実務の駆け出しくらいには行けるか?
綺麗にレイアウトを組めるようになる
(AutoLayoutなど)
デザインガイドラインを理解する
非同期通信ができるようになる

アプリの審査に提出できる
権限周りが

元記事を表示

iOSアプリリリースで、誰も教えてくれなかった9つのこと

今週、iOSアプリをリリースしました。
[Purelist](https://apps.apple.com/us/app/purelist/id1549367431)という、とびきり書きやすいリスト型のライティングアプリです。
たぶん使えば言っている意味がわかってもらえるかと思います。

リリース後1週間、いくつか想定外のことがあったのでリストにしました。
これを読んで少しでもプロモーションやアプリストアのスクショの改善に役立てていただけると幸いです。

**1. リリース後にPRしない限り、ほぼ誰にも見つけてもらえない
2. PRしてもほぼ埋もれるし、インストールされない
3. レーティングは国別に表示される
4. サブタイトルは結構重要
5. PR用テキストと概要は同じ場所に表示される
6. Store用アイコンは透過していなくても透過してるよって注意される
7. App Analyticsの更新時間はバラバラ
8. オプトインユーザーが少ないのでデータを拾いにくい
9. フィードバックはApp Storeでもらいにくい**

## 1. リリース後にPRしない限り、ほぼ誰にも見つ

元記事を表示

何回もこのコンピュータを信頼しますかと表示されて実機テストができない

#バージョン
– macOS Catalina v10.15.7
– Xcode v12.3
– iOS 14.3

#現象
xcodeで実機テストをしようと思い、iphoneをmacに接続したら、
このコンピュータを信頼しますかという画面が表示されては消えを繰り返して、
接続ができない

#解決策
Window > Devices and Simulators > Simulators
ここで不要なデバイスを開き、
Show as run destinationのチェックを外す

どう関係があるのかわかりませんが、このチェックをはずしたところ問題が解決しました

元記事を表示

AVFoundation 音再生

## 音再生方法

まず AVFoundation をインポート

“`viewController.swift
import UIKit
import AVFoundation

class ViewController: UIViewController,AVAudioPlayerDelegate {

var player :AVAudioPlayer!

“`

まず、音ファイルをXcodeに追加。追加するのはここ!!
今回は 
umbrella と souziki が入っていますね。
![スクリーンショット 2021-01-23 21.07.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562721/2909f8de-4473-c600-e449-b3a16370cd6e.png)

音声を呼び出す用の関数を定義!

“`viewController.swift

public func prepareSound() {
let soundF

元記事を表示

Firebaseの CloudMessaging での通知実装と Apple Developer Certificates に苦戦したメモ

基本的にはこちらの手順に従う方針だが、既にCertificateを作成していたり、本番用と開発用で違ったり、Bundle ID が違うと動かないなどがあり苦戦したのでメモ。
https://qiita.com/ausssxi/items/89305cdb3935d6f6f2b8

全体的に、iOSにおけるプッシュ通知は基本UserNotificationsをimportして使うが、そもそものプッシュ通知を送るバックエンド側のシステムが必要で、それがニフクラモバイルやFirebaseで実装されることが多いっぽい。なおFirebaseのCloud MessagingというのはFirebaseコンソールからユーザーにメルマガみたいにプッシュ通知を送れる仕組みのことっぽい。

##主なつまずきポイント

###シミュレータでは通知こないっぽい?
まずiOSにおける通知はアプリ起動中はこない模様。`Singing & Capabilities`で`Push Notifications`と合わせて`Backgound Modes`を追加しているので、アプリが表で起動してないときに通知を送る仕様なの

元記事を表示

FIT SDKのMacStaticLibで大きなメッセージを書き込んだときにデコードに失敗する不具合を回避する

## TL;DR
`FitMesg.h` と `FitMesg.mm` を修正してビルドした `libFitSdkCppiOS.a` とヘッダーファイルを差し替える。
修正内容は記事の末尾。

## 不具合詳細
GARMIN FIT SDKはC言語/C++/Java/C#で提供されているが、同梱されているMacStaticLibを使用することでObjective-Cから使用することが出来、macOSやiOSのアプリから使用することができる。

しかし、このMacStaticLibにはバグがあり、メッセージのサイズが256Byte以上になるとヘッダーに書き込まれるデータ長とファイル末尾のCRCの値がおかしくなり、デコードできないFITファイルが生成されてしまう。

[Objective-C Wrapper generate broken header when include long message – Discussion – FIT SDK – Garmin Forums](https://forums.garmin.com/developer/fit-sdk/f/discussi

元記事を表示

iOSショートカットAppでInstagramの画像動画保存機能を作ってみた

# はじめに
Instagramの写真や動画を保存できるサイト([Instadownloder](https://instadownloader.co/ja/)など)は存在しますが、投稿リンクをコピーしてサイトに貼り付けて、実行ボタンを押して、表示された画像をダウンロードといった手順が煩わしいと感じたためショートカットAppでの作成に取り掛かりました。このショートカットでは、投稿リンクをコピーして実行ボタンを押すだけで写真や動画のダウンロードまで行ってくれることを目指しました。

# 成果物
実際に作成したショートカットは[こちら](https://www.icloud.com/shortcuts/59f48abf287044ddb6387e715c32d80d)からダウンロードできます。
ダウンロードしたショートカットを使用するためには、設定から「信頼されていないショートカットを許可」を有効にする必要があります。
設定方法は、「設定>ショートカット>信頼されていないショートカットを許可」から行うことができます。尚、なんらかのショートカットを事前に一度実行させていないと信頼されていない

元記事を表示

XcodeのComponentsのSimulatorがdownload済みなのに使えない時の対処法

Xcodeをuninstallしてinstallしなおした時に、前のXcodeの情報が残っていたのでその対処法を備忘録として残しておきます。

# 現象
– `Add additional Simulators` または `Window -> Devices and Simulators -> Simulators -> +` でsimulatorを追加しようとしたところ、 `OS Version`の選択にiOS 10.3が表示されない

![スクリーンショット 2021-01-22 13.48.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/150615/6f86d44b-e205-248b-7af4-152662eed962.png)

– `Download Simulators` または `Xcode -> Preference -> Components` で確認するとiOS 10.3 Simulatorはダウンロード済みになっている

![スクリーンショット 2021-01-22 13.

元記事を表示

【Model I/O】MDLMeshオブジェクトから頂点データを取得する方法

Model I/Oフレームワークの、MDLMeshオブジェクトから頂点の情報を取得するのが面倒だったので、メモ。

参考:
Read vertex positions with Model I/O
https://gist.github.com/algal/8e31ce035af0aafebc3736661ae9e3cd

mdlMeshにMDLMeshオブジェクトの値が入っているとして、これをXcodeのデバッガ(LLDB)上で取得したい場合。

頂点の数を取得する。

“`swift:デバッガ
po mdlMesh.vertexCount
// 出力結果:54
“`

バッファのデータのstrideを確認する。

“`swift:デバッガ
po mdlMesh.vertexDescriptor.layouts.filter {($0 as! MDLVertexBufferLayout).stride != 0}
// 出力結果:
// ▿ 1 element
// – 0 :
`

元記事を表示

【SwiftUI】SwiftUI Appで`window.rootViewController`を用いた初期画面の表示

# はじめに
アプリの初期画面を`window.rootViewController`を用いて表示することは採用したアーキテクチャにもよると思いますが、よくあることかと思います。
ただし、プロジェクト作成時に`Life Cycle`で`SwiftUI App`を選択した場合に少し実装が必要だったため記しておきます。

# 実装
`SwiftUI App`でプロジェクトを作成すると、以下のようなファイルが生成されます。
このままだと`ContentView`が初期表示画面になってしまいます。
例えば`Coordinator`や`Rooter`パターン等を利用したい場合は`AppDelegate`や`SceneDelegate`を経由したくなります。

“`swift:SampleApp.swift
import SwiftUI

@main
struct SampleApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
“`

まず

元記事を表示

開発中のiOSアプリをiOSエンジニア以外にテストしてもらうにあたって

開発中のiOSアプリをiOSエンジニア以外にテストしてもらう際に、TestFlightやDeploygate, firebase app distributionなどの配布ツールを使って確認してもらうにあたって、iOSエンジニアが確認しておくことの備忘録

## TestFlight
### 内部テスター
– 内部テスターは100人まで
– チームでAccount Holder、Admin、App Manager、Developer、Marketingのいずれかの役割を担うメンバーを最大100人まで追加
– 追加するメールアドレスはAppleIDである必要がある
– テスターに配布する前にApple審査はなし
– アップロード、Appleサーバーでのビルド時間に30分〜1時間程度の時間がかかる
– 100デバイス制限あり

### 外部テスター
– 追加するメールアドレスはAppleIDである必要はなし
– Eメールアドレスを使用するか、任意のユーザーに対してAppのテストに参加する機会を開くパブリックリンクを有効にして共有
– 1万人までテスターを登録してアプリを配布できる

元記事を表示

HitTestを実施した際に、Containerが反応しない

# 問題

テスト環境でHitTestにてContainerを検出することを確認後、本番環境に実装を行った。
が、なぜかContainerがHitTestにて検出されない問題が発生した。

# 解決方法

Containerのcolorに透明な色を適用することで、HitTestにて検出されるようになった。

# 原因

Flutter.devのContainerのページにも記載があったが、colorに何もしていない場合、ContainerはHitTestにて検出されなくなってしまうみたい。

> By default, containers return false for all hit tests. If the color property is specified, the hit testing is handled by ColoredBox, which always returns true. If the decoration or foregroundDecoration properties are specified, hit testing is handle

元記事を表示

【覚書】iOS アプリ Code keyboard のショートカット一覧

## アプリ紹介

https://apps.apple.com/gb/app/code-keyboard/id1097372399?l=ja

コーディングに特化した iOS キーボードアプリ。
このアプリ、詳細な説明書とか一切ないのだが、一応特定のキーを押しっぱなしにすると、
コーディングで使用率の高い記号や演算子などを素早く入力できるようになっている。

この記事では、それらを一個一個検証して調べてみた。

## `abc` モード

“`
q w e r t y u i o p
a s d f g h j k l
[S] z x c v b n m [

元記事を表示

英語が苦手な人のためのXcode便利機能 SpellCheck

# はじめに
こんにちは!スーパー超絶英弱エンジニアのせーたろです!
profileをplofileと書いてしまう英語力の僕が、インターン先のつよつよエンジニアから教えてもらった便利機能を紹介します。

# Spell Checkの使い方
Xcode11から導入されたSpell Checkという機能を使います。
![スクリーンショット 2021-01-22 1.00.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592713/2c22c240-1fa0-9ce2-227a-c5dadb91b391.png)

Edit < Format < Spelling and GrammarからCheck Spelling While Typingをオンにします。 これでスペルミスをしている箇所に赤い点線が表示されるようになります。 ![スクリーンショット 2021-01-22 1.03.54.png](https://qiita-image-store.s3.ap-northeast-1.amazona

元記事を表示

Swift Packageのバージョンを最新に解決できない

## 概要
iOSアプリ開発のCI/CDを行うときは、xcode buildやfastlaneでビルドやテストを行うと思います。その際にプロジェクト(ワークスペース)が参照しているSwift Packageがなかなか狙い通りに解決されなかったため、備忘録として残します。

## とりあえず結果
結論としてはxcodebuildやfastlaneのパッケージ解決の方法では難しいことがわかりました。Package.resolvedやDerivedDataを削除しても謎のファクターXを参照して、古いリビジョンを解決してしまいます。

### 最新リビジョンを取得するワークアラウンド
そのプロジェクトがSPMでない場合でも、Package.swiftを用意し、そこにSPMのパッケージを書きます。
で、アップデートして、Package.resolvedを移動させます。

“`swift
// swift-tools-version:5.3
// The swift-tools-version declares the minimum version of Swift required to b

元記事を表示

iPhoneの壁紙に飽きたので、毎日ちがう壁紙を設定してほしい

iPhoneを使い始めてしばらく経ちましたが、壁紙を見飽きてしまいました。
毎日ちがう壁紙を設定したい!しかも自動で変更してほしい!もっと言えば、探すのも面倒なので、いい感じの壁紙を見繕って来てほしい!

ということで作りました。
比較的新しめのiPhone標準アプリ、**ショートカット**で夢を叶えることができました!

##いい感じの壁紙
今回は、[Bing](https://www.bing.com)の壁紙を使うことにしました。毎日いい感じに変わり、PC/スマホともに壁紙をダウンロードすることもできます。

##作成したショートカットを共有します
作成したショートカットの共有リンクを掲載しておきます。ご自由にお使いください。
https://www.icloud.com/shortcuts/1372925c0aa14d5399ae02c907d1be26

今回はBingを使いましたが、いい感じの画像をゲットできるAPIなどがあれば、お好みで上記ショートカットをカスタマイズしても良いと思います。
なお、壁紙の変更はiOS14.3以上のみ利用可能らしいです。(未確認)

##自動的

元記事を表示

【Swift】Combine + APIKit で複数リクエストを直列で実行するサンプル (ついでに並列も)

![title.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6691/08dc09e3-ff8d-d19f-f324-61a0d28869e1.png)

Combine.frameworkを体験する取っ掛かりとして
APIKitのRequestにPublisherを生やして
複数の非同期通信を直列・並列で叩くサンプルを実装してみました。

まだまだCombineニュービーですのでオススメの方法や
間違い等有りましたらご指摘頂けると幸いです??‍♂️

## 環境
* Xcode 12.1
* APIKit 5.1.0
* SwiftUI

## サンプルコード
https://github.com/SatoshiN303/RequestsWithCombine

## プロジェクト構成
APIKitにPublisherを生やす実装方法については
Developers.IO さんの以下の記事が
非常にわかりやすかったのでほぼコピさせていただきました。
[[iOS 13] SwiftUI + Comb

元記事を表示

結局ScrollViewのConstraintってどうつければいいの?

> 1. UIScrollViewの上下左右をUIViewControllerのViewに合わせる
2. ContentViewの上下左右をContent Layout Guideに合わせる
3. ContentViewの横幅をFrame Layout Guideに合わせる(Equal Widths)
4. ContentViewにオブジェクトを追加して高さを確定させる

> 名前の通り、Content Layout GuideはUIScrollViewの中身、Frame Layout GuideはUIScrollViewのフレーム領域を示します。
> https://qiita.com/owen/items/2fab4a4482834b95e349

## つまづきやすかったこと
### ContentView は自分で UIView を追加して作る
UIViewで囲むのがセオリーとは思うものの、ちょっとAppleさん不親切‥

### Content Layout Guide の制約に注意
ContentView に Content Layout Guide の上下左右の制約をかけ

元記事を表示

OTHERカテゴリの最新記事