diff --git a/FirebaseAuth/Sources/Swift/AuthProvider/GameCenterAuthProvider.swift b/FirebaseAuth/Sources/Swift/AuthProvider/GameCenterAuthProvider.swift index 935418f27d5..63d4f260bf3 100644 --- a/FirebaseAuth/Sources/Swift/AuthProvider/GameCenterAuthProvider.swift +++ b/FirebaseAuth/Sources/Swift/AuthProvider/GameCenterAuthProvider.swift @@ -16,18 +16,6 @@ import Foundation import GameKit - // TODO: Delete this when minimum iOS version passes 13.5. - /// WarningWorkaround is needed because playerID is deprecated in iOS 13.0 but still needed until - /// 13.5 when the fetchItems API was introduced. - @available(iOS 13, tvOS 13, macOS 10.15, macCatalyst 13, watchOS 7, *) - private protocol WarningWorkaround { - static func pre135Credential(localPlayer: GKLocalPlayer, - completion: @escaping (AuthCredential?, Error?) -> Void) - } - - @available(iOS 13, tvOS 13, macOS 10.15, macCatalyst 13, watchOS 7, *) - extension GameCenterAuthProvider: WarningWorkaround {} - /// A concrete implementation of `AuthProvider` for Game Center Sign In. Not available on watchOS. @available(iOS 13, tvOS 13, macOS 10.15, macCatalyst 13, watchOS 7, *) @objc(FIRGameCenterAuthProvider) open class GameCenterAuthProvider: NSObject { @@ -53,60 +41,23 @@ return } - if #available(iOS 13.5, macOS 10.15.5, macCatalyst 13.5, tvOS 13.4.8, *) { - localPlayer.fetchItems { publicKeyURL, signature, salt, timestamp, error in - if let error = error { - completion(nil, error) - } else { - let credential = GameCenterAuthCredential(withPlayerID: "", - teamPlayerID: localPlayer.teamPlayerID, - gamePlayerID: localPlayer.gamePlayerID, - publicKeyURL: publicKeyURL, - signature: signature, - salt: salt, - timestamp: timestamp, - displayName: localPlayer.displayName) - completion(credential, nil) - } + localPlayer.fetchItems { publicKeyURL, signature, salt, timestamp, error in + if let error = error { + completion(nil, error) + } else { + let credential = GameCenterAuthCredential(withPlayerID: "", + teamPlayerID: localPlayer.teamPlayerID, + gamePlayerID: localPlayer.gamePlayerID, + publicKeyURL: publicKeyURL, + signature: signature, + salt: salt, + timestamp: timestamp, + displayName: localPlayer.displayName) + completion(credential, nil) } - } else { - (GameCenterAuthProvider.self as WarningWorkaround.Type).pre135Credential( - localPlayer: localPlayer, completion: completion - ) } } - @available(iOS, deprecated: 13.0) - @available(tvOS, deprecated: 13.0) - @available(macOS, deprecated: 10.15.0) - @available(macCatalyst, deprecated: 13.0) - fileprivate class func pre135Credential(localPlayer: GKLocalPlayer, - completion: @escaping (AuthCredential?, Error?) - -> Void) { - localPlayer - .generateIdentityVerificationSignature { publicKeyURL, signature, salt, timestamp, error in - if error != nil { - completion(nil, error) - } else { - /** - `localPlayer.alias` is actually the displayname needed, instead of - `localPlayer.displayname`. For more information, check - https://developer.apple.com/documentation/gamekit/gkplayer - **/ - let displayName = localPlayer.alias - let credential = GameCenterAuthCredential(withPlayerID: localPlayer.playerID, - teamPlayerID: nil, - gamePlayerID: nil, - publicKeyURL: publicKeyURL, - signature: signature, - salt: salt, - timestamp: timestamp, - displayName: displayName) - completion(credential, nil) - } - } - } - /// Creates an `AuthCredential` for a Game Center sign in. @available(iOS 13, tvOS 13, macOS 10.15, watchOS 8, *) open class func getCredential() async throws -> AuthCredential { @@ -115,7 +66,7 @@ if let credential = credential { continuation.resume(returning: credential) } else { - continuation.resume(throwing: error!) // TODO: Change to ?? and generate unknown error + continuation.resume(throwing: error ?? AuthErrorUtils.error(code: .internalError)) } } }