なおさんのブログ

iOSエンジニアのブログのはずがいろいろ書いてます。

iOS15でNavigationBarとTabBarのカラーを変更する

はじめに

iOS14までは普通に動いていたのにiOS15だとNavigationBarとTabBarのカラーがおかしくなってしまったので調べてみました

NavigationBarについて

現行の書き方

UINavigationBar.appearance().barTintColor = .white

どうやらこの書き方ではダメのようです

iOS15以降ではUINavigationBarAppearanceを使って指定する必要があります

let appearance = UINavigationBarAppearance()
appearance.backgroundColor = .white
appearance.titileTextAttributes = [.foregroundColor: UIColor.black]  // タイトル文字色の変更する場合

UINavigationBar.appearance().standardAppearance = appearance
UINavigationBar.appearance().scrollEdgeAppearance = appearance

この書き方で正しく動作するようになりました

TabBarについて

TabBarのほうは特にカラーを変更するようなコードは書いてなかったんですがおかしくなりました。

iOS15では同様にUITabBarAppearanceを使って指定する必要があります

let appearance = UITabBarAppearance()
appearance.backgroundColor = .white
UITabBar.appearance().standardAppearance = appearance
UITabBar.appearance().scrollEdgeAppearance = appearance

結論

これで無事にiOS15でもNavigationBarとTabBarのカラーが正しく出るようになりました。 良かった。

参考資料

shtnkgm.com

横田バーチャル駅伝Tシャツ届きました

先日参加した横田バーチャル駅伝2021の参加賞のTシャツが届きました。 ひさびさの大会参加だったのでなんとなく嬉しいです。こういうのをもらえると大会に参加したって感じがします。

コロナ前よりかなり体力が落ちてしまってますが、また無理しない範囲でいろんな大会に参加できたらいいかな。 f:id:naohirotk:20210802181555j:plain

iOSのアプリ内課金を無償で公開する方法

はじめに

iOSのアプリ内課金コンテンツをプロモーションの観点から一時的に無償で公開したいケースがあります。 アプリで専用の仕組みを入れれば何かしらできるとは思うがもう少しスマートな方法がないものか。 調べてみるとAppStoreConnectに以下の機能があったので詳細を調べてみました。

  • プロモーションコードによる公開
  • お試しオファーによる公開
  • プロモーションオファーによる公開
  • オファーコードによる公開

プロモーションコードによる公開

アプリ内課金コンテンツに対してプロモーションコードを発行して、そのコードをユーザーに入力してもらうことにより購入したのと同様の状態にできる

  • アプリ内課金コンテンツに対して最大100個リセット、合計1,000個まで作成可能(利用可能数は1/1と7/1にリセット)
  • 非営利目的でのみ使用可能(コード自体が商材になる使い方は不可)

お試しオファーによる公開

アプリ内課金コンテンツに対してお試し期間を設定し、アプリ内課金コンテンツ購入者に購入直後から一定期間無償で利用させる

  • 無償期間後に自動で有償コンテンツに移行
  • 無償期間は1回のみ有効

プロモーションオファーによる公開

アプリ内課金コンテンツに対して、一定期間割引もしくは無償価格でアプリ内課金を購入できるようにする

  • 無償期間後に自動で有償コンテンツに移行
  • 対応するには別途アプリ側の実装が必要。プロモーションオファーとして購入処理を実行する必要がある

オファーコードによる公開

アプリ内課金コンテンツにに対してオファーコードを生成して、そのコードをユーザーに入力してもらうことにより購入したのと同様の状態にできる

  • 四半期ごとに最大150,000 のコードまで生成可能
  • アプリ内にコード入力画面を実装することも可能

比較

内容 プロモーションコード お試しオファー プロモーションオファー オファーコード
配布方法 コードの配布 課金コンテンツ購入 課金コンテンツ購入 コードの配布
配布数 100個まで 制限なし 制限なし 150,000個
用途 非営利目的のみ 一般ユーザー配布可 一般ユーザー配布可 一般ユーザー配布可
アプリ実装 不要 不要 必要 不要(実装すればアプリ内でコード入力も可)

結論

それぞれ制限事項は配布方法が違うため用途によって使い分けるのが良さそうかなと思います。

参考資料

backapp.co.jp tech.dely.jp https://help.apple.com/app-store-connect/#/deve1d49254f

Xcode で Signing Certificateがエラーになる問題への対応

はじめに

XcodeのSigningで警告が出るケースがあったため調査してみました。

基本は自動設定でOKのはずなんですが、以下の警告が

[App] has conflicting provisioning settings.
[App] is automatically signed for development, but a conflicting code signing identity Apple Distribution has been manually specified. Set the code signing identity value to "Apple Development" in the build settings editor, or switch to manual signing in the Signing & Capabilities editor.

結論

ネットでいろいろ調べてみましたが、警告メッセージにある通りcode signing identityApple DevelopmentにすればOKでした。 本番ビルド用だとApple DistributionにしたくなりますがSigningを自動設定にする場合はApple Developmentに設定する必要がありました。

そういうことか。

参考資料

blogger.tempus.org

横田バーチャル駅伝2021本日よりスタート

本日からスタートです。 バーチャルの大会は初参加なのでどうなるのでしょうか。

TATTAってアプリを使うらしいんですがAppleWatchとかRUNNETとかと連携してあとは走るだけでいいみたいです。 きちんと記録してくれるか不安。

最低10km走らないといけないらしいですが、週末天気の良い日が続くことを祈るばかりです。 yokota-ekiden.com