2020年4月以降のiOSアプリ申請について

2020年4月以降からは、 App Storeに提出されるすべてのiOSアプリは、iOS 13 SDK以降でビルドする必要があります。詳しくは、[App StoreにAppを提出する](https://developer.apple.com/jp/ios/submit/)を参照してください。

「App StoreにAppを提出する」には記載されていませんが、「WWDC 2019」で以下の要件が発表されています。

・ Adopt Launch StoryBoards
・ Support any size
・ Support Split Screen Multitasking

詳しくは、[Modernizing Your UI for iOS 13 - WWDC 2019 - Videos - Apple Developer](https://developer.apple.com/videos/play/wwdc2019/224/) を参照していください。


# iOS 13 SDK以降でビルドする

iOS 13 SDK以降でビルドする場合は、Xcode 11系でビルドを行う必要があります。Monacaでは、Cordova 9.0プロジェクトを使用することで、Xcode 11系でビルドを行うことができます。

MonacaクラウドIDEから新規でプロジェクトを作成した場合は、Xcodeの標準設定は `Xcode 11.3` に設定されています。

既存のCordovaプロジェクトの場合は、MonacaクラウドIDEのメニューにある

ビルド > ビルド環境の設定 > Xcode

から、`Xcode 11.3` を選択して、`保存` ボタンをクリックすることで、対象プロジェクトをiOS 13 SDK以降でビルドすることが可能になります。


# Adopt Launch StoryBoards 対応

Monacaプロジェクトで `Launch StoryBoard` に対応する場合は、MonacaクラウドIDEのメニューにある

設定 > iOSアプリ設定 > スプラッシュスクリーン > オートリサイズモード

を選択し、対応した画像を設定することで、StoryBoard に対応することができます。


# Support any size 対応

any size（全ての画面サイズ）に対応する場合は、[Adopt Launch StoryBoards 対応](#adopt-launch-storyboards-対応) の設定を行うことで対応することができます。


# Support Split Screen Multitasking 対応

アプリの対象に `iPad` が含まれている場合は、マルチタスクでのスプリットスクリーンに対応する必要があります。

Cordova 9.0のiOSアプリの標準設定では、フルスクリーン設定になっているため、スプリットスクリーンには対応していません。スプリットスクリーンに対応する場合は、config.xmlに下記の設定が必要になります。

```xml:config.xml
<platform name="ios">
  <edit-config file="*-Info.plist" mode="merge" target="UIRequiresFullScreen">
    <string>false</string>
  </edit-config>
</platform>
```

次に、[Adopt Launch StoryBoards 対応](#adopt-launch-storyboards-対応) の設定を行い、Device Orientationを全ての方向に対応させます。Device Orientationを全ての方向に対応させる場合は、concig.xmlに下記の設定を行います。

```xml:config.xml
<platform name="ios">
  <preference name="orientation" value="all"/>
</platform>
```

# WKWebView 対応

2019年12月23日に発表された情報では、2020年4月以降、新規でアプリを提出する場合は、WKWebView対応が必須になるようです。既存のアプリでは、2020年12月以降にアプリを更新する場合は、WKWebViewに対応する必要があるようです。詳しくは、[Updating Apps that Use Web Views](https://developer.apple.com/news/?id=12232019b)を参照してください。

~~2020年1月26現在のMonacaで使用されているCordova 9.0のiOSプラットフォームのバージョンは、`5.0.1` になります。~~

WKWebView対応を行うためには、`iOSプラットフォーム 5.1.1` を使用する必要があります。

Monacaでは、Cordova 9.0プロジェクトを使用することで、iOSプラットフォーム 5.1.1 を使用してビルドを行うことができます。

Cordova 9.0プロジェクトで iOSプラットフォーム 5.1.1 を使用する場合は、MonacaクラウドIDEのメニューにある

ビルド > ビルド環境の設定 > Platform

から、`iOS 5.1.1` を選択して、`保存` ボタンをクリックすることで、対象プロジェクトを iOSプラットフォーム 5.1.1  でビルドすることが可能になります。

次に、MonacaクラウドIDEのメニューにある

設定 > Cordovaプラグインの管理

から、[cordova-plugin-wkwebview-engine](https://github.com/apache/cordova-plugin-wkwebview-engine) をインポートします。

iOSプラットフォーム 5.1.1 の設定を行い、[cordova-plugin-wkwebview-engine](https://github.com/apache/cordova-plugin-wkwebview-engine) をインポートしたら、下記の設定例のようにconfig.xmlに設定を行います。

```xml:config.xml（設定例）
<platform name="ios">
  <preference name="WKWebViewOnly" value="true" />

  <feature name="CDVWKWebViewEngine">
    <param name="ios-package" value="CDVWKWebViewEngine" />
  </feature>
  <preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" />
</platform>
```

これまでのUIWebViewとWKWebViewでは仕様が異なるため、UIWebViewからWKWebViewへ変更した際に、アプリの動作に違いが生じる場合があります。

現在開発中のアプリでWKWebViewを使用していない場合は、[cordova-plugin-wkwebview-engine](https://github.com/apache/cordova-plugin-wkwebview-engine) を使用して、WKWebView対応が必須になる前に、事前に動作確認を行う必要があります。


# おわりに

App StoreへiOSアプリを提出する際の必要要件は、定期的に更新されます。対象のアプリが必要要件を満たしているか、一度、確認してみてください。