作成者別アーカイブ: BlackField

iPhone X モック画像10面

iPhoneXs MAX対応が必須になりますね。
3月27日以降、iOSアプリはiPhone XS Maxと12.9インチiPad Pro(2018)のサポート必須に – Engadget 日本版

だからというわけではないですが、iPhone X モック画像10面を作りました。
iPhone X モック画像10面

デザインなどにはあると便利ですよね。
こんな感じで使ってます。
iPhone X モック画像10面

ダウンロードはこちら

【Swift4】レビューのリクエストをする。

アプリを使っていると時々突然にアプリの評価を求められることがある。
あれって結構便利ですね。

apple純正で簡単に追加できるので利用してみた。

参考サイト。
SKStoreReviewController まとめ – Qiita

基本的な使い方は、適当なタイミングで

これだけで良いらしい。

ただ、
・年に3回までしか表示されない。
・3回に満たないときは呼ばれたらほぼ必ず表示される。
らしい。

なので適当なタイミングで呼ばれるように考えてみた。

100回呼ばれるごとにSKStoreReviewControllerを呼び出す。
但し、最初はしばらく使った30回目くらいでレビューをリクエストしたいので初期値を70にする。
これをviewDidLoadあたりに入れておけば、一日一回起動するなら年に3回程度になるかなという計算。

まあべんりだ。

【Swift4】【AdMob】【Stack View】広告を消したり表示したりする。

Stack Viewを使うと広告が表示されないときの処理が便利だった。
Stack Viewについては以前に書いたページを参照。
【Swift4】縦長のスクロール画面をscrollViewとstackViewを使って作る。
【Swift4】UITableViewの基本のき。

スクロールビューにスタックビューを入れていたり、高さの制限をかけていないビュー(テーブルビュー等)と一緒にスタックビューを使っていると、バナービューをisHiddenにすると綺麗にトルツメされるのですごく便利。

バナービューの状態の取得などについては下記サイトを参照。
バナー広告  |  iOS  |  Google Developers

GADBannerViewDelegateと、
bannerView.delegate = selfを、
設定しておけば広告リクエストの状態が受け取れます。
それを利用してバナービューの表示非表示を決めます。

先に、Storyboardでバナービューのishiddenにチェックを入れておくと広告を受け取った時点でバナービューが表示されます。

以下サンプルコード。

【Swift4】【Firebase】【AdMob】と【Analytics】(4) AdMobを設定。

前々々回
【Swift4】と【cocoaPods】で【Firebase】の【adMob】と【Analytics】をインストール | iPhoneアプリ備忘録
前々回
【Swift4】【Firebase】のプロジェクトを作成。【adMob】と【Analytics】の準備。 | iPhoneアプリ備忘録
前回
【Swift4】【AdMob】で新しいアプリIDとユニットIDを取得する。 | iPhoneアプリ備忘録
からの続きでAdMobを設置します。

今回はバナーを作成。
テスト用のアプリIDとユニットIDを使用します。

参考サイト
バナー広告  |  iOS  |  Google Developers

StoryboardでViewを配置して
①サイズを幅320高さ50に設定。
【Swift4】【Firebase】【AdMob】と【Analytics】(4) AdMobを設定。
【Swift4】【Firebase】【AdMob】と【Analytics】(4) AdMobを設定。

②Aspect Ratioにちぇっく。
③④下と左右に0ポイントでConstraint
【Swift4】【Firebase】【AdMob】と【Analytics】(4) AdMobを設定。

これで、320:50の比率でのバナーで画面の真下につくサイズのビューができる。
【Swift4】【Firebase】【AdMob】と【Analytics】(4) AdMobを設定。

このビューを選択し、identify Inspector で、Custom ClassのGADBannerViewを選択する。
【Swift4】【Firebase】【AdMob】と【Analytics】(4) AdMobを設定。

これをViewControllerに接続すると、

とゆーかたちでアウトレット接続ができる。

