iOSエンジニアのつぶやき

毎朝8:30に iOS 関連の技術について1つぶやいています。まれに釣りについてつぶやく可能性があります。

2020-01-01から1年間の記事一覧

【Xcode】〇〇 is not available. please reconnect the device の対処法

Xcode12.1 + iOS14.1 の実機で、いつものごとく実機にアプリをインストールしようとすると何やら見覚えのあるエラーが、 〇〇 is not available. please reconnect the device Xcode11.xx 系では、iOS14 以降のペアリング暗号化の問題で、実機へのインストー…

【Swift】ローカルプッシュを送信する

今日はタイトルの通り、Swift でローカルプッシュを送信する方法を紹介したいと思います‍♀️ ちなみに、実装は Swift5.3 で動作確認は iOS14.1 で行っておりやす。 それではやっていく まずは、通知を送信できるようにするためにユーザに許可してもらう必要が…

【Android】Release バリアントでビルドした時の Error 対処法

先日、新規作成したアプリで試しにバリアントを release に設定し、ビルドしてみると下記のようなエラーが発生しました。 Error: The apk for your currently selected variant (app-release.apk) is not signed. Please specify a signing configuration fo…

【Fastlane】metadata のアップロードでこける

App Store Connect のメタデータをローカルで編集後、アップロードしようとすると下記のようなエラーが発生していました $ bundle exec fastlane metadata ... The provided entity includes an attribute with a value that has already been used - The ve…

【リジェクト】Guideline 5.3.2 - Legal - Gaming, Gambling, and Lotteries

いつものごとくアプリの申請を出していたら、久しぶりにリジェクトされてしまいました 既存機能でのリジェクトだったので、Apple の方が休暇前に本気でレビューしてくれたんでしょうね 、、 Guideline 5.3.2 - Legal - Gaming, Gambling, and Lotteries Your…

【Javascript】Promise ってなんぞや

最近、個人で開発しているアプリで Node.js を触ることが多いのですが、Javascript で非同期処理を扱う際の知識が不足しているので、この記事をきっかけに少しずつ勉強していこうかと思います‍♀️ ということでまずはタイトルの通り Promise について調べてい…

Android Studio でアプリのランチャーアイコンを変更

今日は Android Studio でアプリのランチャーアイコンを変更する方法を紹介したいと思います‍♀️ それではやっていく まずは,app ディレクトリを選択した状態で WindowメニューからFile/New/ImageAsset を選択します。 今回変更するのはランチャーアイコンな…

【Node.js】Firebase Functions から Slack Web API を使って Slack に通知を送る

Firebase Functions での処理の結果を Slack に通知したいという場面があったので、僕が行った実装方法を紹介したいと思います‍ それではやっていく まずは通知を知らせるためのアプリを作成し、OAuth Access Token を取得(今回は Bot を使用します)・通知を…

FirebaseFunctions に環境変数を設定する

今日も短い内容ですが、Functions の Tips です やっていく‍ 下記が product エイリアスに service_name.key_name の環境変数を設定する例になります‍♀️ $ firebase functions:config:set service_name.key_name="hogehoge" --project=product 確認する時は…

【iOS】Fastlane で Version と Build Number を取得して使えるようにする

今回は、Fastlane でアプリの Version や Build Number を取得したい時の Tips を紹介します‍ Version の取得 PlistBuddy を使用することで、Info.plist の値を操作しやすくすることができます。CFBundleShortVersionString はアプリのバージョンを指してい…

Fastlane で App Store Connect のメタデータをダウンロード

