首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用apple to iOS12兼容项目实现登录

如何使用apple to iOS12兼容项目实现登录
EN

Stack Overflow用户
提问于 2020-07-22 18:51:47
回答 1查看 187关注 0票数 0

我试着用苹果登录到我的支持iOS12的iOS项目。因为与AuthenticationServices相关的声明只在iOS13中有效,所以我需要使用#available(iOS 13.0, *)...来分隔iOS13或更高版本以及iOS12和blow的代码。

我在区分ASAuthorizationControllerDelegate和iOS12或更低版本时遇到了麻烦。似乎#available(iOS 13.0, *)...只能在方法中使用,但不能直接用于swift文件,因此我不能使我的LoginViewController符合ASAuthorizationControllerDelegate,只能用于iOS13或更高版本。

有什么帮助吗?

代码语言:javascript
复制
extension LoginViewController {
    
    @objc func didTapAppleButton() {
        
        guard #available(iOS 13.0, *) else { return }
        
        let provider: ASAuthorizationAppleIDProvider = .init()
        let request = provider.createRequest()
        request.requestedScopes = [.fullName, .email]
        
        let authController: ASAuthorizationController = .init(authorizationRequests: [request])
        authController.delegate = self
        authController.presentationContextProvider = self
        
        authController.performRequests()
    }
}

// This does not work.
// -> Error: Declaration is only valid at file scope
if #available(iOS 13.0, *) {
    
    extension LoginViewController: ASAuthorizationControllerDelegate {
        
        public func authorizationController(controller: ASAuthorizationController, didCompleteWithAuthorization authorization: ASAuthorization) {
            
        }
        
        public func authorizationController(controller: ASAuthorizationController, didCompleteWithError error: Error) {
            
        }
    }

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-22 18:57:58

你需要的是@available,而不是if #availableif #available用于在特定iOS版本上执行特定代码路径。要声明仅在iOS 13上可用的特定类型或扩展,您需要@available

代码语言:javascript
复制
@available(iOS 13.0, *)
extension LoginViewController: ASAuthorizationControllerDelegate {
    
    public func authorizationController(controller: ASAuthorizationController, didCompleteWithAuthorization authorization: ASAuthorization) {
        
    }
    
    public func authorizationController(controller: ASAuthorizationController, didCompleteWithError error: Error) {
        
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63032511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档