20200327のiOSに関する記事は4件です。

Firebase Crashlyticsの導入

思ったこと

ドキュメント

感想

FirebaseのコンソールからCrashlyticsの導入を始めるのが一番手っ取り早いと感じた。最新のドキュメントを探さなくても、途中途中でドキュメントが出てきたためwww

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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を指定
    • 省略できますがこの説明のため丁寧に書いておきます

画面での説明

クエリ画面

スクリーンショット 2020-03-27 17.45.44.png

スキーマ画面

スクリーンショット 2020-03-27 16.45.32.png

aws-appsync-codegenの導入

npmをmacにDockerで入れることについて書いておきます。

iOSアプリ開発者的には、仕事でnpmの情報を追っているわけではなくバージョンの違いによる動作の違いを把握していないためシステムにnpm自身を入れたくないですし、なにか環境によるエラーが出た場合に面倒というのが強いです。

おそらくnpmをバージョン別に入れてそれを切り替えて使う方法(nodeenv?nodebrew?)もあるんでしょうが、そこはnpmをそこまで使うわけではないので考えたくないです。

nodeのimageをダウンロード

$ docker pull node

docker 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-codegen

aws-appsync-codegenでコード生成する

# aws-appsync-codegen generate tmp/queries.graphql --schema tmp/schema.json --target swift --output tmp/GraphQLAPI.swift
  • コード生成した結果も共有のボリュームに出力しています
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

APNGKitを利用してiOSでAPNGアニメーションを実装する。

こんにちはrenです。
皆様はAPNGというファイル形式をご存知でしょうか?

APNGとはアニメーションするPNG画像のことで、GIFに取って代わる新しい画像形式です!

対象読者

iOSアプリ開発者

APNGを利用するメリット

GIFよりも表現の幅が広い

GIF

  • 256 色まで
  • アルファチャンネルなし(完全な透明か完全な不透明かのいずれかのみ)

APNG

  • フルカラー
  • アルファチャンネルあり(半透明が使える)

使い方

APNGKitというライブラリを利用すると簡単に導入できます!
https://github.com/onevcat/APNGKit

1. APNGKitをインストール

CocoaPods、Carthage、Swift Package Manager などを利用し、ライブラリをインストールします。
今回はSwift Package Managerを利用します。

File -> Swift Package -> Add Package Dependency...
スクリーンショット 2020-03-26 20.00.36.png

APNGKit で検索
スクリーンショット 2020-03-26 19.31.36.png

Versionは適当に設定
スクリーンショット 2020-03-26 19.31.46.png

APNGKit にチェックを入れる
スクリーンショット 2020-03-26 19.32.32.png

こんな感じになっていればOK
スクリーンショット 2020-03-26 19.32.48.png

2. APNGのファイルをプロジェクトに追加

スクリーンショット 2020-03-26 20.11.22.png

3. StorybordにImageViewを作成

スクリーンショット 2020-03-26 19.37.25.png

4. ImageViewをカスタムクラスAPNGImageViewに置き換える

スクリーンショット 2020-03-26 19.37.35.png

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!

アニメーションの動画を貼りたかったけど、色々面倒だったので省略

サンプルプロジェクト

https://github.com/renchild8/APNGKitSample

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[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. 再ビルド

するとビルドが通るようになりました。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む