Отклонение приложения из-за использования 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 и автоматически переинициализировать ваше приложение, чтобы пользователю не приходилось выходить (фактически уничтожать) и запускать его снова.