2016-01-01から1年間の記事一覧
Kingfisherというライブラリを使ってみました。 こちらはSDWebImageにインスパイアされて作ったもので、画像のダウンロードが簡単にできるものになっています。 github.com インストール いつものようにCocoapodsを使います。 target 'MyApp' do use_framewo…
1つのプロジェクトで複数アプリをリリースしている場合のメタデータ管理方法です。 複数アプリが全く同じメタデータならいいのですが、アイコンやスクリーンショットを別々にする場合少し工夫をする必要があります。 fastlaneの設定方法はこちらをご参照下さ…
RMStoreというiPhoneのアプリ内課金を楽にしてくれるライブラリを使ってみました。 github.com インストール インストールはcocoapodsを使います。 pod 'RMStore' 使い方 商品情報は以下のように取得します。 引数にproductIdを渡せばSKProductの配列が返っ…
iTunesConnectの売上やダウンロード数などのデータを取得するプログラムに関する話です。 今まではiTunesConnectのSalesデータをAutoIngestion Toolというものを使って取得できました。 しかしこのツールは非推奨になり、2016年12月で停止してしました。 App…
アプリの申請や証明書周りを自動化するfastlaneを試してみました。 インストール インストールはgemを利用します。 gem install fastlane fastlaneの初期化 インストールが終わったらfastlaneの初期化を行います。 プロジェクトのフォルダで以下コマンドを実…
Chartsというライブラリを試して色々なグラフを使ってみました。 github.com インストール CocoaPodsでインストールしました。 target 'MyApp' do use_frameworks! pod "Charts" end 棒グラフ import UIKit import Charts class ViewController: UIViewContr…
iPhone5sから登場した指紋認証ですが、まだちゃんと使った事がなかったので試してみました。 指紋認証可能化どうかはLAContextクラスのcanEvaluatePolicyメソッドを使います。 LAContextを使うためにはLocalAuthenticationをimportする必要があります。 impo…
Smile-Lockというライブラリを試してみました。 URL見るとリクルートライフスタイルで出しているライブラリなんですね。 github.com インストール CocoaPodsでインストールしました。 target 'MyApp' do use_frameworks! pod 'SmileLock' end 使い方 下のよ…
Firebaseを使う準備 まずは下サイトで新しいプロジェクトを作成します。 Firebase Console プロジェクトを作成すると以下のような画面になるのでiOS アプリに Firebase を追加を選びます。 情報を入力してアプリを追加します。 次画面に移動するとGoogleServ…
R.swiftがいつの間にかNSLocalizedStringにも対応されていたので動かしてみました。 R.swiftとは R.swiftとはStoryboardや画像などの取得を便利にするライブラリです。 Storyboardの取得はUIStoryboard(name: "Main", bundle: nil)のように文字列で指定しま…
WKWebViewのスクロール速度を変更する方法を調べてみました。 まずはViewControllerにwebViewを貼り付けます。 import UIKit import WebKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let webView = WKW…
StoreKitのSKStoreProductViewControllerを使ってアプリ内でアプリのページに移動してみました。 まずはStoreKitを追加します。 SKStoreProductViewControllerはUIViewController同様にpresentをして表示します。 Storeの情報はloadProductメソッドで読み込…
昨日調べた事の続きです。 この記事では、GKGoalを使って特定のオブジェクトに向かって移動するAgentを作成しました。 今回は「特定のオブジェクトに向かって移動」「別のオブジェクトから逃げる」の複数を指定した場合を試してみます。 GKGoalとGKAgentで目…
GameplayKitの「Agents, Goals, and Behaviors」という機能を試してみました。 GameplayKit Programming Guide: Agents, Goals, and Behaviors これは特定のオブジェクトに向かって移動したり、特定のオブジェクトから逃げるようなものを作れる機能です。 早…
こちらのXcodeプラグインを試してみました。 github.com インストールすると下のようなフォルダ構成になっているのでプロジェクトを立ち上げます。 立ち上げると以下のような画面になります。 ウインドウの指示通り、Other Swift Flagsにフラグを追加します…
iOS10になって、以下のようにAutolayoutのconstantを変更 & layoutIfNeededでアニメーションしてくれないという問題に遭遇しました。 constraint.constant = x UIView.animate(withDuration: 0.1, animations: { self.contentView.layoutIfNeeded() }) ひと…
UISearchBarのUITextFieldを取得する方法です。 subviewから無理やり取っているので、今後取れなくなる可能性もあるので注意が必要です。 let searchBar = UISearchBar() let textField = searchBar.subviews.first?.subviews.flatMap { $0 as? UITextField …
2017/10: Swift4.0でも動作確認済 Swift3.0でクラス名の取得方法が少し変わっていたのでメモ。 dynamicTypeでなくtypeという大域関数を使うようになりました。 // Swift2.0 let view = UIView() NSStringFromClass(view.dynamicType) // Swift3.0 let view =…
最近Suicaが使えると話題のApple Payについてです。 Apple Payについて最近調べていたところ、アプリ内の課金にも使える事がわかりました。 しかしアプリ内課金はIn App purchaseが既にあるので、その辺りの使い分けをどうしたらいいかを調べてみました。 Ap…
UITableViewCellで、削除ボタンを出さなくした時のスペースを消す方法です。 内容 UITableViewでは以下のようなメソッドを実装する事で編集中に削除ボタンを出さない事ができます。 override func tableView(_ tableView: UITableView, editingStyleForRowAt…
下コマンドでDerivedDataの中身を削除する事で解決しました。 rm -rf ~/Library/Developer/Xcode/DerivedData/*
アプリ内課金でアイテム情報が取得できなかった時の対処法です。 今回のケースでは、iTunesconnectの「契約/税金/口座情報」を入力する事で解決しました。 入力後30分くらい経ったらプロダクト情報が取れるようになりました。
insomniaというRESTClientを試してみました。 insomnia.rest アプリはこちらのページからダウンロードしました。 insomnia.rest 起動後画面は下のようなものです。 このようにURL指定でリクエストを送る事ができます。 ベーシック認証・ヘッダー・パラメータ…
メソッドの呼び出し元を取得する方法を調べました。 良くある方法はスタックトレースを見る方法です。 class MyClass { func originMethod() { targetMethod() } func targetMethod() { let symbols = NSThread.callStackSymbols() print(symbols.count >= 2…
自作のCocoaPodsライブラリのバージョンを上げる方法です。 まずはpodspecファイルのバージョンを更新します。 Pod::Spec.new do |s| s.version = "0.1.4" # ここのバージョンを変える end 次はそのバージョンのタグを作ってpushします。 git tag 0.1.4 git …
DIコンテナとは何か調べてみました。 サンプルはSwiftで書かれています。 DIとは DIとはDependency injectionの略で、デザインパターンの一種です。 日本語では言うと依存性の注入などと呼ばれる事が多いです。 このデザインパターンは複数の関連するオブジ…
Realm BrowserというRealmのデータを見れるツールが出ていたので試してみました。 Realmが公式で開発しているもので、1年以上前から出ていたようです。 Realm BrowserRealm開発ツール無料 起動するとRealmファイルの場所を聞かれます。 Realmファイルは、シ…
Djangoをインストールしてサーバーを動かすところやってみました。 まずはPythonのパッケージ管理ライブラリであるpipをインストールします。 easy_install pip 次はpipを使ってdjangoをインストールします。 pip install django インストールが終わったので…
両者の違いを調べてみました。 それぞれに以下のような記述をして動作を確認してみました。 .bashrc echo ".bashrc" .bash_profile echo ".bash_profile" 新規タブや新規ウインドウを開いた時はbash_profileだけ出力されました。 逆にbashコマンドを実行した…
GoogleFormを試してみました。 まずは以下のサイトからフォームを作成します。 www.google.com このように質問をどんどん追加していく事で作っていきます。 ラジオボタン以外の回答方式を作る事もできます。 作り終わったら右上の送信ボタンから質問を送信し…