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

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

iOSアプリのローカライズとローカリゼーションのデバッグ – 開発言語の変更、ストーリーボードと文字列のローカライズ、ローカライズされていない文字列の特定とデバッグ

## ローカリゼーションとは?

自分が作ったアプリが人気になり、英語など他の言語にそのアプリを翻訳してもっと多くの人が使えるようにしたいと思うときが来るかもしれません。iOSのシステムは、ユーザー設定に基づきコンテンツを適切な言語で表示するなど、大方のローカリゼーションを行ってくれます。

## アプリをローカライズする方法

### `Development language` の変更

開発言語とは、アプリの開発時に使用する言語のことを指します。まず、設定の内容を確認する必要があります:

プロジェクトファイルをクリックし、(ターゲットではなく)プロジェクトファイルを選択します。ローカリゼーションのセクションで、`Development Language` が日本語なのか英語なのかを確認します。日本語の場合、設定は正しいので、何もする必要はありません。英語の場合、引き続き開発言語の変更のガイドに従ってください。

スクリーンショット 2020-05-24 16.05.37.pngIonic + Firebase Firestoreの中身を表示するアプリ

#はじめに
Ionicを使って[Firestore](https://firebase.google.com/docs/firestore?hl=ja)に登録したデータを表示するアプリを作成します。
表示するのは趣味で運営しているスノーボードまとめサイトの記事です。
[スノーボードまとめサイトTWEAK](https://sefy.work/)

以下のようにFirestoreに登録した記事の情報を一覧表示して、クリックすると記事に遷移するアプリを作成します。
![firebaseList.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410068/a99c59b6-71ec-e92a-52f6-ad66f7581761.gif)

#プロジェクトを作成する
以下のコマンドでプロジェクトを作成します。

“`
ionic start firestoreList blank –type=angular
“`

#必要なパッケージのインストールと環境設定
Ionicのアプリ内でwebページを開くため

元記事を表示

FlutterでWebRTCをやってみる with AgoraSDK

# はじめに
`WebRTC` を使ったアプリを開発する機会があり、何かお手軽な `package` ないかなーと探していたところ `Flutter` で `WebRTC` を手軽に利用できる `plugin` を見つけたので試しにアプリを作成してみました。

# WebRTC とは
`WebRTC` (Web Real-Time Communication) とは、ビデオや音声、データをブラウザ間でやり取り可能にするための規格で、`Google` によってオープンソース化されました。 ユーザーはその `API` を経由することでリアルタイム通信を実現できます。

[参考: WebRTCの基本とP2P通信が成立するまでを学ぶ](https://qiita.com/daitasu/items/ae21b16361eb9f65ed43)

最近ではコロナの影響もあり、ウェブ会議システムやチャットツールなどの利用者が急増しています。

– Zoom
– Hang out
– Discord
– Microsoft Teams

スクリーンショッ</p></blockquote>
</blockquote>
<aside class='widget widget-post'>
<div class='tag-cloud-link'>Android</div>
<div class='tag-cloud-link'>iOS</div>
<div class='tag-cloud-link'>Dart</div>
<div class='tag-cloud-link'>WebRTC</div>
<div class='tag-cloud-link'>Flutter</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/yukitaka13-1110/items/e7350a5bc50f2056253f'>元記事を表示</a></div>
<h3 id=xcodeでiosのアイコンを設定する, Images.xcassets/AppIcon.appiconset

xcodeでのアイコンの設定が分かりづらかったので方法を書きます。

サイズのあった`.png`をprojectの`Images.xcassets/AppIcon.appiconset/`に置きます。そして、`Contents.json`を書きます。

`Images.xcassets/AppIcon.appiconset/`に`icon_1024x1024.png`を用意して、以下のスクリプトを実行すると、imagamagickでアイコンを作成します。

“`sh:icon.zsh
#!/bin/zsh

# Images.xcassets/AppIcon.appiconset/
# use : icon_1024x1024.png

mogrify -resize 20×20! icon_1024x1024.png icon-20.png
mogrify -resize 40×40! icon_1024x1024.png icon-20@2x.png
mogrify -resize 60×60! icon_1024x1024.png icon-20@3x.png
mogrify

元記事を表示

【iOS】XCUIElementTypeQueryProviderの定義済みクエリとUI要素の対応

XCUITestでUITestを作成する場合、UI要素の検索でXCUIElementTypeQueryProviderの定義済みクエリを
使うこともあると思います。
定義済みクエリを使用する時、クエリと実際のUI要素との対応が一部曖昧な部分があったので、
よく使いそうなUI要素との対応を備忘録的に記録しておこうと思います。

## UILabel
“`
func test_UILabelを取得() {
let label = app.staticTexts[“UILabel”] // accessibility identifierを指定
XCTAssertTrue(label.exists) // 指定したaccessibility identifierのUI要素が存在するか確認
}
“`
## UIImageView
“`
func test_UIImageViewを取得() {
let imageView = app.images[“UIImageView”]
XCTAssertTrue

元記事を表示

R.swiftでビルドエラー(Pods/R.swift/rswift: No such file or directory)が発生

## 事象
これです。よく見るやつですね。

“`
Pods/R.swift/rswift: No such file or directory
Command PhaseScriptExecution failed with a nonzero exit code
“`

Google先生に聞けばCleanすれば直るとか諸々削除してpod installすれば直るとかBuildConfigの設定が間違っているとか、色々な解消法が出てくるかと思います。

今回、数分前までBuildできていたものが、いきなりBuildできなくなり
一般的な解消方法を全部やってもダメで、数時間潰しました。

■一般的な方法 (引用元 https://qiita.com/masa-321/items/19f66557dcff65553f18)

“`
・Clean(Command + Shift + K)
・DerivedDataファイル以下全ての中間ファイル(キャッシュ?)を削除
参考:[Xcode][小ネタ] DerivedDataの削除についての備忘録
・Podfileを編集して、Podの再イン

元記事を表示

iOSのBageを標準とは違う位置に無理やりつける方法

ごくまれに、TabBarのバッチの位置をカスタムしたいとお願いされることがあります。
無理やりバッチをつけるのはちょっとめんどくさいですが、上手くできたので、メモっておきます。

“`swift

class CustomTabViewController: UITabBarController {

private var badges: [UIView] = []

override func viewDidLoad() {
super.viewDidLoad()

addBage(position: 3, text: “11”, frame: CGRect(x: 30, y: 5, width: 18, height: 18))
}

extension MainTabViewController {

// バッチをつける
private func addBage(position: Int, text:String, frame:CGRect) {
guard tabB

元記事を表示

Realmを利用したiOSアプリの実装(データの追加・編集・更新・削除)

## この記事の内容
モバイル向けデータベース管理システム **Realm** を利用した、iOSアプリの開発
![スクリーンショット 2020-05-24 13.05.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199441/605dbc4b-4988-8be4-fa58-a6d4e0b9ddc1.png)

## 参考にした記事
[Realmを使ってTODOアプリを作ってみよう!/ Swift(Realmの使い方、初級編)](https://qiita.com/pe-ta/items/616e0dbd364179ca284b)

## 開発したアプリ
前掲の記事を参考にして、ToDo を追加しテーブルビューで表示することに加えて下記機能を実装した。
GitHub にもコードを UP しています。
[GitHub – tanakadaichi1989](https://github.com/tanakadaichi1989/TestApp)

・**Remove All ボタン** をクリッ

元記事を表示

【Swift】位置情報を取得する

# 概要

swiftで位置情報を取得する方法について、まとめました。

startUpdatingLocation() で位置情報の取得を開始し、取得した場合 func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) が呼び出され位置情報を確認することだできます。

“`
class ViewController: UIViewController, CLLocationManagerDelegate {

var locationManager : CLLocationManager?

override func viewDidLoad() {
super.viewDidLoad()

locationManager = CLLocationManager()
locationManager!.delegate = self

元記事を表示

【SwiftUI】ビューをジェスチャーで回転させ、90°ずつスナップを効かせる方法

#【SwiftUI】ビューをジェスチャーで回転させ、90°ずつスナップを効かせる方法
こんにちは、たいちです([@taichi_swift_](http://twitter.com/taichi_swift_))

>たかし「お絵かきアプリとかでよくある、ビューを回転させて90°づつピタって止めるやつ、どうやって実装するんだろ…」

こちらのお悩みを解決します。

##ビューを回転させる方法
まずは、基本のビューを回転させる方法です。
SwiftUIでは、
`.rotationEffect(_ angle: Angle, anchor: UnitPoint = .center)`
というmodifierを使用します。

実際に使うときには、
`.rotationEffect(Angle(degrees: 90))`
みたいに使うわけですね。

IMG_1985 2.jpg【SwiftUI】基本的なモディファイアの種類と使い方②

テキストの装飾に関するモディファイア

#lineLimitモディファイア
文字列の表示行数の最大値を設定
例:文字列”hogehoge”を20回繰り返して3行に収める

“`swift
Text(String(repeating:”hogehoge”,
count:20))
.lineLimit(3)
“`

#truncationModeモディファイア
文字列を省略する場所を指定
例:文字列の中心が省略

“`swift
Text(String(repeating:”hogehoge”,
count:20))
.lineLimit(1)
.truncationMode(.middle)
“`

#lineSpacingモディファイア
行間の幅を指定 
cssのline-heightと同じ

“`swift
Text(“hogehoge”)
.lineSpacing(50)
“`

#fontモディファイア
フォントの種類を指定
種類:
largeTitle:大きなタイトル
title:タ

元記事を表示

XCODEからiPhoneにアプリが送れなくなった

XcodeからiPhoneにアプリが送れなくなった。全然コードの問題じゃなさそうで、
「iPhone is not available. please reconnect the device.」
っとだけでてきて、iPhoneは認識しているのにアプリが転送されない。
散々調べた結果、これだった。。。。

まじかよー
https://stackoverflow.com/questions/61863826/iphone-is-not-available-please-reconnect-the-device

Xcodeのアプデートで完了。

元記事を表示

[Flutter] Apple Watchの呼吸アプリのアニメーションを作ります。

こんにちは~Dreamwalkerです。
もう夏ですね。暑いです

# 始める前に

呼吸アプリを利用している方いらっしゃいますか?
ストレス溜まっている時、とてもおすすめです。

こんな形のアプリなんですが、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137182/49d898c2-8974-ecff-64c4-da1cb0d00f2a.png)
Use the Breathe app https://support.apple.com/en-us/HT206999 

この呼吸アプリのアニメーションをFlutterでやってみまいと思います。

# コード

## CustomPaint Widgetを使います。

CustomPaintの中にはPainterというのが必要です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137182/d978b2cf-1e5c-ee7a-3b

元記事を表示

【Swift】Protocolとはなにか、どんな時に便利か

# Protocolとは
Protocolとはある機能を実現するclassやstructが必ず実装するべきメソッドやプロパティの名前や型を定義するものです。
他の言語いう抽象クラスやInterfaceにあたります。

“`swift
protocol CanFly {
func fly() // 実際の処理は書かない
}
“`
protocolを定義するときは、必要なメソッドやプロパティの名前や型を定義するのみで実際の処理は書きません。

# どんなときに便利か
特定のclassやstructが持っているべき要件(このメソッドやプロパティを持っているべき)を適用したい場合に便利です。
例えばBirdクラスを作ります。鳥の特徴は空を飛べて、メスは卵を産みますね。

“`swift
class Bird {
var isFemale = true
func layEgg() {
if isFemale {
print(“トリは卵を産みました”)
}
}
func fly() {
print(“トリは翼で羽ばたいて空を飛びました”)
}
}
“`

元記事を表示

【Swift】QRコードを読み取って文字列を取得する

簡単に実装したサンプルです。参考になると幸いです。
[asa08/QRreader](https://github.com/asa08/QRreader)

## カメラを設定する
`import AVFoundation`して、`AVCaptureSession`をインスタンスを生成します。

“`swift
private let session = AVCaptureSession()
“`
次に、カメラの設定を行います。

“`swift
// カメラの設定
// 今回は背面カメラなのでposition: .back
let discoverySession = AVCaptureDevice.DiscoverySession(deviceTypes: [.builtInWideAngleCamera], mediaType: .video, position: .back)

let devices = discoverySession.devices
if let backCamera = devices.first {
do {
// カメラでQR

元記事を表示

DribbbleでFlutterのUI実装力を高める

みなさん、こんにちは
とあるサラダ?の会社で開発やってます umatoma です。

最近はFlutterのUI実装力を高めようと、
Dribbbleで公開されているデザインをFlutterで再現してみているので、紹介したいと思います。

# Dribbble

https://dribbble.com/
> Dribbble is the world’s leading community for creatives to share, grow, and get hired.

Dribbbleには?のように、様々なデザインが投稿されていて、
アプリUIに関するデザインも沢山?あります。

また、動画で投稿されているものもあったりして、
アニメーションを含んだデザインが見れる点はとても良いです?

で、このDribbleで公開されているデザインをFlutterで再現して、
FlutterのUI実装力を高めようと試みています???

![スクリーンショット 2020-05-22 19.49.39.png](https://qiita-image-store.s3.ap-northe

元記事を表示

Apple Developer Programの契約からアプリ公開まで4ヶ月かかった話

# 概要
個人開発でiOSアプリを製作したかったので、Apple Developer Programを契約したが、公開まで予想以上に時間がかかったので経緯を記しておく。

**正直、かなり舐めていた。**
契約したらその日にアプリをアップロードして審査、1週間後にはリリースぐらいに考えていた。
**実際には契約してからアプリ公開まで4ヶ月を要した。**

# 経緯
– 01/26 Apple Developer Programを契約、$99(時価で税込¥12,980)支払い発生

– 01/27 Apple Developer及びApp Store Connectにアクセスできるようになる

– 01/31 20:30 App Store Connectから初めてのアプリ提出、ステータスが「Waiting For Review」になる

– 01/31 21:30 ステータスが「In Review」になる

– 01/31 21:40 リジェクト。メッセージは以下の通り

>Hello,
We are unable to continue this app’s review b

元記事を表示

Sign in With AppleでSandboxアカウントを使う

# はじめに

2020/5/22 現在の情報です
Sign in With Apple(以後、SIWA)でSandboxアカウントを使う為のメモです

SIWA自体やInAppPurchaseについての対応は割愛します。

## 流れ

1. よし、SIWAの実装確認できた
2. 課金周りテストするか、Sandboxアカウントでログインして
3. SandboxアカウントでSIWAログインできるのかな?まぁ、やってみるか
4. お、できた。メールにPIN送ったから入力しろって。
5. よし、入力完了。次は?。2FA認証が必要です。設定を開いて〜
6. 「お客様のApple IDでは、現在2ファクタ認証をご利用できません」 :thinking:

で困っていたら、[Apple Developer Forums][LINK-1]にあったので共有と解説です

## 準備作業

### ブラウザで作業

1. [icloud.com](https://www.icloud.com/)にアクセスして、sandboxアカウントでログイン。

2. メールアドレスを確認する

元記事を表示

ポストコロナ時代の歩き方。~密違反監視カメラ作った~

![output2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/13338/19008082-c62e-6c29-bef3-2b354ac66eb6.gif)
やぁ、やぁ、自粛解禁ムードになってきてみなさん油断していないですかね?
そんな悪い子たちのために密違反監視カメラ作りやした。
iOSのアプリで人の密を判定するアプリを作って、そのライブ映像を見れるサイトを作りました。

コンセプトは車のスピード違反取締りのオービスみたいな感じで、
人が密違反をしていたら、写真を撮ってしまうぞ!
という怖い監視カメラです。

ライブ映像はこちらから見れるますたぶん。
https://orbisforwalkers.tokyo
(5/22の午後14:00~18:00くらいの間だけ試しにライブ配信やります。それ以外は未定です。)
見れてなかったらごめんなさい、、

## 背景
コロナ便乗 創作欲求満たすぜ大喜利!!と言われたら反論はできない。
コロナ禍の中で、一線の研究者達が世界のために日々闘う姿をみて感動し、凡人

元記事を表示

【swift】singleton(シングルトン)とその代替案について

# はじめに
今回は、シングルトンについて書いていこうと思います!
シングルトンとはなんぞやと言うところから、シングルトンを使う場面やメリットについて公式ドキュメントを元に書いていきます!

公式doc:[Managing a Shared Resource Using a Singleton](https://developer.apple.com/documentation/swift/cocoa_design_patterns/managing_a_shared_resource_using_a_singleton)

# 共有リソースの管理者:シングルトン

公式ドキュメントのタイトルにある通り、シングルトンは共有リソースにアクセスします。
ざっくり言えば、**インスタンス内の値を変更後、別のインスタンスを生成しても前者のインスタンスの更新内容が反映されるどういった処理が可能になります。**

つまり、**インスタンスが1個しか生成されないことを保証します。**

イメージとしては、こちらの記事がとても参考になるので一読をお勧めします!
[シングルトンについて swift](h

元記事を表示

OTHERカテゴリの最新記事