あとはFirebaseをインポートして、
ユニットIDを設定して、
rootViewControllerに接続して、
広告をロード(リクエスト)したら、
広告が表示される。

コードはこんな感じ。

アプリを起動するとこんな感じ。
【Swift4】【Firebase】【AdMob】と【Analytics】(4) AdMobを設定。

delegateの設定やらさらに便利な使い方もあるけど、基本はここまで。
うじゃうじゃ。

【Swift4】【Firebase】【AdMob】と【Analytics】(3) AdMob用に新しいアプリIDとユニットIDを取得する。

前々回
【Swift4】と【cocoaPods】で【Firebase】の【adMob】と【Analytics】をインストール | iPhoneアプリ備忘録
前回
【Swift4】【Firebase】のプロジェクトを作成。【adMob】と【Analytics】の準備。 | iPhoneアプリ備忘録
からの続きでAdMobのアプリIDとユニットIDを取得します。

AdMobはアプリごと、広告枠ごとにIDをつくって使用します。
そのやり方。

まずAdMobのアプリのページに行く。
Google AdMob

アプリを追加を選択。
【Swift4】【Firebase】【AdMob】と【Analytics】(3) AdMob用に新しいアプリIDとユニットIDを取得する。

公開済みかを選択。
まだならまだで大丈夫。
【Swift4】【Firebase】【AdMob】と【Analytics】(3) AdMob用に新しいアプリIDとユニットIDを取得する。

アプリ名とプラットフォームを選択。
 【Swift4】【Firebase】【AdMob】と【Analytics】(3) AdMob用に新しいアプリIDとユニットIDを取得する。

アプリがAdMobに追加されました。
【Swift4】【Firebase】【AdMob】と【Analytics】(3) AdMob用に新しいアプリIDとユニットIDを取得する。

次の広告ユニットを作成に進みます。
まずは広告フォーマットを選びます。とりあえずバナーで。
【Swift4】【Firebase】【AdMob】と【Analytics】(3) AdMob用に新しいアプリIDとユニットIDを取得する。

広告ユニットを設定します。
ユニット名はアプリ名も含めたほうがわかりやすいかも。
詳細設定も気になるようならいじります。
【Swift4】【Firebase】【AdMob】と【Analytics】(3) AdMob用に新しいアプリIDとユニットIDを取得する。

これでアプリIDとユニットIDが完成です。
【Swift4】【Firebase】【AdMob】と【Analytics】(3) AdMob用に新しいアプリIDとユニットIDを取得する。

スタートガイド  |  iOS  |  Google Developersを参考に設定しましょう。

【Swift4】【Firebase】【AdMob】と【Analytics】(2) 準備。プロジェクトを作成。

iPhoneアプリにFirebaseのAnalyticsとadmobを入れるために、firebase上でiPhoneアプリのプロジェクトを作成する。

前提としてFirebaseにログインできていること。
まずはFirebaseのコンソールでプロジェクトを追加します。
プロジェクトとアプリが連携できると自動でアナリティクスが開始されるようです。
Firebase console

↑Firebaseコンソールでプロジェクトを追加を選択。
【Swift4】【Firebase】【AdMob】と【Analytics】(2) 準備。プロジェクトを作成。

iosを選択
【Swift4】【Firebase】【AdMob】と【Analytics】(2) 準備。プロジェクトを作成。

アプリのバンドルIDを入力
【Swift4】【Firebase】【AdMob】と【Analytics】(2) 準備。プロジェクトを作成。

GoogleService-Info.plistが作成されるのでダウンロードしてXcodeプロジェクトに追加。
【Swift4】【Firebase】【AdMob】と【Analytics】(2) 準備。プロジェクトを作成。
copy item if neededを選びましょう。
【Swift4】【Firebase】【AdMob】と【Analytics】(2) 準備。プロジェクトを作成。

