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

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

Flutterアプリのライフサイクル

# はじめに

Flutterアプリのライフサイクルについてまとめています。Flutterのライフサイクルというと、

* アプリ (`AppLifecycleState`) ← 今回の内容
* 画面 (`StatefulWidget`のサイクル)

の2種類がありますが、今回は上のアプリ自体のライフサイクルについての内容です。

## アプリのライフサイクル一覧とプラットフォームの対応関係

`AppLifecycleState`の状態遷移と状態一覧を以下に示します。

スクリーンショット 2020-02-16 9.37.25.png

基本的にプラットフォーム側の状態をFlutterアプリの状態として再定義している感じですが、iOSのライフサイクルに近いと思います。
なお、iOSのライフサイクルは詳しくな

元記事を表示

ブラウザでWebcamを扱えるテストツールを作った話。キャプチャも可。

# サマリ
ブラウザでアクセスするだけで、Webcamの動画ストリーミングにアクセスできるツールを作成しました。任意のタイミングでキャプチャし、PNG画像として保存することもできます。
screenShot.png

# 成果物
[こちら](https://tetunori.github.io/HTML5WebcamTester/)にアクセスするだけで使えます。[ソースコード](https://github.com/tetunori/HTML5WebcamTester)もOSSでどうぞ。

# 開発モチベーション
日頃開発をしていると、机の上の状況をPC上で画像として貼り付けたくなる事が多々あります。当然スマホで撮影することが多いのですが、PC側で扱うにはクラウドサービスを経由したり、Directな無線通信やケーブ

元記事を表示

iOSアプリで審査通ったバージョンを公開せずに新しいバージョンを申請する手順

iOSアプリで審査通ったバージョンを公開せずに新しいバージョンを申請したい。

たまにこういう事があり、何度かやったことがあるのですがいつもやり方を忘れて
確かに出来たはずなのにやり方がぱっと分からず右往左往して
もしかして出来なくなったの?(ありえそうなので・・・)
とかでやり方を思い出す(再発見する)まで時間がかかるのでちゃんとメモしておく。

例えば、公開バージョンが1.0で新しいバージョンとして2.0を開発中なんだけど
ちょっと審査に不安があって事前に審査を行いたいということで1.1を作って審査に出し(手動で公開)、無事審査が通って、デベロッパーによるリリース待ちステータスまで進んだ。
その後に2.0を審査に出したいというケース。

新しく2.0のバージョンを作ろうとしてもグレーアウトで選択できません。![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52301/489bae75-b6df-228f-691c-3217d1a0eed0.png)

ではどうやるのか。
バージョンの追加も削除も

元記事を表示

Fastlaneのコマンドラインでバージョン番号を更新

今、開発しているアプリでは
Embedded Framework を活用してターゲット分割しており
バージョン番号が複数のInfo.plistにまたがっており
バージョンを更新する際は、手動もしくは、CircleCIで実行されるFastlaneで
バージョンを更新しているんですが、任意のタイミングで、バージョンを更新したいケースで、コマンドを忘れてしまうのでメモ

“`
fastlane run increment_version_number version_number: “1.0.0
“`

Bundlerを使っている場合

“`
bundle exec fastlane run increment_version_number version_number: “1.0.0
“`

元記事を表示

自動生成したSandBoxテスターを自動削除する

先日の[potatotips#68](https://potatotips.connpass.com/event/160125/)で発表した「[SandBox Tester Tips](https://speakerdeck.com/funzin/sandbox-tester-tips)」の続きです。
今回の記事を見る前に、こちらの[SandBoxテスターの作成数の上限について](https://qiita.com/funzin/items/3b9ef23a2bec1a639bf0)も見ていただけるとやりたいことがよりイメージしやすいかと思います

## 忙しい人向け要約
「[SandBox Tester Tips](https://speakerdeck.com/funzin/sandbox-tester-tips)」の要約

– fastlaneのspaceshipによって、SandBoxテスターを生成
– BitriseなどのCIでアプリの配布時に、SandBoxテスターも自動生成
– 自動生成の重複を回避するため、メールアドレスは**日付**やCIのビルド番号を利用

[San

元記事を表示

なぜ秘匿データをKeychainへ保存する必要があるのか

iPhoneはパスコードを設定するとiPhone内のデータが暗号化される[^1]。
パスコードが設定されていない状態でも秘匿データをセキュアに保つためにKeychainへ保存する必要がある。

[^1]: https://support.apple.com/ja-jp/guide/iphone/iph14a867ae/ios

元記事を表示

Flutter PlatformViewを利用した簡易WebViewプラグインの作り方

# はじめに

Flutterの`PlatformView`機能を利用したView系のプラグインの作り方について解説します。
解説用の題材として、`TextView`と`WebView`を用いました。

## PlatformViewとは?

通常、FlutterはFlutterのフレームワークで用意されているウィジェットしか利用することが出来ません (ウィジェット一覧は[Widget catalog](https://flutter.dev/docs/development/ui/widgets)) が、PlatformView機能を利用するとプラットフォーム (Android/iOS) 固有のViewをFlutterのウィジェットとして利用することが出来ます。

Flutterフレームワークは、この`PlatformVie

元記事を表示

iOS開発メモ

# UITextView in UITableViewCel の高さ変更メモ

“`swift
class ViewController: UITextViewDelegate {

var currentKeyboardHeight: CGFloat = 0

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
addObservers(showSelector: #selector(showKeyboard), hideSelector: #selector(hideKeyboard))
}

@objc func showKeyboard(_ notification: Notification) {
currentKeyboardHeight = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as?

元記事を表示

Storyboardで制約設定したViewの位置をコードで取得したい

# 問題
Storyboardで制約指定したViewのframeをコードで取得したかったとき、その時点でのsizeはうまくとれているけど、originがうまくとれてなかった。
初歩的な問題かもしれないけど、はまって困った。
Viewが描画されたあとのような以下のようなときに起きてた。

“`
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
print(targetView.frame)
}

-> (0.0, 0.0, 100.0, 100.0)
“`

# 結論
`translatesAutoresizingMaskIntoConstraints` を `false` に設定すると取得できた。

“`
targetView.translatesAutoresizingMaskIntoConstraints = false
“`

元記事を表示

unity iosへのビルドエラーに関して(解決済み)

unityでビルドを試験的に行ったところエラーが出てしまい。どうにもなりませんでした。
エラー内容(一部省略)
1 Failed running/Application/Unity/省略../UnityLinker.exe
2 Exception 省略il2cpp…./UnityLinker.exe did not run properly

使用Unity 2019.3.1 MacBook Air

解決策は、
① Unity のプロジェクト(ゲーム)をUnity(アプリケーション)フォルダ(デレクトリ)
に保存。

② buildの保存先もunityのアプリケーション内に保存

私自身はプロジェクトをSDカード(外部)に保存していました。

やったこと
① 以前に作ったプロジェクトをassetからexport(この場合の保存場所はどこでもいい)
② Unityを外部ではなくMacbook自身に再インストール
③ 新しくプロジェクトを作成(保存先はそのUnityのフォルダ内にする←重要)
④ テストとしてiosをbuildしてみる(成功)
⑤ ①をassetからインポート
⑥ b

元記事を表示

[Swift] GoogleMapAPI ~現在地付近の施設情報を取得し、任意の場所でピン立て~

# はじめに

これは、前回書いた記事[[Swift] GoogleMapAPI 〜Map表示&現在値にピン立て編〜](https://qiita.com/Ritsuya/items/2a628d89d0004a2a4488)
と関連した部分があります。

なので、GoogleMapAPIの導入などは省きますので、導入部分を読みたい方は前回記事をご参考ください。

### 対象者
– GoogleMapをアプリに組み込もうとしている方
– PlacesAPIを検討している方

### バージョン
– Xcode….Version 11.1
– Swift….5.0

# 完成物
GoogleMapで現在地を表示したあと、現在地付近の情報をtableViewに表示し、cellをタップするとその地名にピンを立てる仕様になっております。

![IMB_Iuupat.GIF](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373532/5b5b5577-bbfc-5da3-3b40-8fab6ce5e2b5.gi

元記事を表示

iOS でサイズやスタイルを維持したままフォントを一括変換

# 目標

– **フォント (Font Family)** を一括で変換する。
– 指定済みの **Size, Weight, Italic** を維持する。
– **Weight** はフォントによって数が異なるため、指定済みに最も近い **Weight** を利用する。
– どの Font Family にも適用できるよう汎用性の高いコードにする。

# 完成型

解説はどうでもいいのでコードの全体像を見たいという方はどうぞ

クリックして開く

“`swift
extension UIFont {

convenience init?(familyName: String, weight: UIFont.Weight, isItalic: Bool = false, size: CGFloat) {
let font = UIFont
.fontNames(forFamilyName: familyName)
.compactMap({ U

元記事を表示

xcodebuild コマンドで CODE_SIGNING_ALLOWED=NO をつけないと署名されることがある (Xcode 10.2 以降っぽい)

`xcodebuild` コマンドで iOS のプロジェクトをビルドする際の話。

# 発生した問題

Xcode 10.1 を使っていたときは下記のようなコマンドで問題なく動いていた。

“`
xcodebuild clean build \
-workspace Foo.xcworkspace -scheme Bar -configuration Debug \
CODE_SIGN_IDENTITY=\”\” CODE_SIGNING_REQUIRED=NO
“`

が、Xcode 11.1 を使うようにしたら、次のようなエラーが発生するようになってしまった。

> error: An empty identity is not valid when signing a binary for the product type ‘App Extension’. (in target ‘Baz’ from project ‘Foo’)

どうやら署名しようとしたものの空の identity は valid ではないということでエラーになってしまう模様。

# 解決策

以下

元記事を表示

SwiftUIのおすすめ参考サイトまとめ

##無料

####Hacking with swift
https://www.hackingwithswift.com/quick-start/swiftui

####Medium(一部有料)
https://medium.com/tag/swiftui

####Liquidcoder
https://liquidcoder.com/

####Kavsoft
https://kavsoft.tech/index.html

####reddit
https://www.reddit.com/r/SwiftUI/

##有料
####DesignCode
https://designcode.io/swiftui?promo=learnswiftui

##動画
####Hacking with swift
https://www.youtube.com/channel/UCmJi5RdDLgzvkl3Ly0DRMlQ

####Kavsoft
https://www.youtube.com/channel/UCsuV4MRk_aB291SrchUVb4w/playlists

元記事を表示

iPhoneやiPadのアプリで無料で広告ブロックする方法

#参考にした記事

iPhoneのアプリで無料で「広告」を「消す」方法 ( 広告 ブロック iPhone iPad アプリ)
広告 ブロック iPhone LINE spotify スマートニュース グノシー うざい 消し方 多い 消す ios ipad みんはや ゲーム 広告消す chrome

# ブロックにはDNScloakというアプリを用います

https://github.com/s-s/dnscloak

https://github.com/DNSCrypt/dnscrypt-proxy

DNS cloakはgo製の dnscrypt2のラッパー。(どちらもOSSです)

ローカルにDNSサーバーを立てて、フィルターにリスト化された広告サーバーのURLのリクエストを返さないことで広告を遮断します。

アプリで流れる動画広告などは完全に遮断することができます。

広告のあった場所は空白になります。(空白の部分がないように整形してhtmlを返すことも技術的には可

元記事を表示

[Swift] GoogleMapAPI 〜Map表示&現在値にピン立て編〜

# はじめに

アプリにMap表示したいー!

そう考えたとき、思い浮かぶものはMapKitかGoogleMapです。

MapKitは、地図を表示することはもちろん、住所検索やピン配置などをデフォルトで使用できる素晴らしいフレームワークです。

GoogleMapはGoogle社が提供しているAPIを使用することにより表示することができ、様々な機能を実装することができます。
[Google Maps Platform](http://bit.ly/2SrFCug)

MapKitはSwiftのみですが、GoogleMapは他の言語でも使用する可能性があるので、これを機に勉強しようと思い、その備忘録及びアウトプットのためにここに記載していきます。

### 対象者

– これからアプリにMapを導入したいと思っている人
– とりあえずGoogleMapなんぞやと思っている人

### バージョン
– Xcode….Version 11.1
– Swift….5.0

# 実装

### 導入
まずはじめに、上記の公式HPからアクセスし、右上のコンソールをタップします。

元記事を表示

【iOS】アプリが閉じた状態でUniversal Linksでの起動をデバッグする

アプリが**閉じた状態**でのUniversal Links経由の起動を繰り返しデバッグしたい時のメモ

## 手順
1. `EditScheme` → `Wait for executable to be launched` をチェック
![Screen Shot 2020-02-14 at 19.51.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116582/401f34c7-f56b-f7bd-3888-6f7646757614.png)
これによって、Runした時にアプリが自動で起動しなくなります

2. アプリをRun(`Wait for executable to be launched`)
3. Terminalで以下のコマンドを実行

“`
$ xcrun simctl terminate booted && xcrun simctl openurl booted
“`
これによって常にアプリが閉じた状態で、Universa

元記事を表示

Build React Native Custom Checkbox Component for Android and iOS

In this tutorial, we are going to learn how to create a custom Checkbox component in React Native application for Android and iOS platforms. We will learn step by step how to get Multiple checkboxes values on button click using React Native APIs.

READ MORE TO CLICKHERE

Build React Native Custom Checkbox Component for Android and iOS

元記事を表示

UITableViewCellの中のUIImageVewでアニメーションすると勝手に止まる件

`UITableView` の中に `UIImageView` を入れていて、その `UIImageView` に `animationImages` を指定してアニメーションを表示している時、テーブルのセルを選択するとアニメーションが止まってしまう。

## 解決法

`setSelected`, `setHighlighted`をオーバーライドしてその中でアニメーションを再開する。

“`swift
class MyCell: UITableViewCell {

override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
restartAnimatingIfNeeded()
}

override func setHighlighted(_ highlighted: Bool, animated: Bool) {
super.setHighlight

元記事を表示

【iOS】今すぐ始める自動テスト(XCTest, XCUITest)

iOSアプリのテストを始めたい、やったほうが良いのはわかる、 **けど…**
という方のための、
公式フレームワーク**XCTest**と**XCUITest**で自動テストを始めるまでの記事です。

# セットアップ
※ 既に「アプリ名+Tests/UITests」のグループやTARGETSがある場合は不要
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/272677/d6deaad1-bf4d-b56c-91b5-d0cc4dcbf1ea.png)

プロジェクト作成時に「include Unit/UI Tests」にチェック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/272677/c289266a-3109-d3a7-99b5-882eb1b81e9d.png)

もしくはプロジェクト作成後、File→New→Target→
![image.png](https://qiita-i

元記事を表示

OTHERカテゴリの最新記事