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

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

【Xcode】Could not attach pid to XXX というエラーが出る

### :boom: クリーンビルドする
Xcodeを開き左上のメニューから

***・「Product」 → 「Clean Build Folder」***

### :boom: シミュレーターの設定をリセットする
iPhoneシミュレーターを開き左上のメニューから

***・「Hardware」 → 「Erase All Contents And Settings」***

### :boom: 念のためXcode再起動してみる
これらを試してみると私の場合は綺麗に直りました。

元記事を表示

iOSアプリのビルド番号にビルド日時を設定する

# 背景
– これを実施するまでは1ずつインクリメントしていたため、ビルド番号は意味のない数字だった
– 数字で何か意味のあるものでパッと浮かんだのが日時であった
– ビルド番号が日付だとTestFlightにいつアップロードしたものなのか、TestFlightアプリ上のファーストビューで見れる

![300x0w.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122255/55e03f54-0540-1b75-e9a5-510b225ede92.png)

# 実装
1.[Target]->[Edit Scheme…]->[Build]を展開->[Pre-actions]に下記を記述

“`shell
#!/bin/sh

date “+%Y.%m%d.%H%M” >${PROJECT_DIR}/build_number.txt
“`
2.プロジェクトファイルの[TARGETS]からターゲットを選択
3.[Build Phases]タブを選択
4.[+]をクリックし、[New Run Sc

元記事を表示

iOSでCustom URL Scheme活用

iOSでは「cm-app://」という文字列で、またこの文字列のあとにvalueを設定することによって、特定のAppを起動でき、また、特定のvalueによりAppを起動できる。

最近、地震が多いので、頻繁にアクセスするYouTubeの「強振モニタ放送24LIVE」様の「【地震・災害】強震モニタ マルチウィンドウ ライブ(配信地点:長崎 – 24時間放送)*」をiOSのスクリーン上にWeb Appのように設置することを実施した。
* https://www.youtube.com/watch?v=cwPFbQuyvRo

Apple Configurator 2を起動し、

Webクリップ
→ラベル「強振モニタ」(→表示名)
→URL「youtube://cwPFbQuyvRo」

と設定するだけ。これをAirDrop等でiDeviceに送信し、プロファイルをインストールすることで完了。

元記事を表示

【Pythonista3を使ったみた】自作モジュールのインポート

#モジュールって?
モジュールとは、Pythonの定義や文が入ったファイルのことです。
(ファイル名の接尾語に`.py`がついたものです)
以下のファイルもモジュールとして扱えます。

“`python:HelloWorld.py
print( “HelloWorld” )
“`
#インポートって?
例として標準ライブラリの`os`モジュールをインポートする。

“`python:import_test.py
import os
print( type( os ) )
#
print( os.getcwd() )
# /private/var/mobile/Library/Mobile Documents/iCloud~com~omz-software~Pythonista3/Documents/Test

“`
以上のように`import <モジュール名>`とするとインポートできます。
モジュールは`module型`のオブジェクトとしてインポートされます。

#自作モジュールのインポート
**ディレクトリ**
>- iCould

元記事を表示

【Pythonista3を使ったみた】入門

#Pythonista3ってなに?
 **iOS, iPadOS上で動作する統合開発環境(IDE)**です。
 アプリ上でPython開発が出来ちゃう画期的なアプリなんです!

#モジュール作成
 まずは、ファイルを作成します。
 ScriptLibrary > iCloud 内に “Test”フォルダを作成し
 その中に”HelloWorld.py”を作成します。
 
BB37F5A4-4493-4638-A998-37776BE4CF68_1_201_a.jpeg
D6CA011A-F146-47CB-B577-DEB39BC31F18_1_105_c.jpegArcGIS で iOS SDK を使用してみた!

新しくはてなブログを開設しました。今後はこちらを中心に記事を書いていきます。
https://freedom-tech.hatenablog.com/

今回は、ArcGIS の iOS 版の SDK を使用して、住所検索や品川区の観光情報を地図に表示してみました。

最終版のイメージは以下のとおりになりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102251/604b951b-789d-922a-526e-7a2a3fddd788.png)

