iOS13対応をまとめてみた

# 前書き
対応が必要そうなものを探してまとめてみた。
正直身に降りかからないと細かい仕様までは分からないので、現状をまとめておいて判明次第追記していく。

# 今すぐ対応が必要

## UISerchBarの`value(forKey:)`メソッドが廃止された
必須か： 必須
内容：UIserchBarで`value(forKey:)`を使用しているとアプリクラッシュします
参考：https://qiita.com/ktanaka117/items/1a30c4c6052cd8e1a0b7

## Bluetooth利用にパーミッションが必須になった
必須か：必須
いつまでに対応すべきか：今すぐ
内容：位置情報等のパーミッション同様、設定しないまま機能を使おうとすると落ちる
参考：http://harumi.sakura.ne.jp/wordpress/2019/08/27/ios13%E3%81%8B%E3%82%89%E3%81%AEbluetooth%E3%83%91%E3%83%BC%E3%83%9F%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3/

## UISearchDisplayControllerがdeprecatedから完全廃止になった
必須か：必須
内容：UISearchDisplayControllerを使用しているとアプリクラッシュする
参考：https://github.com/mapbox/mapbox-gl-native/issues/15559

## Sign in with Apple
必須か：アプリによっては必須
いつまでに対応すべきか：新しいアプリは必須。既存アプリは2020年4月。
内容：サードパーティ製またはソーシャル（Facebook、Google、Twitter、LinkedIn、Amazon、WeChat）のログインサービスを使用している場合は、AppleIDでのサインイン対応必須。自社システムのみのログイン、もしくはそのサービス固有の機能を使う(Twitterならタイムライン取得が必要など)なら対応不要。
参考：https://developer.apple.com/app-store/review/guidelines/#sign-in-with-apple
https://qiita.com/_asa08_/items/4f6e383fc6c9d38046ed

## VoIPプッシュの仕様が変わった
必須か：必須
いつまでに対応すべきか：新しいアプリは必須。既存アプリは2020年4月。
内容：VoIPプッシュの利用が着信のみになるらしい
参考：https://developer.apple.com/documentation/pushkit/responding_to_voip_notifications_from_pushkit?language=objc
https://qiita.com/sunskysoft/items/34665541d9bec438ee36

## 2020年4月以降は全てのアプリでiOS13対応、Xcode11でのビルドが必須
必須か：必須
いつまでに対応すべきか：新しいアプリは必須。既存アプリは2020年4月。
内容：題名の通り
参考：https://developer.apple.com/news/?id=09102019a&1568158483

# 今後必須になりそうなもの

## ダークモード対応
必須か：準必須（いまのところ必須ではないが以後必須になる可能性が高い）
いつまでに対応すべきか：不明
参考：https://developer.apple.com/documentation/xcode/supporting_dark_mode_in_your_interface/choosing_a_specific_interface_style_for_your_ios_app?language=objc
https://qiita.com/p_on_ro/items/91e6659fda662fb2aac0
対応時の注意事項：https://qiita.com/tattn/items/c56b15ed8d1cea26a955

## UIWebViewがiOS13以降deprecatedになった
必須か：準必須
いつまでに対応すべきか：不明
内容：ドキュメントがdeprecatedになっている。代替UIは[WKWebView](https://developer.apple.com/documentation/webkit/wkwebview?language=objc)。
参考：https://developer.apple.com/documentation/uikit/views_and_controls?language=objc

# その他変更

## 遷移アニメーションの対応
必須か：オプション
いつまでに対応すべきか：必要に応じて
内容：遷移モードのデフォルト値が変更された。意図していない「戻る操作」が発生する可能性がある。
参考：https://qiita.com/yh_genephia/items/b82d4df36b4ef1fdcdd8

## システムフォントが変更された
必須か：オプション
いつまでに対応すべきか：必要に応じて
内容：boldがiOS12以前より太くなった。ラベル等がはみ出す・見切れる可能性がある。
参考：https://qiita.com/a_t/items/484f7ad52e8c9fd18903

## Realmが落ちることがある
必須か：オプション
いつまでに対応すべきか：必要に応じて
内容：iOS13のみエラーが発生することがあるとのこと。
参考：https://stackoverflow.com/questions/48810421/rlmexception-primary-key-property-serial-does-not-exist-on-object-book-mig

## スクロールビューのインジケータの仕様が変わった
必須か：オプション
いつまでに対応すべきか：必要に応じて
内容：Could not cast value of type ‘_UIScrollViewScrollIndicator’
参考：https://qiita.com/MilanistaDev/items/8151dd2544b2eda9353b

## 連続してNavigationViewControllerを表示するとNAvigationBarの高さがおかしくなる
必須か：オプション
いつまでに対応すべきか：必要に応じて
内容：題名の通り
参考：https://qiita.com/duke105/items/9a751062ba15c6fb9511

## Xcode11でプロジェクトを新規作成しターゲットをiOS12以前にするとエラーが盛りだくさん

必須か：必須
いつまでに対応すべきか：必要に応じて
内容：iOS13で登場したUIScene等が標準でつくられるため、古いターゲットを含めるとエラーになる
参考：[Xcode11で作成したプロジェクトを古いOSに対応させる(とりあえず版)](https://qiita.com/Hackenbacker/items/86e73f34b377ca415838)

## デバイストークンの取得方法が変わった
必須か：オプション
いつまでに対応すべきか：必要に応じて
内容：通知等で使用するトークンのNSDataの中身が変わっている
参考：https://qiita.com/naofumi_okano/items/6c983959ec2b3a4c8af5

---

## 追記

#### 2020/03/31 10:22
2020年4月までの期限が延長されました。
[Appのアップデート期限が延長されました（公式）](https://developer.apple.com/jp/news/?id=03262020b)