- 1. 【Swift】UIImagePickerControllerで簡単カメラ連携
- 2. 2点のCGPointからCGRectを作る
- 3. iOSのショートカットとGASを使って紙のお知らせの保存&リマインダー機能を作った#iOSショートカット#紙との決別
- 4. 【Swift】Xcodeでカスタムフォントをコードで実装する方法
- 5. 【iOS】FastlaneでUnitTest/UITestをいい感じに自動化してみた
- 6. React NativeのiOSビルドが突然できなくなった
- 7. CollectionViewをつくってみる
- 8. UITableViewCellが再利用されないケースを検証
- 9. 【Laravel】App Store Connect API からiOSアプリの売上レポートを取得する
- 10. 【挑戦者求ム】ダイエットを自動化してみた
- 11. IFTTTで業務改善 移動車両の発着時間を自動記録する
- 12. iPhoneで写真を撮ったらDropboxに自動保存されるようにする
- 13. 「お前のアプリ、ク◯アプリ」に立ち向かい完全勝利した話
- 14. Apple WatchでSafariブラウザ相当の機能を使う方法(ショートカットアプリ経由)
- 15. Azure AD による モバイルアプリのデバイス証明書認証の実現方法
- 16. 不足しているオプションの dSYM をアップロードする(iOS)(Firebase)
- 17. CollectionViewでSectionがあるときにDrag & Dropで困ること
- 18. 【無料】Android, iOS を自動判定するURLリンク(QRコード)を作る。OS別のサイトに飛ばす。
- 19. 【iOS】simulatorで+(プラス)を入力する。
- 20. SwiftでISO8601形式の期間の文字列表現を扱う
【Swift】UIImagePickerControllerで簡単カメラ連携
# やりたいこと
カメラで写真を撮影して、その写真をアプリ内で使いたい。# 環境
– Xcode 13.1
– Swift 5# 準備
カメラを使う際は、info.plist の Camera Usage Description を定義しておく必要があります。
![スクリーンショット 2021-11-18 18.53.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/367596/35a9133d-388d-875d-9a22-acdd472ad7df.png)# 処理概要
1. カメラのアクセス権限確認
1. UIImagePickerController のインスタンス生成、カメラ起動
1. Delegateで撮影した写真を受け取る# ソースコード
“`swift:SampleViewController.swift
class SampleViewController: UIViewController {
/// ボタンタップでカメラを起動する
@IBAct
2点のCGPointからCGRectを作る
任意の2点で構成される四角形を作る場合、よく`(p1.x – p0.x, p1.y – p0.y)`をsizeとしてCGRectを生成することがあるが、CGRectのunionを利用することで計算を手書きせずに簡単に作ることができる。
“`swift
let r0 = CGRect(origin: p0, size: .zero)
let r1 = CGRect(origin: p1, size: .zero)
let rect = r0.union(r1).standardized
“`unionは2つのCGRectを構成する最小のCGRectを生成する関数で、これを利用して座標だけを持つCGRect2つをunionさせて四角形を計算させる。
iOSのショートカットとGASを使って紙のお知らせの保存&リマインダー機能を作った#iOSショートカット#紙との決別
##まずはこれを見てほしい
![cSVGr4qw.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2143015/df09c3e9-7c50-7494-058d-2d6396f56387.jpeg)
我が子の保育園から貰うお知らせです。
ふむふむ、11/22までにボーダー柄の服とビニール袋をお持ちせよ。とな?
良し、期限まで時間もあるし、とりあえず置いておこう **←絶対忘れるやつ**というわけで、LINEやメールが主流になった昨今ですが、まだまだ紙でのお知らせはたくさん来ると思います。紙なので埋もれやすいし**それ自体が邪魔になると思う**人も多いのではないでしょうか。私のことです。
携帯に記録しておくにも入力が面倒ですし、案外大事な情報が載っていたりするので紙のまま置いておいた方がよかったりします。**こんな面倒ごとを、iOSのショートカット、Dropbox、Google Apps Script、LINE Notifyを駆使して解消してみました。**
##人間がやることと機械が裏でやるこ
【Swift】Xcodeでカスタムフォントをコードで実装する方法
Xcodeでカスタムフォントを使用する方法。
## フォントファイルの用意
まずはフォントファイルを手元に用意します。
拡張子は`otf` `ttf` `ttc`のいずれかにしておきましょう。
## フォントファイルをアップロード
次に用意したフォントファイルをXcodeにドラッグアンドドロップでアップロードします。
![スクリーンショット 2021-11-18 23.17.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/522445/83d5f7a5-56ea-6319-58e8-1ed6e37246ee.png)
上の画像のようにウィンドウが表示されるので、画像のようにチェックを入れてFinishをクリックしましょう。
## Swiftコードで実装
アップロードが完了したらSwiftのコードで実装していきます。
“`swift
private let sampleLabel: UILabel = {
let label = UILabel()
label.f
【iOS】FastlaneでUnitTest/UITestをいい感じに自動化してみた
## はじめに
Fastlaneをプロジェクトに導入をする機会があって、いろいろ調べたので記事にしてみました。
Fastlaneをこれから使ってみたい、XCTestを自動化したいという方の参考になれば幸いです。## この記事で学べること
– Fastalenの導入の方法
– XCTest(UnitTest/UITest)を自動化する方法(前提としてプロジェクトにXCTestが導入されている必要がある)
– Test自動化のための細かいオプション## Fastalen導入
Test自動化の前にFastlaneをプロジェクトに導入する必要があります。
プロジェクトのディレクトリに移動して、“`
bundle init
“`を実行すると、同ディレクトリに`Gemfile`が生成されます。
`Gemfile`をテキストエディタなどで開いて、コメントアウトされている`# gem “rails”`の下に、
“`
gem ‘fastlane’
“`を書き足します。
ここまでは、エラーが起きて失敗したりすることはあまり無いと思います(自分は大丈夫でした)次はインスト
React NativeのiOSビルドが突然できなくなった
## 現象
ついこの間までビルドやシミュレータでのデバッグができていたのに、週明けたらできなくなってた
シミュレータは立ち上がるが、コンソールには`BUILD FAILED`が(控えめに)出て、シミュレータ上でアプリが更新されない
TestFlightに上げるための、XCode上でのビルドも失敗する
## 環境
* MacBookAir 11.4
* react-native v0.63.2## エラー内容
“`
error Failed to build iOS project. We ran “xcodebuild” command but it exited with error code 65. To debug build logs further, consider building your app with Xcode.app, by opening [プロジェクト名].xcworkspace. Run CLI with –verbose flag for more details.…
/[プロジェクトパス]/ios/Pods/Pods.x
CollectionViewをつくってみる
## 環境
Xcode 13.1
Swift 5.5.1## CollectionViewをつくる
#### View Controller > View の上に、Collection Viewを配置
`Section Header`をSB上で表示するには `Attributes Inspector` > `Accessories` > `Section Header` にチェックしました
背景色の設定はStoryboard上で行いました
![スクリーンショット 2021-11-13 23.28.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505421/3f49df5e-c035-a262-603c-a6f1b208dd94.png)#### HeaderやCellのidentifierを設定
UITableViewCellが再利用されないケースを検証たまたま作業中に疑問に思うことがあってStackoverflowをググっていると、このような質問を見かけました。
[Does a UITextField with first responder status in a UITableViewCell prevent cell re-use?](https://stackoverflow.com/questions/8045099/does-a-uitextfield-with-first-responder-status-in-a-uitableviewcell-prevent-cell)
この記事では、「UITableViewCellに載っているUITextFieldがfirstResponderの場合、UITableViewセルの再利用がされないのでは?」という質問が投げかけられており、解答としては「SDKのドキュメントで言及はないので、その挙動に頼るべきではないでしょう。」となっています。
この記事では実際にこの挙動を検証してみます。
# 検証目的
`isFirstResponder`なviewをサブビューに持つ`UIT
【Laravel】App Store Connect API からiOSアプリの売上レポートを取得する
# はじめに
自分で作ったiOSアプリのダウンロード数などが知りたい場合、以下の2つの方法で確認することができます。
1. App Store Connectにアクセスし、ブラウザ上で可視化された情報を確認する
1. App Store Connect API を叩き、データとして取得する本記事では、iOSアプリの新規ダウンロード数を算出することを想定し、2番のApp Store Connect API経由でSales and Trendsレポートを取得する方法を紹介します。
# 準備
※ Laravelのプロジェクトが立ち上げ済みであることを前提に話を進めます
## JWT生成ライブラリのインストール
App Store Connect API の認証には、__JWT__(Json Web Token)が必要となります。
今回はLaravelでの実装のため、PHPでJWTを生成できるライブラリである`PHP-JWT`を使用します。(https://github.com/firebase/php-jwt)上記リンクのREADMEにもあるように、composerでインス
【挑戦者求ム】ダイエットを自動化してみた
##太りますよね 。。。 冬
運動量も落ちるし、「服で体型を隠せるボーナス」も相まって。。。
落ちるのは運動量だけ ストレス&甘い物の誘惑 が減ることはありません。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f313739333434332f61656536313233342d346435662d666231392d306161642d3239356564356264383266632e706e6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1793443/4d715d1f-5068-3a1e-3689-f09013614dfe.png)
実は毎日していることがあります。体重を計って、スマホのメモに残しています。
時系列で把握でき、『甘い物食べたい!』の誘惑の時は、サッと見返せます。
IFTTTで業務改善 移動車両の発着時間を自動記録する
## 移動販売とは
私はとあるスーパーで、移動販売や無人店舗の新規開拓を担当しています。
地方では人口減少を背景に、コンビニや個人商店が閉店する事例が増え、
身近な買物場所を失う方が、年々増えているそうです。
高齢の方の、体力低下・免許返納も相まって、買物難民は増加の一途を辿っています。そんな中、**ご自宅前まで伺い、商品を販売する「移動販売」が好評**を頂いています。
車にぎっしり詰まった商品の中から、欲しいもの選び、自分でお会計する。
**通販ではなく「自分で商品を見て選び 自分で買いたい」**と話すお客さまはとても多い。
![123.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1793443/d579a59a-b86d-2d2e-f7d9-6f7bbd669e79.png)
便利さの裏側で、運行ルートの策定には、いつも運営側の悩みの種です。
近い順番に回ると効率的ですが、「月曜日は夕方家にいない」などニーズは多種多様
iPhoneで写真を撮ったらDropboxに自動保存されるようにする
IFTTTを使って、iPhoneで撮った写真が自動的にDropboxフォルダに保存される仕組みを作りました。
IFTTTのExploreの中にも「iPhoneのスクリーンショットをGoogle Driveに自動保存する」というものがあり、簡単に実装できるかと思ったら一手間必要だったので記事にしています。
#手順
https://ifttt.com/
こちら、IFTTTのサイトから新たなAppletを作ります。
上の「If This」で複数あるサービスから「iOS Photos」を選び、今回は背面カメラで撮った写真を自動保存するようにしたかったので「New photo with the rear camera」を選びました。
次に、「Then that」では、複数サービスから「Dropbox」を選び、「add file from URL」を選択。
ここで「Creat action」を選びAppletを作れば、iPhoneの背面カメラで撮った写真が自動的にDropboxに保存されるようになります。
![スクリーンショット 2021-11-17 12.41.28.png](htt
「お前のアプリ、ク◯アプリ」に立ち向かい完全勝利した話
「お前のアプリ、ク◯アプリ」
毎日毎日悩んで考え抜いてやっとの思いで作ったアプリに対して、
こんな事言われたらとても悲しくなりますよね。しかも、言った相手がアプリの承認権を持つ相手だったら、絶望しかありません。
AppStoreへのアプリの申請では、「お前のアプリ、ク◯アプリ」と言われるのと同等のリジェクト理由が存在します。
それが、**Guideline 4.2 – Design – Minimum Functionality**です。本記事では、Minimum Functionalityでリジェクトされた際の解消法を、
経験談ベースで記載します。結論を先に述べると、
大事なのは、**なぜMinimum Functionalityかを考えること**です。##「ク◯アプリ」との戦いの記録
###申請したアプリ
今回申請したアプリはこちらです。Apple WatchでSafariブラウザ相当の機能を使う方法(ショートカットアプリ経由)
# はじめに
Apple Watchでブラウザが使えたらなぁ・・・。
iOS14の時はショートカットアプリを使えば出来ていたのだけど、iOS15にバージョンアップして使えなくなっていて諦めていました。
でもきちんとショートカットの内容を確認したら、出来るようになりました。# 動作環境
– iPhone8 Plus
– iOS15.1
– Apple Watch Series 6
– WatchOS 8.1(19R570)# 期待する結果
実用性は微妙ですが、Apple Watchでブラウザが使えます。
ショートカットアプリ経由でですが、ちょっとした確認がスマホを取り出さなくても出来るのは、良いことですよね。![E970CC1D-C7BC-4919-903F-AAF6E01D95F8_4_5005_c.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/150734/26b7ae4c-5c3d-d0b1-c186-06c85343bd0a.jpeg)
# 実験内容
ショートカット
Azure AD による モバイルアプリのデバイス証明書認証の実現方法
#はじめに
本記事では、モバイルアプリ(iOS または Android ネイティブアプリ)の証明書認証連携時の注意点とその対応方法をご説明いたします。
現在、大変多くの モバイル SaaS アプリケーションが Apple AppStore や Google Play ストアから提供されており、その中にはビジネスアプリも多数存在しています。ビジネスアプリを企業で利用する場合、セキュリティを考慮する必要があり、組織で管理されたデバイスのみに利用を制限することが多くの企業で求められます。このデバイス制限のセキュリティポリシーの実現方法として Azure Active Directory (Azure AD)の条件付きアクセスポリシーがあります。Microsoft Intune(Microsoft Endpoint Manager)で管理された準拠デバイスのみ SaaS アプリのアクセスを許可することが可能です。しかしながらこの方法を **Microsoft(Office 365アプリ等) 以外のモバイルアプリで実施する場合、注意点があります**。
※ちなみに、Microsoft のモバ
不足しているオプションの dSYM をアップロードする(iOS)(Firebase)
# 不足しているオプションのdSYMをアップロードする
## はじめに
自分は「dSYMをアップロードする」で警告が出て失敗したのでこの記事を書いています。
Firebaseのドキュメントに詳しい内容は載っていますので、他に気になることがあるときはドキュメントをご覧ください。
[Firebase Crashlytics SDK を使用して難読化解除されたクラッシュ レポートを取得する](https://firebase.google.com/docs/crashlytics/get-deobfuscated-reports?platform=ios&authuser=0)## 失敗原因
ドキュメントからコピペしたコードを使用してターミナルを操作したため、失敗した。
フォントが違っていたっぽい。## 解決方法
ファイルをドラッグアンドドロップで絶対パスを入力
オプションはしっかりキーボードで入力
で解決できました。## dSYM を見つける
dSYMを見つける方法として二つの方法があります。
1. App Store からビットコードの dSYM をダウンロードする
2.
CollectionViewでSectionがあるときにDrag & Dropで困ること
UICollectionViewのCellをDrag&Dropで動かした方法(Sectionまたぎ有)についてまとめておきます。
イメージとしてはiOSのホーム画面でAppの配置を動かすようなものです。
UITableViewについては割に資料があったのですが、CollectionViewについては「同じように・・・」と端折られてることが多く、色々調べて試しながら進みました。前提となるCollectionViewは以下で作成したものです
https://qiita.com/fumi2mi/items/56cbe24cc20f9ed02f50
## Drag and Dropの実装
delegate設定“`swift
class ViewController: UIViewController {
…
【無料】Android, iOS を自動判定するURLリンク(QRコード)を作る。OS別のサイトに飛ばす。
一つのリンクで、OS判定して、
* iOS
* AppStoreリンクへ。
* Android
* GooglePlayリンクへ。
* 他OS(Windows,Mac OSなど)
* 公式サイトリンクへ。飛ぶようなリンク(もっと言えばQRコード)が欲しい!
とのことで、「無料」で制作してみました。https://kaedeee.com/android-ios-one-qr/
こんな感じです。
https://games.kaedeee.comQRはこれ
![qr.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1900756/c799fd06-5b22-92dc-decf-7acf921630d0.png)
ちなみに、既にあるツールとして、4つご紹介しますが、個人開発者としては、どれも一長一短という感じ。
お先にその4つをご紹介いたします。
#既存ツール#One Link
https://onelink.to![スクリーンショット 2021-11-1
【iOS】simulatorで+(プラス)を入力する。
`Shift + ^`
シミュレータでメールアドレスのエイリアス用のプラスを打ちたかった際に見つけられず
キーボードを片っ端から打って見つけました。@(アットマーク)はこちら。
https://qiita.com/Kyohei_s/items/7f4e15440e74c7f6afda
SwiftでISO8601形式の期間の文字列表現を扱う
SwiftでISO8601形式の期間の文字列表現を扱います。
# ISO8601形式の期間
ISO8601では期間を示す形式の文字列が存在します。
https://ja.wikipedia.org/wiki/ISO_8601#期間次のような文字列は、2021年10月1日12時から2021年12月31日15時の期間を示す文字列になります。
`2021-10-01T12:00:00+09:00/2021-12-31T15:00:00+09:00`これを、Swiftで扱えるようにします。
# DateIntervalに変換する
FoundationにDateIntervalというクラスが含まれます。https://developer.apple.com/documentation/foundation/dateinterval
これはstartからendまでの特定の期間を示すクラスです。
このクラスには`contains`などの便利なfunctionがあり、特定の日付が期間に含まれているかを簡単に調べることができます。
ですので、期間文字列をDateIntervalに変換す