cocoapodを使ってfirebase SDKを導入する。
この辺は前回やったやつ。
【Swift4】【Firebase】【AdMob】と【Analytics】(2) 準備。プロジェクトを作成。

AppDelegateにコードを追加して接続。
【Swift4】【Firebase】【AdMob】と【Analytics】(2) 準備。プロジェクトを作成。

アプリを起動して接続が確認されると、
【Swift4】【Firebase】【AdMob】と【Analytics】(2) 準備。プロジェクトを作成。
ここが、
【Swift4】【Firebase】【AdMob】と【Analytics】(2) 準備。プロジェクトを作成。
こうなる。

これでFirebaseとの接続が完了してAnalyticsが確認できるようになる。

【Swift4】【Firebase】【AdMob】と【Analytics】(1) SDKを【cocoaPods】でインストール

【cocoapods】たまにしか使わないのですぐにわからなくなる。/(^o^)\ | iPhoneアプリ備忘録
前回↑から引き続きFirebaseのadMobを入れていきます。

参考サイト
iOS 用 Firebase 向け Google アナリティクスを使ってみる  |  Firebase
スタートガイド  |  Firebase

ってゆーかよく見直したらSwift3で似たような記事書いてる。/(^o^)\
【Swift3】と【cocoaPods】と【Firebase】と【adMob】 | iPhoneアプリ備忘録

ただこのあとにpodfileの書き方が変わってる。
【CocoaPods】Podfileの書き方が変わっていた。 | iPhoneアプリ備忘録

それらを参考にPodFileを書き換えます。

pod ‘Firebase/Core’
pod ‘Firebase/AdMob’
上記を追加しています。

で、保存したあとターミナルからインストールします。
Podfileのあるディレクトリを間違えないようにね。
で、

結果↓

とゆーことでFirebaseとAdMobが入りました。

xcodeでプロジェクトを開くときは、.xcodeprojファイルではなく、
新しく作られた.xcworkspaceファイルを開くことを間違えないようにしましょう。

【Swift4】UNUserNotificationCenterで通知が出ない。

以前の投稿で5秒後に通知を出すというところまでやった。
【Swift4】【Objective-C】UNUserNotificationCenterで通知の許可をもらう。 | iPhoneアプリ備忘録

しかし、現在時刻を取得して5秒後の時刻に鳴るようにしても通知が来ない。
なのでいろいろ試してみた。

まずは前回の復習から。
AppDelegateでゴニョゴニョしてViewControllerで前回も書いた5秒後に通知のコードを書いて、
未通知を呼び出すコードを書いてみる。

これを走らせるとデバッグエリアに通知の設定が表示されて5秒後に通知が出る。

今度はトリガーをインターバルのUNTimeIntervalNotificationTriggerから
カレンダーのUNCalendarNotificationTriggerで、現在時刻をDate()で取得し5秒後を指定してみる。
コードはこんな感じ。

これを走らせると、下記の通り。

dateComponentsの内容だけで、ノーティフィケーションは表示されず通知も出なかった。
特にXcodeでエラーも出てないのにノーティフィケーションに登録されなかったようだ。

let date = Date() から取ってくるのではなく、
dateComponentsを指定すると通るので、dateComponentsの何かが悪さしているっぽいのでいろいろとnilを入れて試してみた。

var dateComponents = DateComponents()
dateComponents = Calendar.current.dateComponents(in: TimeZone.current, from:Date() + 5)
// dateComponents.calendar = nil
// dateComponents.timeZone = nil
// dateComponents.era = nil
// dateComponents.year = nil
// dateComponents.weekday = nil
// dateComponents.yearForWeekOfYear = nil
// dateComponents.weekOfYear = nil
// dateComponents.weekOfMonth = nil
// dateComponents.weekdayOrdinal = nil
dateComponents.quarter = nil
print(“でーとこんぽーねんつ”,dateComponents)

結果、dateComponents.quarter が入ってると駄目なようだ。
これで一日費やした。/(^o^)\