詳細は、こちらのはてなブログに詳しく書いてますので参照して下さい。
[ArcGIS で iOS SDK を使用してみた!](https://freedom-tech.hatenablog.com/entry/2020/05/03/015550)

元記事を表示

Errorをいい感じにUIAlertControllerで表示する

iOSでエラーが起きた場合、UIAlertControllerに表示することは珍しくないですが、その際に発生するErrorを元にしていい感じにUIAlertControllerに表示します。

# 「いい感じ」の定義

https://developer.apple.com/documentation/appkit/nsalert

「いい感じ」の定義としては、macOSで使われているAppKitの`NSAlert`を参考にします。
NSAlertというのはこんな感じのやつです。
messageText.png

NSAlertの中には`messageText`,`informativeText`が表示され、ボタンが存在します。
大体UIAlertControllerの`title`,`message`と同じ形に見え

元記事を表示

「XDプラグインでDart言語自動生成してみた」 ~私文男子の格闘第3話~

#はじめに
(2020/5/6投稿)
オンライン授業にも慣れ、もうずっとオンラインでいいよとすら思っている私文男子です。

本日はいつも私が使っている**Adobe XDから、自動的にコードの生成をする**ということをやっていきたいと思います。

私がモバイルアプリエンジニアを始めようなった時にFlutterを選んだ理由でもあるので、とてもワクワクしながら作業していました。今までプログラム系統を触ったことがなくてもめちゃくちゃ簡単にできてかつ**衝撃が大きい**作業だったので是非ご覧ください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/629658/c6246f15-19d4-2d68-730d-52966f58b354.png)

#環境紹介
まずは環境紹介からいきましょう。
###私のPC環境
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/629658/8dc99d26-a8f3

元記事を表示

【Swift】コードでViewControllerを生成して画面遷移と値渡しをする方法

# はじめに
Storyboard は画面レイアウトの作成にだけ使用して、
ViewController の初期化と画面遷移はコードでやってしまいたい人向けです。
自分はよくこんな感じにやってます。

# 前準備
## ファイルの構成について
自分は Storyboard と ViewController は1対1になるようにしています。
なので基本的に Storyboard と ViewController の名前は同じにします。

こんな感じの構成です。
**FirstViewController** が遷移元の画面で、**SecondViewController** が遷移先の画面だと思ってください。

| フォルダの構成 |
| :———: |
| スクリーンショット 2020-05-06 20.46.43.pngXcodeは画像データを最適化する

アプリビルド時、pngファイルなどの画像データはそのままコピーされるのではなく最適化されるみたいです。
これはxcassetsなどの管理下のファイルだけかと思っていたのですが、どうも直接プロジェクトのツリーに入れているファイルも適用されるようです。

MacのFinderでは16,511バイトのpngファイルをiOS実機の実装時に下記コードでサイズを測ってみると次のようになりました。

“`swift

let url = Bundle.main.url(forResource: “Image”, withExtension: “png”)!
let data = try! Data(contentsOf: url)
print(data.count) // 94727
“`

拡張子をpngから適当な拡張子(datとかbin)にすれば回避出来ました。

(xcassetsに入れていないと言うことは生ファイルをバンドルしたいのだから勝手に最適化しないで欲しい。)

## 追記

Build Settingsで最適化を無効化したり、Folder Referenceにいれて回避すること

元記事を表示

[Swift] SizeClassの使い方まとめ

この記事では、iOSアプリ開発に関する初心者向けの情報を共有します。
私の認識違いなどがありましたらコメントでお知らせいただけると幸いです。

# SizeClassとは
***一つのストーリーボードファイルに様々な画面サイズと方向のためのユーザーインターフェースレイアウトを設計できるようサポートするクラスです。***

