- 1. 【expo】ios,androidのストア公開で詰まったメモ
- 2. UserDefaultsをProperty Wrapperでカッコよく使う
- 3. 【Xcode】Could not attach pid to XXX というエラーが出る
- 4. iOSアプリのビルド番号にビルド日時を設定する
- 5. iOSでCustom URL Scheme活用
- 6. 【Pythonista3を使ったみた】自作モジュールのインポート
- 7. 【Pythonista3を使ったみた】入門
- 8. ArcGIS で iOS SDK を使用してみた!
- 9. Errorをいい感じにUIAlertControllerで表示する
- 10. 「XDプラグインでDart言語自動生成してみた」 ~私文男子の格闘第3話~
- 11. 【Swift】コードでViewControllerを生成して画面遷移と値渡しをする方法
- 12. Xcodeは画像データを最適化する
- 13. [Swift] SizeClassの使い方まとめ
- 14. ReactNativeでiosアプリを作るメモ
- 15. Apple WWDC2020 開催決定 新しいSwift Student Challengeとは
- 16. おうち時間にWEBエンジニアがFlutter触ってみた(環境構築)
- 17. Apple Pencilでのメモを気軽にするアプリ「Like a Paper」を個人開発したので大変だったことを共有します
- 18. SwiftUIで作るシンプルなログイン画面
- 19. CocoaPodsを使う
- 20. NSKeyValueObservationはinvalidateしよう!
【expo】ios,androidのストア公開で詰まったメモ
少し詰まったのでメモします。
基本的なビルドの仕方は、udemyの[React Native で iOS / Android アプリ開発をゼロから始めよう!](https://www.udemy.com/course/react-native-ios-android/)の通りにやればいけると思います。# ios
## 「Guideline 2.3.8 – Performance – Accurate Metadata」 の対処法
Developer Accountで設定したのと同じ名前をapp.jsonに設定する。
“`app.json
“expo”: {
“name”: “多面!フラッシュ暗算”,
…
“`
UserDefaultsをProperty Wrapperでカッコよく使う
iOSプログラマなら誰もが3回は作っているUserDefaultsをいい感じに使う方法の解説です。
今回はProperty Wrapperを活用します。目標は以下です。
* あまりコードを書かずに使える
* UserDefaultsで元々使える型も使えない型も同じように使える
* 型安全に使える(キャストせずに済む)
* Optionalも扱う(UserDefaultsの`integer(forKey:)`は値がないときnilではなく0を返してしまう)
* Swift5.1以降対応
* iOS11以降対応# カッコよく使う例
アプリごとに用意するUserDefaultsアクセス部分の例です。“`swift
struct User : Codable, UserDefaultCompatible {
var name: String
}struct Settings {
@UserDefault(“user”, default: User(name: “abc”))
var user: User@User
【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/shdate “+%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=cwPFbQuyvRoApple 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”を作成します。
ArcGIS で 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というのはこんな感じのやつです。
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** が遷移先の画面だと思ってください。| フォルダの構成 |
| :———: |
| Xcodeは画像データを最適化するアプリビルド時、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とは
***一つのストーリーボードファイルに様々な画面サイズと方向のためのユーザーインターフェースレイアウトを設計できるようサポートするクラスです。***
サイズクラスを理解するためには、下図を参考にしてください。
ReactNativeで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**をクリックして下さい。
Apple 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名をロゴに変えるなり、行間詰めたりなどはプロパティいじって調整してください### ライトモード
### ダークモード
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