2017-05-05 2 views
8

मैं इसे आखिरी रात काम करने के लिए प्राप्त करने की कोशिश कर रहा था लेकिन यह नहीं होगा। क्या कोई मदद कर सकता है?आईओएस में लीडरबोर्ड सेट्स को प्रदर्शित करने के लिए कैसे करें

मैं एक लीडरबोर्ड प्रदर्शित करने के लिए निम्नलिखित कोड का उपयोग करें: gameCenterViewController.leaderboardIdentifier = leaderboardId

यह सामान्य लीडरबोर्ड के लिए ठीक काम करता है, लेकिन किसी भी लीडरबोर्ड सेट लोड करने में विफल रहता है जब मैं leaderboardSetId का उपयोग करें। क्या आप सीधे लीडरबोर्ड सेट से लिंक कर सकते हैं और यदि ऐसा है तो आप यह कैसे करते हैं?

धन्यवाद।

उत्तर

-2

यह सुनिश्चित करने के बाद कि आपने स्थानीय खिलाड़ी और आईट्यून्स कनेक्ट में सेट किए गए लीडरबोर्ड को प्रमाणित किया है, तो आपको 64 बिट इंट का उपयोग सुनिश्चित करने के लिए report your scores to GameCenter की आवश्यकता होगी। अब आप स्थानीय खिलाड़ी के लिए लीडरबोर्ड प्रदर्शित करने के लिए इस जोड़ सकते हैं:

func showGKGameCenterViewController(_ viewController: UIViewController) { 
    if gameCenterIsDisabled { 
     print("Local player is not authenticated") 
    } 
    let gameCenterViewController = GKGameCenterViewController() 
    gameCenterViewController.delegate = self 
    gameCenterViewController.viewState = GKGameCenterViewControllerState.default 

    viewController.presentViewController(gameCenterViewController, animated: true, completion: nil) 
} 
1

कृपया अपने विन्यास को सत्यापित कोड और पार नीचे देखें है।

आशा है कि यह आपकी मदद करेगा।

import GameKit 
class YourViewController: UIViewController, GKGameCenterControllerDelegate { 

var gcEnabled = Bool() // Stores if the user has Game Center enabled 
var gcDefaultLeaderBoard = String() // Stores the default leaderboardID 

override func viewDidLoad() { 
    super.viewDidLoad() 

self.authenticateLocalPlayer() 

} 

func authenticateLocalPlayer() 
{ 
    let localPlayer: GKLocalPlayer = GKLocalPlayer.localPlayer() 

    localPlayer.authenticateHandler = {(ViewController, error) -> Void in 
     if((ViewController) != nil) { 

      // 1 Show login if player is not logged in 

      self.presentViewController(ViewController!, animated: true, completion: nil) 

     } else if (localPlayer.authenticated) { 

      // 2 Player is already euthenticated & logged in, load game center 

      self.gcEnabled = true 

      // Get the default leaderboard ID 
      localPlayer.loadDefaultLeaderboardIdentifierWithCompletionHandler({ (leaderboardIdentifer: String?, error: NSError?) -> Void in 
       if error != nil { 
        print(error) 
       } else { 
        self.gcDefaultLeaderBoard = leaderboardIdentifer! 
       } 
      }) 


     } else { 
      // 3 Game center is not enabled on the users device 
      self.gcEnabled = false 
      print("Local player could not be authenticated, disabling game center") 
      print(error) 
     } 

    } 
} 


    @IBAction func clickToLeaderBoard(sender: UIButton) { 

     let gcVC: GKGameCenterViewController = GKGameCenterViewController() 
     gcVC.gameCenterDelegate = self 
     gcVC.viewState = GKGameCenterViewControllerState.Leaderboards 
     gcVC.leaderboardIdentifier = "YourLeaderboardId" 
     self.presentViewController(gcVC, animated: true, completion: nil) 

    } 

func saveScoreOnGameCenter() 
{ 
    let leaderboardID = "YourLeaderboardId" 
    let sScore = GKScore(leaderboardIdentifier: leaderboardID) 
    sScore.value = Int64(10) 

    GKScore.reportScores([sScore], withCompletionHandler: { (error: NSError?) -> Void in 
     if error != nil { 
      print(error!.localizedDescription) 
     } else { 
      print("Score submitted") 

     } 
    }) 
} 

func gameCenterViewControllerDidFinish(gcViewController: GKGameCenterViewController) 
{ 
    self.dismissViewControllerAnimated(true, completion: nil) 
} 

} 

अद्यतन

भी वापस अंत से अपने लीडरबोर्ड विन्यास की जाँच करें।

कुछ अच्छी पोस्ट यहां हैं।

http://www.appcoda.com/ios-game-kit-framework/

https://developer.apple.com/game-center/

https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/GameKit_Guide/GameCenterOverview/GameCenterOverview.html

+0

Ive सामान्य इसकी सिर्फ लीडरबोर्ड सेट कि न शो दिखा लीडरबोर्ड मिला है। मैंने लीडरबोर्ड आईडी को मेरे कोड में लीडरबोर्ड सेट आईडी के साथ बदलने की कोशिश की लेकिन यह काम नहीं किया। मुझे लगता है कि यह समाधान मानता है कि आपको बस इतना करना है? –

+0

हां, यह न्यूनतम करने की ज़रूरत है, क्या आप यहां दिए गए कोड को एकीकृत करने का प्रयास कर सकते हैं और जांच सकते हैं। – Hasya

संबंधित मुद्दे