- 投稿日:2020-03-27T23:49:19+09:00
Firebase Crashlyticsの導入
思ったこと
- Firebaseのドキュメントが古かった。
- https://firebase.google.com/docs/crashlytics/get-started?hl=ja
- 最初にみたドキュメントが古くて、同じことを2回やる羽目に
- Xcodegenの対応
- XcodegenだとprebuildScriptsのscriptがcocoapodsのスクリプトよりも前に呼ばれて、エラーが出る問題
- https://qiita.com/gin0606/items/3935027fef9597ddf6e7
- W/A的に対応したけど、もっといい方法がありそう。。。
ドキュメント
- 一番新しいやつスタートガイドライン
- Fabricから移行するとき
感想
FirebaseのコンソールからCrashlyticsの導入を始めるのが一番手っ取り早いと感じた。最新のドキュメントを探さなくても、途中途中でドキュメントが出てきたためwww
- 投稿日:2020-03-27T18:19:57+09:00
AWS AppSync用にaws-appsync-codegenでiOS(Swift)のソースコードを生成する
AWS AppSyncでiOS(Swift)用のコードを生成する時に勘違いしていたことがあったので、それについて公式のサンプルから理解できるように細かく書いておきます。私自身がAppSync歴1日なので正確に理解できているかもわかりませんので、その点についてはお手数おかけいたしますがコメントなどでご指摘よろしくお願いします。
また、現状(2020年)ではAppSyncの公式ドキュメントはAmplifyを使うことが前提とされており、Amplifyを使わない場合はやり方を探すのはかなり難しい。難しいので書き残しておきますというモチベーションです。
サンプルはAWS AppSync公式で説明されているサンプルスキーマ「イベントアプリ」からです。
最初に結論
おそらくこのページを見ている方が最も知りたいのはコード生成のコメント
aws-appsync-codegen
についての使い方でしょうから最初に書いておきます。# aws-appsync-codegen generate tmp/*.graphql --schema tmp/schema.json --target swift --output tmp/GraphQLAPI.swift
- tmp/*.graphql
- GraphQL リクエスト用のクエリを指定
*
にしているのはリクエストが複数ある場合にそれをtmpディレクトリに置いているためです- 後述の「クエリ画面」からコピペしてファイルにします
- tmp/schema.json
- GraphQLのための仕様
- 後述の「スキーマ画面」から「スキーマをエクスポート」でschema.jsonを選びます
- 注意: jsonを選びましょう。schema.graphqlではありません
--target
はswiftを指定
- 省略できますがこの説明のため丁寧に書いておきます
画面での説明
クエリ画面
スキーマ画面
aws-appsync-codegenの導入
npmをmacにDockerで入れることについて書いておきます。
iOSアプリ開発者的には、仕事でnpmの情報を追っているわけではなくバージョンの違いによる動作の違いを把握していないためシステムにnpm自身を入れたくないですし、なにか環境によるエラーが出た場合に面倒というのが強いです。
おそらくnpmをバージョン別に入れてそれを切り替えて使う方法(nodeenv?nodebrew?)もあるんでしょうが、そこはnpmをそこまで使うわけではないので考えたくないです。
nodeのimageをダウンロード
$ docker pull nodedocker runしてコンソールでnpmを利用する
nodeのコンテナを起動し、コンソールに入ります
$ docker run -v (pwd)/graphql:/tmp -it --rm node /bin/bash
-it
- インタラクティブにターミナルを起動
-v
- ローカルとコンテナ内のボリュームを共有し、GraphQL リクエスト用のクエリとschema.jsonをコンテナ内でも使えるようにします
- (pwd)
- fishなので(pwd)
- bashだと$(pwd)かも
コンテナ内でnpmを使いaws-appsync-codegenをインストール
コンテナ内なのでグローバルにインストールしても良いかな、という感じです
# npm install -g aws-appsync-codegenaws-appsync-codegenでコード生成する
# aws-appsync-codegen generate tmp/queries.graphql --schema tmp/schema.json --target swift --output tmp/GraphQLAPI.swift
- コード生成した結果も共有のボリュームに出力しています
- 投稿日:2020-03-27T17:29:15+09:00
APNGKitを利用してiOSでAPNGアニメーションを実装する。
こんにちはrenです。
皆様はAPNGというファイル形式をご存知でしょうか?APNGとはアニメーションするPNG画像のことで、GIFに取って代わる新しい画像形式です!
対象読者
iOSアプリ開発者
APNGを利用するメリット
GIFよりも表現の幅が広い
GIF
- 256 色まで
- アルファチャンネルなし(完全な透明か完全な不透明かのいずれかのみ)
APNG
- フルカラー
- アルファチャンネルあり(半透明が使える)
使い方
APNGKitというライブラリを利用すると簡単に導入できます!
https://github.com/onevcat/APNGKit1. APNGKitをインストール
CocoaPods、Carthage、Swift Package Manager などを利用し、ライブラリをインストールします。
今回はSwift Package Managerを利用します。
File
->Swift Package
->Add Package Dependency...
2. APNGのファイルをプロジェクトに追加
3. StorybordにImageViewを作成
4.
ImageView
をカスタムクラスAPNGImageView
に置き換える5. ViewControllerを下記のように変更
import UIKit import APNGKit class ViewController: UIViewController { // APNGを表示するためのImageView @IBOutlet private weak var imageView: APNGImageView! override func viewDidLoad() { super.viewDidLoad() setupImageView() } private func setupImageView() { // APNGファイルのパスを取得 guard let path = Bundle.main.path(forResource: "elephant", ofType: "apng") else { return } // APNGのファイルを取得 let image = APNGImage(contentsOfFile: path) // imageViewにAPNGを代入 imageView.image = image // アニメーションの実行 imageView.startAnimating() } }6. Run!
アニメーションの動画を貼りたかったけど、色々面倒だったので省略
サンプルプロジェクト
- 投稿日:2020-03-27T02:31:29+09:00
[Flutter] iOS 13.4にアプデ後実機デバッグができない場合の対処法
iOS13.3.1では実機デバッグができず辛い思いをしていましたが、
ついにiOS13.4がリリースされたのでいざ挑戦!!と思いきや以下エラーでビルドが通らない。
Building for iOS, but the linked and embedded framework 'App.framework' was built for iOS Simulator.対処法は以下
1. ios/Flutter/App.framework ディレクトリ以下を削除
2. 再ビルドするとビルドが通るようになりました。