繁体   English   中英

由于使用CloudKit而导致应用被拒绝

[英]App rejection due to use of 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)

            })

如果没有CloudKit访问权限,则不允许您使应用无法运行。 仅允许您要求用户登录iCloud以获得应用程序的全部功能。 在没有CloudKit访问的情况下,您的应用如何(不)运行并不重要。 也许您可以显示说明屏幕或有关该应用程序的一些常规信息。 然后,您还可以实现对iCloud登录的检测,并自动重新初始化您的应用程序,以便用户不必退出(实际上是杀死)并再次启动它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM