🍎 iOS/App Store Connect

[iOS] App Store 심사 리젝 λŒ€μ‘ (Guideline 4.0 - Design)

μ„ μ£Ό 2023. 6. 30. 11:20

νšŒμ›κ°€μž… 및 νšŒμ›νƒˆν‡΄λŠ” λͺ¨λ‘ μ•± λ‚΄μ—μ„œ μ²˜λ¦¬ν•΄μ•Ό ν•œλ‹€λŠ” λ‚΄μš©μ˜ λ¦¬μ μ΄μ—ˆμŠ΅λ‹ˆλ‹€.

 

μ €μ˜ 경우 νšŒμ›κ°€μž…κ³Ό νšŒμ›νƒˆν‡΄λ₯Ό λͺ¨λ‘ μ‚¬νŒŒλ¦¬ 앱을 μ—΄μ–΄ μ²˜λ¦¬ν•˜λ„λ‘ ν•˜κ³  μžˆμ—ˆμ–΄μ„œ

UXλ₯Ό ν•΄μΉœλ‹€λŠ” 이유둜 λ¦¬μ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

 

We noticed that the user is taken to the default web browser to sign in or register for an account, which provides a poor user experience.

 

Next Steps

 

To resolve this issue, please revise your app to enable users to sign in or register for an account in the app.

 

You may also choose to implement the Safari View Controller API to display web content within your app. The Safari View Controller allows the display of a URL and inspection of the certificate from an embedded browser in an app so that customers can verify the webpage URL and SSL certificate to confirm they are entering their sign in credentials into a legitimate page.

 

Resources

 

- For additional information on the Safari View Controller API, please review the What's New in Safari webpage.

- Note that apps that support account creation must also offer account deletion, per App Store Review Guideline 5.1.1(v). Learn more about offering account deletion in your app.

(λ²ˆμ—­)
μ‚¬μš©μžκ°€ κΈ°λ³Έ μ›Ή λΈŒλΌμš°μ €λ‘œ μ΄λ™ν•˜μ—¬ 계정에 λ‘œκ·ΈμΈν•˜κ±°λ‚˜ κ°€μž…ν•˜λ―€λ‘œ μ‚¬μš©μž ν™˜κ²½μ΄ μ’‹μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

Next Steps

이 문제λ₯Ό ν•΄κ²°ν•˜λ €λ©΄ μ‚¬μš©μžκ°€ 앱에 λ‘œκ·ΈμΈν•˜κ±°λ‚˜ 계정에 등둝할 수 μžˆλ„λ‘ 앱을 μˆ˜μ •ν•˜μ‹­μ‹œμ˜€.

λ˜ν•œ Safari View Controller APIλ₯Ό κ΅¬ν˜„ν•˜μ—¬ μ•± λ‚΄μ˜ μ›Ή μ½˜ν…μΈ λ₯Ό ν‘œμ‹œν•˜λ„λ‘ 선택할 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. Safari View Controllerλ₯Ό μ‚¬μš©ν•˜λ©΄ 앱에 λ‚΄μž₯된 λΈŒλΌμš°μ €μ—μ„œ URL을 ν‘œμ‹œν•˜κ³  μΈμ¦μ„œλ₯Ό 검사할 수 μžˆμœΌλ―€λ‘œ 고객은 μ›Ή νŽ˜μ΄μ§€ URL 및 SSL μΈμ¦μ„œλ₯Ό ν™•μΈν•˜μ—¬ 합법적인 νŽ˜μ΄μ§€μ— μ„œλͺ… 자격 증λͺ…을 μž…λ ₯ν•˜λŠ”μ§€ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

Resources

- Safari View 컨트둀러 API에 λŒ€ν•œ μΆ”κ°€ μ •λ³΄λŠ” Safari의 μƒˆλ‘œμš΄ κΈ°λŠ₯ μ›Ή νŽ˜μ΄μ§€λ₯Ό μ°Έμ‘°ν•˜μ‹­μ‹œμ˜€.
- 계정 생성을 μ§€μ›ν•˜λŠ” 앱은 μ•±μŠ€ν† μ–΄ κ²€ν†  κ°€μ΄λ“œλΌμΈ 5.1.1(v)에 따라 계정 μ‚­μ œ κΈ°λŠ₯도 μ œκ³΅ν•΄μ•Ό ν•©λ‹ˆλ‹€. μ•±μ—μ„œ 계정 μ‚­μ œλ₯Ό μ œκ³΅ν•˜λŠ” 방법에 λŒ€ν•΄ μžμ„Ένžˆ μ•Œμ•„λ΄…λ‹ˆλ‹€.

 

 

 

class TempleViewController: UIViewController {
    @IBAction func touchHomepageButton(_ sender: UIButton) {
        if let url = URL(string: "http://www.chungkeisa.com/") {
            UIApplication.shared.open(url, options: [:])
        }
    }
}

 

이미 ν•΄λ‹Ή 리젝에 λŒ€μ‘ ν›„ λ°°ν¬ν•œ μƒνƒœλΌ νšŒμ›κ°€μž… 화면은 μ•„λ‹ˆμ§€λ§Œ..γ…Žγ…Ž

νšŒμ›κ°€μž… λ²„νŠΌμ„ λˆŒλ €μ„ λ•Œ μ΄λ ‡κ²Œ μ‚¬νŒŒλ¦¬ λΈŒλΌμš°μ €λ₯Ό μ—΄μ–΄ μ•± μ™ΈλΆ€λ‘œ μ΄λ™ν•˜λ„λ‘ λ˜μ–΄ μžˆμ—ˆμŠ΅λ‹ˆλ‹€. 

 

 

 

import SafariServices

class TempleViewController: UIViewController, UIViewControllerTransitioningDelegate {
    @IBAction func touchHomepageButton(_ sender: UIButton) {
        if let url = URL(string: "http://www.chungkeisa.com/") {
            let safariViewController = SFSafariViewController(url: url)
            safariViewController.transitioningDelegate = self
            safariViewController.modalPresentationStyle = .fullScreen
            present(safariViewController, animated: true, completion: nil)
        }
    }
}

 

λ”°λΌμ„œ μ• ν”Œμ—μ„œ μ œμ‹œν•œ SFSafariViewControllerλ₯Ό μ΄μš©ν•΄

μ›ΉνŽ˜μ΄μ§€λ₯Ό μΈμ•±μœΌλ‘œ 열도둝 μˆ˜μ •ν•˜μ—¬ λ‹€μ‹œ μ œμΆœν•˜μ˜€κ³ ,

심사에 톡과할 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€ πŸ‘

 

비단 νšŒμ›κ°€μž…κ³Ό νšŒμ›νƒˆν‡΄κ°€ μ•„λ‹ˆλ”λΌλ„ μ™ΈλΆ€ λΈŒλΌμš°μ €λ₯Ό κΌ­ μ—΄μ–΄μ•Ό ν•˜λŠ” μ΄μœ κ°€ μžˆλŠ” 게 μ•„λ‹ˆλΌλ©΄

μΈμ•±μœΌλ‘œ μ—°κ²°ν•˜λŠ” 것이 UXμΈ‘λ©΄μ—μ„œ μ‚¬μš©μžλ“€μ—κ²Œ 더 쒋은 κ²½ν—˜μ„ 쀄 수 μžˆμ„ 것 κ°™μŠ΅λ‹ˆλ‹€!