オマケ。
アラームに使うために.quarterと秒数を取った日付の取り方。

参考サイト
DateComponentsの各要素について調べてみた – Swiftをはじめよう!

【Swift4】UITableViewで常時並べ替え可能にする。

参考サイト
UITableViewで常にCellの並び替え(ソート)ができるようにする – Qiita
UITableViewのデリゲートメソッドまとめ – Qiita

viewDidLoadに下記を追加して常時編集状態にする。
tableView.isEditing = true
tableView.allowsSelectionDuringEditing = true

並べ替え可能にするメソッド。
func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool {
return true
}

並べ替え結果を処理するメソッド。
func tableView(_ tableView: UITableView, moveRowAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) {
// TODO: 入れ替え時の処理を実装する(データ制御など)
}

編集状態の見た目を編集する。
//左側の+やーを表示
func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCell.EditingStyle {
return .none //表示させない。
}
//編集モード時に左にずれるか。
func tableView(_ tableView: UITableView, shouldIndentWhileEditingRowAt indexPath: IndexPath) -> Bool {
return false //ずれない。
}

これらを前回の記事
【Swift4】UITableViewの基本のき。 | iPhoneアプリ備忘録
に適用すると。

起動すると
【Swift4】UITableViewで常時並べ替え可能にする。
この様な感じでいつでも並べ替え可能になる。

【Swift4】UITableViewの基本のき。

UITableViewをよく使います。そんなとき、Master-DetailやNavigationControllerを使うとある程度最初から組んであるのですが、もうちょっと柔軟性が欲しい時や自分の後学のため、備忘録です。

参考サイトはこちら。
5分でUITableViewを作ってみる。 – Qiita

まず、Storyboardでテーブルビューの準備から。
利便性のためナビゲーションコントローラーを使います。(笑)
【Swift4】UITableViewの基本のき。

でも、ルートビューコントローラーがよくわからないので右側のビューを削除します。(笑)
【Swift4】UITableViewの基本のき。

で、普通のビューコントローラーを置いてroot view controllerでつなぎます。(笑)
Projectを作った最初のViewを使っても良いです。それなら.swiftふぁいるもついてるしね。
【Swift4】UITableViewの基本のき。
【Swift4】UITableViewの基本のき。
【Swift4】UITableViewの基本のき。

そうするとナビゲーションバー付きのビューになります。(笑)
【Swift4】UITableViewの基本のき。

ここにさらに使い勝手を良くするためにVertical stack Viewを追加し、上下左右のマージンを0にします。
【Swift4】UITableViewの基本のき。

更にその中にUITableViewを放り込むと上下左右ピタッとくっつき、ついでにTableViewCellをいれるととりあえずテーブルビューの完成。
【Swift4】UITableViewの基本のき。

こうしておくとナビゲーション付きの子ビューも作りやすいし、テーブルビューの上下に検索窓やボタン、広告類なども設置しやすくなります。
.isHiddenを使えば隙間をテーブルビューが埋めてくれます。

ついで、セルはidentifierにCellと設定。
【Swift4】UITableViewの基本のき。

セルの中に一つUILabelを入れて四方を0のConstraintで設定。その際、Tagを1に設定。
【Swift4】UITableViewの基本のき。

Storyboardの準備はこんな感じかな。

さて、やっとコードのキホンのキです。
まずはStoryboardのUITableviewをoutlet接続しておきます。
ついでに簡単な配列も作っておきます。

テーブルビューに必須のメソッドを書いていきます。
まずはセクションを返すもの。とりあえず1かな。

セルの数。テーブルビューに入れる配列の数だけ。

セル本体の設定をします。

最後にdelegateとdataSourceの設定をします。
クラスの宣言のところで、
, UITableViewDelegate, UITableViewDataSource
と、viewDidLoadで、
tableView.delegate = self
tableView.dataSource = self
を追加します。

これでテーブルビューが表示されます。
【Swift4】UITableViewの基本のき。