Отклонение приложения из-за использования CloudKit

У меня есть приложение, которое было отклонено, потому что я проверяю, имеет ли пользователь доступ к своим контейнерам CloudKit.

Если они не подключены, я выдаю предупреждение и говорю им, чтобы выйти из приложения.

Я не могу быть единственным, кто испытал это.. У кого-нибудь есть обходной путь?

Спасибо..

Для информации, код, который я использую для тестирования, был отправлен мне инженером Apple TSI. вздох..

Вот:

func isICloudContainerAvailable()->Bool {
    print(#function)
    CKContainer.default().accountStatus { (accountStatus, error) in

        if accountStatus == .available {
            print(#function, "accountStatus 1: ", accountStatus)
            return

        } else {
            print(#function, "accountStatus 2: ", accountStatus)
        }   

        DispatchQueue.global().asyncAfter(deadline: .now() + 0.3) {

            guard error != nil, accountStatus != CKAccountStatus.available else {return}
            print( #function, "accountStatus 3: ", accountStatus)
            print("iCloud account is not available! Be sure you have signed in iCloud on this device!")
        }
    }

    if FileManager.default.ubiquityIdentityToken != nil {
        print("User logged in")
        return true
    }
    else {
        print("User is not logged in")
        return false
    }   
}

И функция используется здесь:

if !isICloudContainerAvailable() {

    let alertController = UIAlertController(title: "Uh-oh", message: "You must be signed into iCloud \nto use this app.\nPlease quit, log in to iCloud using the 'Settings' app\nand try again", preferredStyle: .alert)

                let defaultAction = UIAlertAction(title: "OK", style: .default, handler: nil)
                alertController.addAction(defaultAction)

                self.present(alertController, animated: true, completion: nil)

            })

1 ответ

Вы не можете сделать ваше приложение неработоспособным без доступа к CloudKit. Вы можете только попросить пользователя войти в iCloud, чтобы получить полную функциональность приложения. Не имеет значения, насколько (не) функционален ваше приложение без доступа к CloudKit. Может быть, вы могли бы показать экран с инструкциями или общую информацию о приложении. Затем вы также можете реализовать обнаружение входа в iCloud и автоматически переинициализировать ваше приложение, чтобы пользователю не приходилось выходить (фактически уничтожать) и запускать его снова.

Другие вопросы по тегам