4日目は、
アプリのアップロード
について解説します。
審査で3回リジェクトされ、4つの問題をクリアして審査4回目で通りました。実際の内容を書きましたので、参考にしてください。
前回、3日目に解説した、アプリの概要、プライバシーなどの手続きは以下のページから確認ください。
次回、5日目に解説する、AdMobの実装の手続きは以下のページから確認ください。
アプリのアップロード
1. アップロード1回目
App Store Connectへの登録が終わり、いよいよアプリのコードをApp Store Connectへアップロードしていきます。
ここまではAdMob広告をTest広告のしていましたが、本番広告に切り替える必要があります。
- Xcodeを開く
- Simulator「Any iOS Device (arm64)」を選択
以下の画面が表示されるまでに少し時間がかかる。
「App Store Connect」を選択し、「Distribute」をクリック
この後、以下のタイトルのメールが届きます。
ビルドの「+」をクリック
「完了」をクリック
「管理」をクリック
「上記のアルゴリズムのどれでもない」を選択し、「保存」をクリック
これは、アプリの公開とは直接関係ありません。
2. アップロード1回目-2(審査前にミスが見つかった)
アプリをアップロード後にプログラムミスが見つかったため、再アップロードすることになった。
ちなみに、審査前の状態です。
- Xcodeを開く
- Simulator「Any iOS Device (arm64)」を選択
以下の画面が表示されるまでに少し時間がかかる。
ビルドバージョンが1.01であることを確認する。
「App Store Connect」を選択し、「Distribute」をクリック
この後、以下のタイトルのメールが届きます。
「-」をクリックして、バージョン1.0を取り消す
ビルドの「+」をクリック
バージョン1.1を選択し。「完了」をクリック
「管理」をクリック
「上記のアルゴリズムのどれでもない」を選択し、「保存」をクリック
3. 審査に提出1回目
「英語(アメリカ)」が未入力のため入力
「価格を追加」をクリック
価格0.00ドルを選択し、「次へ」をクリック
「次へ」をクリック
「確認をクリック」
「配信状況の設定」をクリック
「特定の国または地域」を選択し、「次へ」をクリック
「米国」「日本」を選択し、「次へ」をクリック
「確認」をクリック
エラーが解消されたようです。
「App Reviewに提出」をクリック
審査提出後、リジェクト対応
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(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
以下の対応をしました。
<key>NSUserTrackingUsageDescription</key>
<string>「許可」されると、あなたに最適化された広告が表示されます。</string>
// 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.
リリース後
以下のメールを受領すると、リリースされます。
コメント