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

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

iOSでGoogle Mobile Ads SDKを8にするとMediation Test Suiteのビルドが通らなくなるのでダメだ

タイトルの通りで、Google Mobile Ads SDKのバージョンを8.0.0にするとMediation Test Suiteのビルドができなくなる。バージョンを下げるしか回避策はない。ダメだ。

元記事を表示

更新の自動確認機能付きiOSショートカットをgithub-pagesを使って作る

# はじめに
_Qiitaへの投稿は初めてであるため、拙い記事ではありますがご了承ください。
また、投稿者は素人の学生であるため知識が浅く、この記事のコードには改善できる点や不正確な点があるかもしれません。_

iOSのショートカット機能は痒いところに手が届きません。
公にソフトを提供する場合、そのソフトに欠陥が見られたときにアップデートを提供するのは当然のことです。
しかし、iOSのショートカットは更新を加えて共有するたびにURLが変わってしまいます。ましてや、ショートカットの自動アップデートなんて機能は一切ありません。
ショートカット自体そこまで普及してもいないので情報も乏しく、自動アップデートの方法も一切インターネット上に載っていません。

ショートカットを公に提供するという方はあまり居ないとは思いますが、iOSアプリを公開するよりも遥かに楽に、コストもかからず、誰でも公開できるというのはiOSにおいてショートカットの持つ大きな利点です。

今回は、そんな一般向けに配布するショートカットを、より実用的にするプログラムを紹介します

元記事を表示

[Flutter]Instagramのstoryの移動UIのトレース

#はじめに
初投稿となります。お手柔らかにお願いします。

今回は、タイトルの通り、インスタでストーリーを移動するときの、四角い箱を回すようなUIをFlutterで作成していきたいと思います。
この記事が皆さんのお役に立てると嬉しいです。

#パッケージ
今回の自分が使用したパッケージは以下の通りです。

“`yaml:pubspec.yaml

dependencies:
flutter_hooks: ^0.15.0
hooks_riverpod: ^0.12.1
flutter:
sdk: flutter
“`

