κ°ν¬μ£Ό(Rad) | κΉμ λΉ(Nini) |
---|---|
π¨ λμμΈ π¨ | π ν ν¬ π |
https://youtu.be/DZWRW-y7d7Y?si=BJJ8Ft5C82tiEMWN
λ§μ§ νλ°©μ΄λΌλ μ£Όμ λ₯Ό κ²μ΄λ―ΈνΌμΌμ΄μ μ μ μ©ν λΉκ³ λ₯Ό ν΅ν΄ μλΉμ€λ₯Ό μ 곡νλ©°, κ²μμΌν°μ κΈ°λ₯μ ν΅ν΄ μλ²λ₯Ό λμ νμ¬ μ¬μ©μκ°μ κ²½μκ³Ό μ¬μ°Έμ¬λ₯Ό μ λνλ€.
prototype.mp4
-> μΈμ¦λμ§ μμ κ²½μ°, κ²μ μΌν° λ‘κ·ΈμΈ νλ©΄μ νμνμ¬ νλ μ΄μ΄κ° λ‘κ·ΈμΈν μ μλλ‘ ν΄μ€
import GameKit
// λ‘컬 νλ μ΄μ΄ μΈμ¦ λ©μλ
func authenticateLocalPlayer() {
// μ΄λ―Έ μΈμ¦ μ€μ΄λ©΄ μ€λ³΅ μ€ν λ°©μ§
guard !authenticating else { return }
authenticating = true
// μΈμ¦ νΈλ€λ¬ μ€μ
GKLocalPlayer.local.authenticateHandler = { [weak self] viewController, error in
guard let self = self else { return }
self.authenticating = false
if let error = error {
print("Authentication failed: \\(error.localizedDescription)")
self.isAuthenticated = false
} else if let viewController = viewController {
// λ‘κ·ΈμΈ λ·° 컨νΈλ‘€λ¬κ° νμν κ²½μ° νμ
print("Game Center login required")
if let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene,
let window = windowScene.windows.first {
window.rootViewController?.present(viewController, animated: true, completion: nil)
}
} else if GKLocalPlayer.local.isAuthenticated {
// μΈμ¦ μ±κ³΅
self.isAuthenticated = true
print("Player authenticated")
} else {
// μΈμ¦ μ€ν¨
self.isAuthenticated = false
print("Player not authenticated")
}
}
}
// (μμνλ₯Ό μν) κ²μμΌν° μ μ μ μ₯ λ©μλ
func reportBingoCount(_ count: Int) {
// μΈμ¦ μ¬λΆ νμΈ
guard isAuthenticated else {
print("Player is not authenticated")
return
}
let score = GKLeaderboardScore()
score.leaderboardID = "μμν ID"
// μμνμ λΆμ¬ν΄μΌ νλ μμ«μ μλ³μ - μ΄ IDλ 100μλ‘ μ ν, μꡬμ μΌλ‘ μ€μ λλ©° λμ€μ λ³κ²½ν μ μμ
score.value = Int(count)
// μ μ μ μ₯
GKLeaderboard.submitScore(score.value, context: 0, player: GKLocalPlayer.local, leaderboardIDs: [score.leaderboardID]) { error in
if let error = error {
print("Failed to report score: \\(error.localizedDescription)")
} else {
print("Score reported successfully")
}
}
}
// λͺ©ν(μ
μ ) λ¬μ± λ©μλ
func reportAchievement(identifier: String, percentComplete: Double) {
// μΈμ¦ μ¬λΆ νμΈ
guard isAuthenticated else {
print("Player is not authenticated")
return
}
// λͺ©ν κ°μ²΄ μμ± λ° μ€μ
let achievement = GKAchievement(identifier: identifier)
achievement.percentComplete = percentComplete
achievement.showsCompletionBanner = true
// λͺ©ν λ¬μ± 보κ³
GKAchievement.report([achievement]) { error in
if let error = error {
print("Failed to report achievement: \\(error.localizedDescription)")
} else {
print("Achievement reported successfully")
}
}
}
// μμν 보기 λ©μλ
func showLeaderboard() {
let leaderboardID = "μμν ID"
let viewController = GKGameCenterViewController(leaderboardID: leaderboardID, playerScope: .friendsOnly, timeScope: .allTime)
viewController.gameCenterDelegate = self
if let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene {
if let window = windowScene.windows.first {
window.rootViewController?.present(viewController, animated: true, completion: nil)
}
}
}