LoginSignup
3
6

More than 3 years have passed since last update.

[iOS13] 既存アプリのiOS13対応でハマったこと(現在進行形)

Posted at

既存アプリのiOS13対応。楽勝かと思ったらアンドキュメントな罠が。。。

現在進行形な既存アプリのiOS13対応で、アンドキュメントな変更によりはまったところを、同じ状況な人のために残しておきます。

CoreBluetooth Peripheralの取れるタイミング

今までは、

objective-c
_centralManager = [[CBCentralManager alloc] initWithDelegate:self queue:nil];

の後に、

objective-c
[_centralManager retrievePeripheralsWithIdentifiers:identifiers];

で取れたんですが、(いや、実際には、取れるとは限らないんですが)
iOS13になってからは、ちゃんと

- (void)centralManagerDidUpdateState:(CBCentralManager *)central;

のイベントが通ってからでないと、ペリフェラル一覧が取得できなくなりました。
いや、そもそも前からそう書くのが正解のはずなんですが、僕のところに回されてきたプロジェクトの元のコードが、、、げふん

参考 https://www.jenx.si/2019/10/02/changed-bluetooth-initialization-on-ios13/

Settings.bundle 同名グループはダメ

これも暗黙のルールだったんでしょうが、、、
[iOS13] Settings.bundleのグループ名が重複すると設定アプリの内容が正しく設定されない

画面横向き(Landscape)の時はステータスバーを表示できない。

当然、prefersStatusBarHidden をセットしたり、info.plistで設定したり、古い書き方のAppDelegateで設定したり、回転時に表示させようとしたり、色々やってるんですが、横向き時にステータスバーを表示させることができません。Appleのdeveloper forumなんかでも同様の報告がありますが、現状最新ベータ版でも直ってません。うーむ、、、

モーダル表示画面の親。viewWillApearが呼ばれない。

モーダルビューの表示方法のデフォルトが変更された件で、みなさん「フルスクリーンに設定して表示の変更を回避」ってやってると思うので気がついてないと思いますが、裏に画面が見えてるということは、モーダル画面を閉じた時に親の「ViewWillApear」が呼ばれないのです。フルスクリーンにしない人は気を付けましょう。

以上、後半は昼休み終わりかけてダレたので、スクショもコードもありませんが!

3
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
6