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

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

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

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

#結論
プロジェクト作り直しました。

“`
npx react-native init MyApp –version 0.62
“`
どうしても0.63を使いたい人は以下
https://github.com/facebook/react-native/issues/30836

PodFile

“`
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企業に就職する

元記事を表示

extensionを用いて可読性を上げる

ViewController の定義時に全ての Delegate を継承せず、
適切に extension で分けると可読性が上がります。

よく用いられるtableViewの例を記してみます。

##### FatViewControllerの例
“`swift
final class FatViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

// 省略

// セルタップ時のメソッド
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

// 何らかの処理

}

// セルの高さを決定
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) ->

元記事を表示

RxSwiftのObservableでON/OFFの状態遷移を表現

# 環境
RxSwiftとRxCocoaはCocoaPodsなどでインストールしましょう。

– XCode (12.2)
– Swift (5.3.1)
– RxSwift (6.0.0)
– RxCocoa (6.0.0)

# 実装(ON/OFF)

上層で流れてくる値に関わらずストリームに流れる値がfalse->true->falseと切り替わる関数です。
Rxオペレーターの`scan()`を使って前回の状態を参照しているところがポイントです。
`scan()`は購読するだけでは初期値を流さないので`startWith()`で初期値を流しています。

“`swift
extension Observable {
func flipflop(initialValue: Bool) -> Observable{
scan(initialValue) { current, _ in !current }
.startWith(initialValue)
}
}
“`

適当なViewControllerで動くサン

元記事を表示

【Flutter】エラー対応 assets_audio_player

#エラー内容

下記Gitでイシューに上がっていますが、根本的な解決策はまだ挙がってなさそうです。
https://github.com/florent37/Flutter-AssetsAudioPlayer/issues/399

“`
e: /Users/yo4hi6o/flutter/.pub-cache/hosted/pub.dartlang.org/assets_audio_player-2.0.13+1/android/src/main/kotlin/com/github/florent37/assets_audio_player/Player.kt: (542, 5): ‘handleMessage’ overrides nothing
e: /Users/yo4hi6o/flutter/.pub-cache/hosted/pub.dartlang.org/assets_audio_player-2.0.13+1/android/src/main/kotlin/com/github/florent37/assets_audio_player/Player.kt: (54

元記事を表示

このAppは、整合性を確認できなかったためインストールできません。

App Distributionで配布していたipaが以下のエラーを出力しインストールできなくなってしまった。

“`
このAppは、整合性を確認できなかったためインストールできません。
“`

正確には、インストールはできているのかもしれないが、アイコンをタップすると、このエラーが表示されアプリが起動できないという現象。

# 原因
distribution用証明書の期限が切れていたのが原因でした

元記事を表示

iCloud DriveをOn/Offした時の挙動に関して

##前提##
iCloud Driveを使うようにアプリを設計している。

##iCloud DriveをOffにする##
iOSの設定->アカウント->iCloud->iCloud Driveで一気に、または一覧からアプリ個別に
Offにすると、[[NSFileManager defaultManager] URLForUbiquityContainerIdentifier: <コンテナのID>];がnilを返す。Onならば適切なURLが返ってくる。
例: “file:///private/var/mobile/Library/Mobile%20Documents/iCloud~com~yourdomain~yourapp/” 0x0000000283860310)

アプリのファイルを保存する目的でiCloud Driveを使う場合、nilが返ってきたらfallbackとしてデバイス上に保存するようにしている(Documentsなど)。ややこしいのは、アプリの起動中でもこの設定は変えられてしまう可能性があることかな。適切な挙動としては、アクセスの必要があるたびにnilチェックを行っ

元記事を表示

iOSの最終ベータ版が”GM”から”RC”に変わった件

Appleは、
正式リリース直前のベータ版のことを、iOS 14.1までは**“Golden Master”=GM**と呼んでいました。
ところが、iOS 14.2から**“Release Candidate”=RC**っていうのが出て、その後に正式版が出るようになりました。

参考リンク1:
[OSの「Release Candidate(RC)」と「 Golden Master(GM)」の違いは?](https://ipadmod.net/2020/10/31/os%e3%81%ae%e3%80%8crelease-candidate%ef%bc%88rc%ef%bc%89%e3%80%8d%e3%81%a8%e3%80%8c-golden-master%ef%bc%88gm%ef%bc%89%e3%80%8d%e3%81%ae%e9%81%95%e3%81%84%e3%81%af%ef%bc%9f/)
参考リンク2:
[Apple phasing out usage of “GM,” replacing it with “Release Candidate” (RC) instea

元記事を表示

【Flutter/ iOS】CocoaPods could not find compatible versions for pod の対策

## 概要
依存関係が変わった時(pubspec.yaml変更時)にビルドすると `CocoaPods could not find compatible versions for pod`が出てビルドに失敗するときの対策です。

## 解決方法
Podfile.lockを削除して、依存ライブラリをインストールし直すと解決しました!

“`
cd ./ios && rm -rf ./Podfile.lock && pod install –repo-update
“`

元記事を表示

iOSアプリのバリデーションについて考えてみた(Swift)

![Xcode-12](https://img.shields.io/badge/Xcode-12-brightgreen) ![Swift-5.3](https://img.shields.io/badge/Swift-5.3-brightgreen) ![iOS-14](https://img.shields.io/badge/iOS-14-brightgreen)

## はじめに
iOS アプリを作る際たま〜〜〜〜〜にクライアント側でバリデーションしてよ!って言われて実装することがあります。ただ下記のようにするのは嫌なんでなにかしらクラスを分けたくて考えてみました。どなたかいい案があればご教授いただけると幸いです:pray:

“`swift:ViewController.swift
@IBAction private func register(_ sender: Any) {
let value = textField.text!
var message = “”
if value.isEmpty {
message = “空だよ

元記事を表示

【初心者向け】iOSアプリ開発 カウントアプリ

#カウントアプリを作ろう
今回は、カウントアプリを作成します!!
楽しみながら実際にアプリを作ってみましょう!

 ↓↓ 完成図 ↓↓

#開発環境
**Swift 5**
**Xcode 12.4**

#開発準備
Xcode

元記事を表示

Flutter Doctor の cocoapods でハマった

ここだけ`flutter doctor`で出てくる指示通りではうまくいかなかったので、解決した方法をメモしておく。

# 環境
“`
macOS Catalina v10.15.4
Flutter 1.26.0-17.3.pre
Dart 2.12.0
“`

# homebrewをバージョンアップする

“`
brew update
“`
コマンドを実行すると

“`
homebrew-core is a shallow clone.
homebrew-cask is a shallow clone.
“`
という警告が出たので、指示に従って処理を実施した。

“`
git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch –unshallow
git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask fetch –unshallow
“`
その後再びアップデートを実行した。

# Rubyをバージョンアップする

元記事を表示

OTHERカテゴリの最新記事