Game Center 기능 설치
이번에는 가장 좋은 시간을 보내는 기능을 실현해 보자.
대략적인 절차
iTunes Connect에 등록
액세스iTunes Connect 및 로그인.
게임 센터 기능의 효율화 및 리더보드 제작
Xcode 설정
분수 발송 기능의 실현
로그인 기능의 구축
앱이 시작될 때 앱 Delegate로 불리는'd i d F inish Launching With Options'에 기술된 로그인 처리를 통해 앱은 비활성 상태에서 복구된 후에도 제대로 로그인해야 한다.
※ 스위프트 직장인 소스를 빌렸어요.
AppDelegate.swift
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
window = UIWindow(frame: UIScreen.mainScreen().bounds)
if let window = window{
window.backgroundColor = UIColor.whiteColor()
window.rootViewController = ViewController()
window.makeKeyAndVisible()
}
// GameCenter Auto Login
if let presentView = window?.rootViewController {
let targetViewController = presentView
GKLocalPlayerUtil.login(targetViewController)
}
return true
}以下略
GKLocalPlayerUtil.swiftimport UIKit
import GameKit
struct GKLocalPlayerUtil {
static var localPlayer:GKLocalPlayer = GKLocalPlayer();
static func login(target: UIViewController){
self.localPlayer = GKLocalPlayer.localPlayer()
self.localPlayer.authenticateHandler = {(viewController, error) -> Void in
if ((viewController) != nil) {
println("LoginCheck: Failed - LoginPageOpen")
target.presentViewController(viewController, animated: true, completion: nil);
}else{
println("LoginCheck: Success")
if (error == nil){
println("LoginAuthentication: Success")
}else{
println("LoginAuthentication: Failed")
}
}
}
}
}
다음 로그인 페이지를 표시하면 성공합니다.분수 발송 기능의 실현
'Elapsed Time-To the Hundredth of a Second'를 선택했기 때문에 다음과 같습니다.
GameScene.swift
// Time Interval
self.startDate = NSDate() // StartDate
self.time = NSDate().timeIntervalSinceDate(self.startDate) // Elapsed Time
self.clearTime = self.time // Clear Time
// GameCenter Score Transration
var leaderBoardScore = Int(omitTime(self.clearTime) * 100) // Elapsed Time
GKScoreUtil.reportScore(leaderBoardScore, leaderboardid: gameMode)
func omitTime(time: Double) -> Double {
return Double(Int(time * 100)) / 100
}時間関連の処理を一部抜粋
GKScoreUtil.swiftimport UIKit
import GameKit
struct GKScoreUtil {
static func reportScore(value: Int, leaderboardid: String){
var score: GKScore = GKScore()
score.value = Int64(value)
score.leaderboardIdentifier = leaderboardid
var scoreArr:[GKScore] = [score]
GKScore.reportScores(scoreArr, withCompletionHandler:{(error:NSError!) -> Void in
if((error != nil)){
println("ReportScore NG")
}else{
println("ReportScore OK")
}
})
}
}
점수 확인 기능의 실현
GameScene.swift
// LeaderBoard
var localPlayer = GKLocalPlayer()
let navigationController = self.view?.window?.rootViewController as UINavigationController
if let vc = navigationController.visibleViewController as? ViewController {
localPlayer.loadDefaultLeaderboardIdentifierWithCompletionHandler({ (leaderboardIdentifier : String!, error : NSError!) -> Void in
if error != nil {
println(error.localizedDescription)
} else {
let gameCenterController:GKGameCenterViewController = GKGameCenterViewController()
gameCenterController.gameCenterDelegate = vc
gameCenterController.viewState = GKGameCenterViewControllerState.Leaderboards
gameCenterController.leaderboardIdentifier = self.gameMode
vc.presentViewController(gameCenterController, animated: true, completion: nil)
}
})
}
동작 확인
샌드박스 사용자 생성
이때 계정마다 메일 주소가 필요하기 때문에 Gmail의 별명 기능(+tester1)으로 등록하는 것이 좋을 수 있습니다.
실기나 시뮬레이터의 동작을 확인하다
참고 자료
Swift 직장인-게임센터의 GKLocal Player 로그인 인증
Reference
이 문제에 관하여(Game Center 기능 설치), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/moco3/items/d9c2a8956d4377bad264텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)