今日もすぐ終わってしまうネタですが、Fastlane の deliver で App Store Connect のメタデータをダウンロードする方法を紹介します‍♀️ docs.fastlane.tools やっていく‍ まずは、スクリーンショットを fastlane/screenshots/ja にダウンロードしてきます。(…

Firestore から Algolia へコレクションデータを一括インポート

今回はタイトルの通り、Firestore のコレクションデータを Algolia に一括でインポートする方法を紹介したいと思います‍♀️ Algolia とは? Algolia は、高機能な検索APIを提供する SaaS(Software as a Service) です。 Firestore は全文検索をサポートしてい…

【Kotlin】java.util.NoSuchElementException: List is empty

先日、Kotlin で Firestore を用いて Collection を取得していると下記のような Error に遭遇しました 2020-12-13 11:42:44.547 22551-22551/com.YamatoOtaka.androidsample1 E/AndroidRuntime: FATAL EXCEPTION: main Process: com.YamatoOtaka.androidsamp…

【Xcode】ソースのインデントを直す

今回は3秒で終わってしまう記事ですが、Xcode でソースコードの再インデントを行う方法を紹介します‍♀️ やっていく この汚いインデントを extension Array { public subscript (safe index: Index) -> Element? { return indices.contains(index) ? self[ind…

【Git】ローカルからマージ済みのブランチを一括削除

機能に引き続き今日も3秒で終わってしまう記事ですが、タイトルの通りマージ済みのブランチを一括削除する方法を紹介します‍♀️ やっていく 下記のコマンドを実行することにより、develop ブランチ以外のマージ済みブランチはローカルから一括削除されます。 …

【Kotlin】Android Realm でデータを保存して確認するまで

今回は、Kotlin を使って Realm にデータを保存。そして、Realm Studio で保存したデータ確認するまでの手順を紹介したいと思います‍♀️ それではやっていく 1.プロジェクトレベルの Gradle に下記を追加します。執筆時点では、10.0.1 が最新版でしたがアップ…

Apple(iPhone, iOS, Mac, macOS)の歴史を振り返る

まえがき 本記事は、iOS Advent Calendar 2020 の16日目の記事です‍♀️ 詳細は Qiita の方で書いたので、よければそちらをご覧ください 年表 下記をご参照ください‍♂️ qiita.com あとがき 振り返って見るとAppleの技術進歩のスピードが恐ろしく早くて驚愕しま…

【Swift】Firebase Storage で JPEG ファイルをアップロードする

今日はタイトルの通り、Firebase Storage で JPEG ファイルを Swift でアップロードする方法を紹介したいと思います‍♀️ 使ったもの 今回の実装をする上で使用したものは下記になります。 Firebase/Storage 6.34.0 RxSwift 6.0.0-rc.1 Xcode12.0.1(Swift5.3) …

【Swift】Realm + RxSwift でデータの更新を通知する

今回は RxSwift で Realm のデータ(Object) の更新を通知する方法を簡単に紹介します‍♀️ それではやっていく データの変更を通知するための Observable を返すメソッドは下記のようになります。Realm Object のインスタンスメソッド observe でデータの変更…

【Kotlin】Activity の画面遷移時にカスタムデータを渡す

今回はタイトルの通り、Kotlin で Activity の画面遷移時にカスタムデータを渡す方法を紹介したいと思います‍ それではやっていく‍ まずは遷移先の Activity に渡すデータクラスを定義し、Serializable に準拠させます。 data class PlaceItemEntity(val nam…

【Swift】NavigationBarの戻るボタンをカスタマイズしよう

今回は初学者向けに、Swift で NavigationBar の戻るボタンをカスタマイズする際のベストプラクティスを紹介したいと思います‍ ちなみに今回のゴールは下記のようになります。 before after コード まず前提として覚えておく必要があるのは、戻るボタンは Im…

【Kotlin】アプリにToolbarをつける

今回は、Android アプリの ActionBar を非表示にし、代わりに Toolbar をつける方法を紹介したいと思います‍ まずは、ActionBar と Toolbar の違いをみていきましょう。 ActionBar ActionBar は、画面上部に位置するバーで、画面のタイトルや重要なアクショ…

【Kotlin】Fragment から Activity に画面遷移する

1.まずは遷移先の Activity を新規に作成します。 2.次に AndroidManifest に遷移先の Activity を追加します。なお、遷移元の Activity は既に追加されているものとします。 application タグの中に、新しく activity タグを追加し、android:name で遷移先…

Github Projects でタスク管理を行う

Github Projects とは? Github上の Issue や PR(Pull Request) などのタスクを整理して、プロジェクト単位でのロードマップや進捗状況などを明確化できるための Github の機能です。 Project を作成してみる 今回はチーム全体のタスク管理を行いたいので、O…

リテンションとは?

スタートアップなどでアプリを開発したことがある人なら誰しも一度はリテンションという言葉に触れたことがあると思います。 今日はそんなリテンションの概要や種類について簡単にまとめようと思います また、今回はアプリ開発をはじめとした IT 分野におけ…

Kotlin で Firestore から取得したデータを DocumentID 付きのモデルにマッピングする

今日は、タイトルの通り Firestore から取得したデータ(SnapShot)を DocumentID 付きのカスタムクラスに変換する方法を紹介します‍ それではやっていく まずは、データをマップするクラスを作成します。以前の記事でも紹介したように、マップするクラスはデ…

Stripe Connect について少し調べる

個人で開発しているアプリで、CtoC の決済を実現するために Stripe Connect について少しだけ調べたのでまとめておきます‍♀️ (実際に利用したらまた記事書きます) アカウントのタイプ Stripe Connect を導入するにあたり、アカウントタイプというものをビジ…

Kotlin の Enum を使ってみる

みなさん Kotlin は書いていますか?僕は、最近仕事の合間などに少しずつ書くようにしています‍ 今回はそんな、Kotlin の enum(列挙型) の基本的な使い方をみていきたいと思います。 余談ですが、毎日技術ブログを書いていると常時ネタ不足に陥るので、 iOS/…

Firebase で Sign in with Apple 🔥

みなさん、おはようございます。今年も Qiita Advent Calendar に申し込みましたが、ネタが無い Yamato です‍ ということで、今回はタイトルの通り Firebase で Sign in with Apple を実装する手順を紹介していきたいと思います。 前提 iOS13 以上をアプリタ…

CFBundleIdentifier Collision. There is more than one bundle with the CFBundleIdentifier value under the iOS application の対処方法

App Store Connect にバイナリをアップロードしようとしたところ、下記のようなエラーが発生していました🤷‍♀️ CFBundleIdentifier Collision. There is more than one bundle with the CFBundleIdentifier value under the iOS application <App Name> 原因 どうやら、</app>…