サイズクラスを理解するためには、下図を参考にしてください。
スクリーンショット 2020-05-06 21.38.32.png
スクリーンショット 2020-05-06 21.38.53.pngReactNativeでiosアプリを作るメモ

iOSとAndroid両方のアプリを作れるReactNativeですが、エミュレータ起動の方法とか気をつけるところを忘れてしまっていたので、自分用にメモを残します。

### ReactNative
ご存知かと思いますが、ReactNativeはモバイルアプリケーションフレームワークです。
Reactのような書き方でiOSやAndroidのネイティブアプリを作ることできます。
利点は上記で、欠点は用意されてない端末の機能を使うAPIを自分で用意する必要があるところです。

端末の機能を使うAPIはある程度用意されてますが、マイナーなAPIはAndroidJavaやObjectiveC(SwiftもObjectiveCが必須)を使って自分で書く必要があります。

### エミュレータでアプリを起動
[ドキュメント](https://reactnative.dev/docs/running-on-simulator-ios.html)を読むと、プロジェクトディレクトリで下記のコマンドを実行する

“`
npx react-native run-ios –simulator=”iPhon

元記事を表示

Apple WWDC2020 開催決定 新しいSwift Student Challengeとは

# 今年は新しいSwift Student Challengeが開催
いよいよ5月に入り、WWDC2020まで近づいてきました。
今年は新型コロナウイルス “COVID-19” の影響によりオンラインのWWDCとなることが発表されています。
今回はこのWWDC2020で開催されることとなった**Swift Student Challenge**に焦点を当てて取り上げたいと思います。

##そもそもWWDCとは
WWDCはAppleが毎年開催する世界開発者会議のことで、ここで新型iOSやmacOSをはじめ新しいソフトウェアやハードウェアが発表されます。
今年のWWDCについては先日6月22日に__オンラインで__開催することが決定されています。
>Apple、世界開発者会議を6月22日よりオンラインで開催
https://www.apple.com/jp/newsroom/2020/05/apple-to-host-virtual-worldwide-developers-conference-beginning-june-22/

##Swift Student Challengeって

元記事を表示

おうち時間にWEBエンジニアがFlutter触ってみた(環境構築)

#はじめに
おはようございます。こんにちは。こんばんは。
今回は **#おうち時間** 家にいても何もすることがないのでFlutterでアプリ作って遊んじゃおう。と思いはじめました。
始める前に環境構築していきましょう。

#Flutterとは
Flutter は、Googleによって開発されたフリーかつオープンソースのモバイルアプリケーションフレームワークである。
FlutterはAndroidやiOS向けのアプリケーションの開発に利用されている。

#今の環境

– macOS: 10.15.4
– Android studio: 3.6.3
– Xcode: 11.4.1

#環境構築
[https://flutter.dev/](https://flutter.dev/)にアクセスして**Get Started**をクリックして下さい。
Flutter_-_Beautiful_native_apps_in_record_time.pngApple Pencilでのメモを気軽にするアプリ「Like a Paper」を個人開発したので大変だったことを共有します

[Like a Paper](https://apps.apple.com/jp/app/like-a-paper/id1511690088#?platform=ipad)という個人開発のiOSアプリをリリースしました???

アプリの概要→使った技術的要素の紹介→開発の中で大変だったこと→開発の中で感じたことの順で書いていきます。
だいぶ長い記事になったので、興味のあるトピックスだけ拾い読みしていただければと思います。

# アプリの概要
まずアプリの概要です。

# なぜつくったか
僕はiPad ProとApple Pencil持ってるんですが、
それはそれとして紙とボールペンでアイディアスケッチしてるときが結構あって、
せっかくApple Pencil持ってんならそういうときもiPadでできるよなあとふと思いました。

純正のメモアプリやEvernoteでも、当然Apple Pencilには対応しているんですが、
なんかパッと思いついたことをラフに書きたいときに使うにしては、ちょっと多機能すぎて気が散ります。

パッとアプリを立ち上げたら、真っ白な画面になって、そこにすぐ書き込め

元記事を表示

SwiftUIで作るシンプルなログイン画面

GW中にSwiftUIで何かアプリを作るという個人目標を立てて、実際に作成した際に得られた知見を共有します。

今回は最低限の見た目のログイン画面の構成を紹介したいと思います。

## 実行環境
– Xcode 11.4.1
– macOS 10.15.4
– iOS 13.4.1

※ 2020年5月段階

## 完成品

App名、 入力フォーム、ログインボタンのシンプルな構成
App名をロゴに変えるなり、行間詰めたりなどはプロパティいじって調整してください

### ライトモード

Simulator Screen Shot - iPhone SE (2nd generation) - 2020-05-06 at 09.36.38.png

### ダークモード

</p></blockquote>
</blockquote>
<aside class='widget widget-post'>
<div class='tag-cloud-link'>iPhone</div>
<div class='tag-cloud-link'>Xcode</div>
<div class='tag-cloud-link'>iOS</div>
<div class='tag-cloud-link'>Swift</div>
<div class='tag-cloud-link'>SwiftUI</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/rymshm/items/c513bc5b805183183624'>元記事を表示</a></div>
<h3 id=CocoaPodsを使う

Swiftでcocoapodsを使う機会があったので、後のために忘備録として。。

##cocoapod のインストール
ターミナルを開き
`$ sudo gem install cocoapods`

##cocoapod をプロジェクトに追加する
`pod init`

##cocoapodに追加するライブラリを追加する
`$ vi Podfile`
で追加するライブラリをファイル内に記入
“`記入例: pod ‘ライブラリ名’“`

`$ pod install`

##インストール時の注意点
ライブラリによっては、warninngが出ることがあるので、バージョン指定がある場合は、必ずpod install前に記入すること。

元記事を表示

NSKeyValueObservationはinvalidateしよう!

## 経緯
`AVPlayer`の`rate`をKVOで監視する実装を行い、`NSKeyValueObservation`はメンバ変数に持たせました。
解放は、`NSKeyValueObservation#invalidate`に下記のコメントがあったため、メンバ変数を持っているクラスの解放に任せることにしました。

invalidate() will be called automatically when an NSKeyValueObservation is deinited

ところが、リリースしてみると、スタックトレースに下記を含むようなクラッシュが多発しました。
開発時やテストフライトでの動作確認も行っておりましたが、再現はできませんでした。

KVO_IS_RETAINING_ALL_OBSERVERS_OF_THIS_OBJECT_IF_IT_CRASHES_AN_OBSERVER_WAS_OVERRELEASED_OR_SMASHED

## 解決
Appleのいうことは信じずに、メンバ変数を持っているクラスの`deinit`で`NSKeyValueObservati

元記事を表示

【Swift】00:00:00表示 pickerを用いたカウントダウンタイマーの実装

##【はじめに】 
ラベルに00:00:00と表示するカウントダウンタイマーで、pickerを用いた実装方法をまとめてみました。
参考になれば幸いです。

##【目次】
・デザイン
・全体コード
・picker画面詳細
・timer画面詳細
・参考サイト
・最後に

##【デザイン】
スクリーンショット 2020-05-05 12.33.45.png
スクリーンショット 2020-05-05 13.00.57.png

##【全体コー

元記事を表示

AppStoreConnectでリジェクトへの返信でファイルアップロードができない問題

#リジェクトされた
今回Flutterで作成したアプリを公開しようと思い申請してみたけど予想通りリジェクトされてしまいました。
バイナリでの却下ということでリジェクト内容は以下でした。
###リジェクト内容

“`
Guideline 5.3.2 – Legal – Gaming, Gambling, and Lotteries

Your app includes a contest or sweepstakes but it does not:

– Indicate that Apple is not involved in any way with the contest or sweepstakes.

Next Steps

It is necessary to:

– Include official rules of the contest or sweepstakes in the app and ensure the rules are available to users at all times.
– Include an explicit statemen

元記事を表示

OTHERカテゴリの最新記事