状態管理用に[riverpod](https://pub.dev/packages/riverpod)を入れています。
また、コードを簡単に書くために[flutter_hooks](https://pub.dev/packages/flutter_hooks)も入れています。

ただ、hooksを使ったことがない人でも、ドキュメントを読めばStatefulWidgetに置き換えることができると思います。

# 完成図

今回の完成図はこちらです。

元記事を表示

【バグ】iOS 14.2以降のiPadでUITextFieldをフォーカスするとLayoutConstraintsの警告が出る

# 概要

iOS14.2以降のiPadでUITextFieldをフォーカスすると、以下の警告がログ出力されます。iOS 14.1以前のiPadでは発生しないのでおそらくOSのバグでしょう。

“`
2021-02-11 16:22:34.675060+0900 UITextField Test[4986:357247] [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

元記事を表示

XCFrameworksに対応したCarthageを使ってみた

[Carthage 0.37.0](https://github.com/Carthage/Carthage/releases/tag/0.37.0)がリリースされ、XCFrameworksに対応しました?
これによりXcode12になってからCarthageで発生していた問題が解消されることになります。ワークアラウンドスクリプトが不要になり、さらにはM1 MacでCarthageが使えるようになります。
なぜCarthageがXCFrameworksを必要としていたかの背景や、XCFrameworksを生成する手順について解説したいと思います。

CarthageでXCFrameworksを生成する手順だけ知りたい方は、 [CarthageでXCFrameworksをビルドする](#carthageでxcframeworksをビルドする) へどうぞ。

## XCFrameworksって何?

まずXCFrameworksについて説明します。
XCFrameworks自体はXcode11から使用可能になっている技術です。
実際にCarthage0.37.0でビルドしたXCFramew

元記事を表示

[Swift] 重ね合わせの色を生成する(アルファブレンドする)

Swiftで、**アルファ付きの色同士を重ねたときの色を取得する(アルファブレンドする)**処理の実装方法。

## 実装

“`swift:UIColor+overlayColor.swift
extension UIColor {
/// 色を重ね合わせたときの色を生成する
/// 参考 https://ja.wikipedia.org/wiki/アルファブレンド
func overlayColor(_ otherColor: UIColor) -> UIColor {
/// 背景
var (dstR, dstG, dstB, dstA) = (CGFloat(0), CGFloat(0), CGFloat(0), CGFloat(0))
///

元記事を表示

【Flutter】iOS/Android/WebでFirebase Firestoreを使えるようにする。

# はじめに
昨年後半よりFlutter入門して社内用アプリを作っています。
今回はFirebaseのFirestoreを使えるようにします。

# 更新履歴
2021.2.11 初回投稿

# 環境
– macOS Big Sur(11.2)
– Flutter (Channel beta, 1.26.0-17.2.pre, on macOS 11.2 20D64 darwin-x64,
locale ja-JP)
– Android toolchain – develop for Android devices (Android SDK version 30.0.3)
– Xcode – develop for iOS and macOS
– Chrome – develop for the web
– Android Studio (version 4.1)
– VS Code (version 1.53.1)

# 参考にしたサイト

– [Cloud Firestore を使ってみる | Firebase](https://firebase.googl

元記事を表示

【Swift】Firestore × Codable 〜取得データを簡単にデコード〜

最近、iOSアプリ開発で`Cloud Firestore`を使っているのですが、何も気にせず使っていたら1つ気になることが、、、
**Firestoreから取得したデータのデコードがめんどくさい**
WebAPIからJSONで取ってきたデータは、Codableで簡単にデコードできるので、Firestoreから取ってきたデータも簡単にデコードしたい!と思い調べてみたので、記事にしました。
Codableについては、こちらの記事が大変参考になるかと思います。
https://qiita.com/UJIPOID/items/2c436a80f1167f7bcac0

## リファクタリング前のコード

`Firestore` × `Codable`を導入する前のコードをこちらに貼っておきます。

“`swift
import FirebaseFirestore

// MARK: – Menu
struct Menu: Codable {
let id: String
let category: String
let imageName: String
le

元記事を表示

iOSのウィジェットを対応する上で知っておきたかった点

業務で自分がウィジェット対応した際に必要だった知見が何個かあったのでまとめておく:iphone:
これからウィジェット対応する人の手助けになれば:muscle:

## サイズ指定
[supportedfamilies](https://developer.apple.com/documentation/widgetkit/staticconfiguration/supportedfamilies(_:))で指定

“`swift
struct SampleWidget: Widget {
var body: some WidgetConfiguration {
StaticConfiguration(kind: “sample”, provider: SampleWidget.Provider()) { entry in
SampleWidgetEntryView(entry: entry)
}
.supportedFamilies([.systemSmall, .systemMedium])

元記事を表示

SwiftUIでもprintデバッグしたい!!

**バッドノウハウです**。

通常SwiftUIでは`body`の中に`print`を書くことができません。

“`Swift
var body: some View {
let width: CGFloat = 100 + 100
print(width) //エラー
Rectangle()
.frame(width: width)
}
“`
この原因は`print(width)`が実は`Void`の値`()`を返していることです。そのため、`ViewBuilder`の側が`Void`の値を`View`として解釈しようとして、エラーになります。

パッと思いつく解決策としては下のように、`body`の外で計算型プロパティを作って内部で`print`を呼ぶ方法でしょうか。もちろんクロージャを即時実行する形でもいいと思います。

“`Swift
var width: CGFloat {
let _width: CGFloat = 100 + 100
print(_width)
retur

元記事を表示

npx react-native run-ios できない for 0.63~

#経緯
react-nativeを久々に触ったらなんかios動かなくなった。
いろいろアップデートした。二日かかった。いろいろ試した。
結果これに落ち着いたので共有します。

#対応案①
プロジェクト作り直し

“`
npx react-native init MyApp –version 0.62
“`

#対応案② こちらがおすすめ
以下に書いてありました。
https://github.com/facebook/react-native/issues/30836

PodFileを書き換える方法です。

“`
#use_flipper!
use_flipper!({ ‘Flipper-Folly’ => ‘2.3.0’ })
“`

podfileを書き換える方法らしい。
最近導入されたflipperさんがやらかしているとかなんとか

くそはまって公式のドキュメント通りできなくて、、、
よかった。また明日からがんばれます・・・

元記事を表示

[iOS] ipaファイル内のFrameworkを閲覧する

# はじめに
iOS14対応のIDFAに関して、`AppTrackingTransparency.framework`を内包した場合、トラッキングの許可を求めるダイアログは必ず出さなければならないようです。よって、このFrameworkを取り除くことにしましたが、Xocdeの`Build Phase`->`Link Binary With Libraries`にも`AppTrackingTransparency.framework`はありませんでした。
では、ipa内包の中身もみてみようということで見方は下記にまとめました。

## otoolを使用
`otool`コマンドは、実行ファイルやライブラリのオブジェクトファイルを分析し、結果を表示するコマンドです。

“`
otool option FileName
“`
|option |detail |
|——–|——–|
|-L |指定したファイルが使用する共有ライブラリを表示する |
|-M |ダイナミックリンクライブラリのモジュールを表示する |
|-f |ユニバーサル

元記事を表示

2021/1 Google Play | AppStore 対応期日カレンダー

![eyecatch_2101StoreCalendar-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/218415/2380f173-a80f-ac3c-e52c-fef2a22c9ffa.png)

※ 本稿は [Tech Inside Drecom](https://tech.drecom.co.jp/?_src=qiita) に掲載された記事、「[2021/1 Google Play | AppStore 対応期日カレンダー](https://tech.drecom.co.jp/googleplay-appstore-calendar-202101/?_src=qiita)」の Qiita 出張版です。

こんにちは、SRE部クライアントグループの Smith です。
SRE というとサーバ・インフラのイメージがありますが、なぜクライアント?っていう部分は別の機会にお話したいと思います。

本稿では SRE部として収集し、社内共有している`対応期日のある Google Play

元記事を表示

protocolを使ったdelegateについて

protocolとは、「手続き・手順」といった意味だが、
“こういった実装をしてくださいね”といった「約束事・決まり事」と解釈した方が、
iOS開発においては理解しやすい。

“`swift
protocol FooProtocol {

var id: Int { get }

func test1()

func test2()

func test3()

}

protocol FooProtocol2 {

var name: String { get }

func test4()

}
“`
#### 特徴
– 中身のないクラスのようなもの
– クラスなどに準拠されることが前提で作られる
– クラスの継承より柔軟である

#### 使用時
“`swift
class BarClass: FooProtocol {

var id: Int = 0

func test1() {
print(“BarClassのtest1”)
}

fun

元記事を表示

PDFのアルファチャンネルをグレースケールで見る方法

もらったアイコンの色が、なーんか薄いんだけど、みたいな時に、比較的簡単にアイコンのalphaチャンネルの値を確認できます。

# PDFのアルファチャンネルを確認する方法

imagemagickを入れておく。

“`bash
brew install imagemagick
“`

PDFのアルファチャンネルを、グレースケールPNGに変換して、プレビュー。

“`bash
convert -colorspace RGB -alpha extract icon.pdf icon_alpha.png
open icon_alpha.png
“`

開いてみて、黒い部分はAlpha 0.0、白い部分(0xFFFFFF)はAlpha 1.0です。

元記事を表示

[Swift] CoreLocationを使って現在地の経度と緯度を取得するサンプル

# 概要
`CoreLocation` を使って現在地の経度と緯度を取得するサンプルです。

# 環境
Xcode 12
Swift 5

# サンプルコード

“`swift:ViewController.swift

import UIKit
import CoreLocation

class ViewController: UIViewController {

let locationManager = CLLocationManager()

override func viewDidLoad() {
super.viewDidLoad()

// locationManagerのデリゲートを受け取る
locationManager.delegate = self
// アプリの使用中に位置情報サービスを使用する許可をリクエストする
locationManager.requestWhenInUseAuthorization()
// ユー

元記事を表示

ARKit、SceneKitのtransform(4×4行列)の使い方を簡単に確認できるPlayground Code

ARKit、SceneKitでは、transformプロパティを使って、3D変換(回転、拡大縮小、投影、移動)をすることがあります。このプロパティの設定を確認できるPlayground Codeを作りました。

<仕上がり>
XcodeのPlaygroud上でSceneKitの描画をしています。

### transformプロパティとは

4×4行列で、SCNMatrix4型になっています。

“`swift
node.transform = SCNMatrix4(
m11: 0, m12: 0, m13: 0, m14: 0,
m21: 0, m22: 1, m23: 0, m24: 0,
m31: 0, m32: 0, m33: 1, m34: 0,
m41

元記事を表示

No Code開発ツールが使っているクロスプラットフォームフレームワーク

No Code開発ツールにはiOS/Androidアプリを出力できるものがある。
なんらかのクロスプラットフォーム技術が使われていると思われ、興味を持ったのでざっくり調べてみた。

## 調査結果
8個のサービスについて調査したところ、

– React Nativeが、2サービス(Adalo/Thunkable)で使われている
– Flutter、Capacitor、Cordovaを使っているサービスは探した範囲では見当たらなかった。

## 調査結果詳細
ざっくり調べたので、すぐに分からなかったところは?を入れてある。

|サービス名|Webアプリ|iOSアプリ|Androidアプリ|iOS/Androidアプリフレームワーク|
|:–|:–|:–|:–|:–|:–|
|[Glide](https://www.glideapps.com/)|o| x |x| -|
|[Adalo](https://www.adalo.com/)| o |o| o |React Native (根拠 https://developers.adalo.com/docs/workflow/c

元記事を表示

JUCE: バックグラウンドでの再生On/Offのコントロール

##課題##
JUCE/ProjucerのAudio Pluginテンプレートで作成したiOSアプリは、CapabilitiesでAudioのバックグランド再生をOnにするとその通りバックグラウンドでも再生できるが、常に再生になっている。これはユーザーにOn/Offを委ねたいところだが、テンプレートにはその機能は備わっていない。

##前提##
JUCE/ProjucerでAudioプラグイン/アプリを作っている。

##解決方法##
https://forum.juce.com/t/ios-background-processing/38308 に答えがあるのですが、JUCEApplicationBase::suspended()がバックグラウンドに回った時に呼ばれ、JUCEApplicationBase::resumed()がフォラグラウンドになった時に呼ばれるので、これらをオーバーライドすればできます。

Projucerの設定でPreprocessor DefinitionsにJUCE_USE_CUSTOM_PLUGIN_STANDALONE_APP=1を書いておいて、juce

元記事を表示

卒論の代わりにflutter✖️firebaseでスマホアプリを作ってみたので振り返る。

今回は自分がスマホアプリを作った話を記事にしたいと思います。

# 作ろうと思った背景

自分は文系大学生なのですが、ゼミに入っておらずその関係で卒論を書かなくても卒業ができます。~~**(イージー大学生)**~~
2021年3月に卒業予定で、夏あたりから周りの友達が「卒論やばい〜?」、「卒論どうしよう〜?」と騒ぎ始めました。「俺は楽だぜっ!!」って思いつつも、自分の大学4年間の成果ってなんだろうってモヤモヤしてました。

学問自体は好きで面白かったのですが、通学に1時間半かかるのと授業がつまらなかったので行く気が起きず、効率よく単位をとることだけを考えて授業を受けていました。その代わりに1年生の終わりから興味のあったことを色々勉強して、効率(お金と時間)という観点からゼミには入らなかった次第です。(入ったんですけど、お金がかなりかかるゼミでやめました。そんな余裕のある家庭でもないので。)

色々勉強した中で一番ハマったのがプログラミングで途中だるくなったりもしましたが、独学期間2年、インターンも半年経験させて頂きました。また就活では、そんな経験も評価されて第一志望のIT企業に就職する

元記事を表示

OTHERカテゴリの最新記事