iOSアプリの公開手順まとめ 2024年度版 4日目(アップロード、リジェクト対応など)

アップル信者<br>

4日目は、
アプリのアップロード
について解説します。

アップル信者<br>

審査で3回リジェクトされ、4つの問題をクリアして審査4回目で通りました。実際の内容を書きましたので、参考にしてください。

前回、3日目に解説した、アプリの概要、プライバシーなどの手続きは以下のページから確認ください。

次回、5日目に解説する、AdMobの実装の手続きは以下のページから確認ください。

目次

アプリのアップロード

1. アップロード1回目

App Store Connectへの登録が終わり、いよいよアプリのコードをApp Store Connectへアップロードしていきます。

STEP
(重要)AdMob広告をTest広告から本番広告に切り替える

ここまではAdMob広告をTest広告のしていましたが、本番広告に切り替える必要があります

STEP
デバイスを選択
  • Xcodeを開く
  • Simulator「Any iOS Device (arm64)」を選択
STEP
「Product」メニューから「Archive」を選択

以下の画面が表示されるまでに少し時間がかかる。

STEP
右上の「Distribute App」をクリック

「App Store Connect」を選択し、「Distribute」をクリック

STEP
問題がない場合は、以下の画面が表示される

この後、以下のタイトルのメールが届きます。

STEP
App Store Connect でビルド追加

ビルドの「+」をクリック

「完了」をクリック

「管理」をクリック

「上記のアルゴリズムのどれでもない」を選択し、「保存」をクリック

STEP
AdMob広告を本番広告からTest広告に切り替える

これは、アプリの公開とは直接関係ありません。

私は、この時点でTest広告に戻しておくことで、誤って本番広告を表示するリスクを軽減しています。

2. アップロード1回目-2(審査前にミスが見つかった)

アプリをアップロード後にプログラムミスが見つかったため、再アップロードすることになった。

ちなみに、審査前の状態です。

STEP
AdMob広告をTest広告から本番広告に切り替える
STEP
アプリのビルドバージョンを上げる(ver1.0 →1.01)
STEP
デバイスを選択
  • Xcodeを開く
  • Simulator「Any iOS Device (arm64)」を選択
STEP
「Product」メニューから「Archive」を選択

以下の画面が表示されるまでに少し時間がかかる。

ビルドバージョンが1.01であることを確認する。

STEP
右上の「Distribute App」をクリック

「App Store Connect」を選択し、「Distribute」をクリック

この後、以下のタイトルのメールが届きます。

STEP
AppStoreConnectでビルドバージョン1.0の取り消し

「-」をクリックして、バージョン1.0を取り消す

STEP
App Store Connect でビルド追加

ビルドの「+」をクリック

バージョン1.1を選択し。「完了」をクリック

「管理」をクリック

「上記のアルゴリズムのどれでもない」を選択し、「保存」をクリック

3. 審査に提出1回目

STEP
審査用に追加をクリック
STEP
「審査用に追加できません」のエラー対応
STEP
プライバシーポリシーURLを入力

「英語(アメリカ)」が未入力のため入力

STEP
価格セクションで価格帯を選択

「価格を追加」をクリック

価格0.00ドルを選択し、「次へ」をクリック

「次へ」をクリック

「確認をクリック」

STEP
アプリの配信状況を入力

「配信状況の設定」をクリック

「特定の国または地域」を選択し、「次へ」をクリック

「米国」「日本」を選択し、「次へ」をクリック

「確認」をクリック

STEP
再度、「審査用に追加」をクリック

エラーが解消されたようです。

「App Reviewに提出」をクリック

STEP
審査待ち

審査提出後、リジェクト対応

1. リジェクト対応1回目 →審査に提出2回目

審査提出後、以下の内容のメールを受領した。

問題1 Guideline 2.1 – Information Needed

これは、アプリ内課金のコードを非表示にしていることが原因でした。審査提出前に表示するのを忘れていたという単純なミス。

問題2 Guideline 5.1.1 – Legal – Privacy – Data Collection and Storage

「PrivacyWeather」が適切に多言語変換できていませんでした。

InfoPlist.stringsを以下の通り、修正しました。

InfoPlist.strings

InfoPlist.strings(English)

"NSHealthShareUsageDescription" = "This app accesses health data to display information such as your step count and walking distance.";
"NSHealthUpdateUsageDescription" = "This app accesses health data to store information such as your step count and walking distance.";
"NSLocationWhenInUseUsageDescription" = "This app requires your location information to provide weather information.";

InfoPlist.strings(Japanese)

"NSHealthShareUsageDescription" = "このアプリは、あなたの歩数や歩行距離などの健康データを表示するために健康データにアクセスします。";
"NSHealthUpdateUsageDescription" = "このアプリは、あなたの歩数や歩行距離などの健康データを保存するために健康データにアクセスします。";
"NSLocationWhenInUseUsageDescription" = "このアプリは、天気情報を提供するためにあなたの位置情報が必要です。";

以下の通り、今度は適切に多言語変換できました。

Appleに以下の通り、返信し、再度審査に提出しました。

2. リジェクト対応2回目 →審査に提出3回目

審査再提出後、以下の内容のメールを受領した。

問題3:Guideline 5.1.2 – Legal – Privacy – Data Use and Sharing

以下の対応をしました。

対応1:info.plistの追記

<key>NSUserTrackingUsageDescription</key>

<string>「許可」されると、あなたに最適化された広告が表示されます。</string>

対応2:バナー広告のコード修正
// App Tracking Transparencyのステータスに基づいて広告リクエストを作成
        if #available(iOS 14, *) {
            ATTrackingManager.requestTrackingAuthorization { status in
                DispatchQueue.main.async {
                    let request = GADRequest()
                    request.scene = viewController.view.window?.windowScene
                    switch status {
                    case .authorized:
                        print("AdBanner case .authorized:")
                        // ユーザーが追跡を許可している場合、パーソナライズされた広告をリクエスト
                        bannerView.load(request)
                    default:
                        // ユーザーが追跡を許可していない場合、一般的な広告をリクエスト
                        print("AdBanner case default:")
                        bannerView.load(request)
                    }
                }
            }
        } else {
            // iOS 14未満の場合、一般的な広告をリクエスト
            DispatchQueue.main.async {
                let request = GADRequest()
                bannerView.load(request)
            }
        }
参考にした投稿

3. リジェクト対応3回目 →審査に提出4回目

審査再提出後、以下の内容のメールを受領した。

問題4:Guideline 2.1 – Information Needed

以下の回答をApp Store Connectで返信しました。

I will answer your questions.

This app does not connect to medical hardware.
This app uses the HealthKit framework from Apple’s Health app to retrieve data such as heart rate, blood pressure, and blood sugar levels.

リリース後

以下のメールを受領すると、リリースされます。

この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次