Computer >> कंप्यूटर >  >> स्मार्टफोन्स >> iPhone

स्विफ्टयूआई में गेमकिट लीडरबोर्ड को कैसे कार्यान्वित करें?

इस लेख में हम बात करेंगे कि आपके ऐप में गेम सेंटर के लीडरबोर्ड को क्यों और कैसे लागू किया जाए।

क्यों GameCenter एक विशाल पुनरुद्धार कर रहा है

आप स्कोरबोर्ड के बिना iPhone गेम बना सकते हैं, लेकिन लीडरबोर्ड गेम को अधिक प्रतिस्पर्धी महसूस कराने में मदद कर सकते हैं, जैसे लोग दुनिया भर में एक दूसरे के खिलाफ प्रतिस्पर्धा कर रहे हैं।

अपने स्वयं के बैकएंड को बनाने और प्रबंधित करने के बजाय, गेमसेंटर लीडरबोर्ड आपको असीमित ट्रैफ़िक के साथ स्केल करने की अनुमति देता है, प्राधिकरण के लिए एक संपूर्ण लॉगिन पृष्ठ को छोड़ देता है, छवि, नाम और एक ही गेम खेलने वाले दोस्तों को प्राप्त करता है - बिना आपके उपयोगकर्ताओं को कुछ भी दर्ज किए।

विशेष रूप से iOS 16 के साथ, Apple इसे बेहतर बनाने में अधिक निवेश कर रहा है, और ऐप का अधिक उपयोग कर रहा है, जैसे पुश नोटिफिकेशन के माध्यम से जब आपका मित्र गेम में आपके स्कोर को पीछे छोड़ देता है।

स्विफ्टयूआई सीखने की अपनी यात्रा में, मैं ऐप बना रहा हूं और प्रकाशित कर रहा हूं, क्योंकि आईएमओ सीखने का सबसे अच्छा तरीका है।

इसमें से बहुत कुछ कैसे किया जाए, इस पर बहुत अधिक अद्यतन दस्तावेज नहीं थे, विशेष रूप से स्विफ्टयूआई के साथ और न ही एसिंक के आगमन के साथ और स्विफ्ट में प्रतीक्षा करें। इसलिए मैंने सभी के लिए अद्भुत ऐप्स बनाने के लिए इसे समेकित और सरल बनाया। तो बेझिझक मुझे अपने ऐप्स का भी परीक्षण करने के लिए आमंत्रित करें!

पूर्व-आवश्यकताएं:

  • आपके पास एक Apple डेवलपर सशुल्क खाता होना चाहिए
  • आपको ऐप्पल डेवलपर पोर्टल के प्रोविज़निंग प्रोफाइल सेक्शन में अपने ऐप के लिए ऐप आईडी बनानी होगी
  • आपको iTunes Connect Connect पोर्टल में ऐप बनाना होगा

6 चरणों में अपने iOS लीडरबोर्ड को कैसे लागू करें

यदि आप आगे छोड़ना चाहते हैं तो लीडरबोर्ड के लिए अधिकांश कोड तर्क इस फ़ाइल में है। ये चरण इस प्रकार हैं:

1. ऐप स्टोर कनेक्ट लीडरबोर्ड कैसे बनाएं

स्विफ्टयूआई में गेमकिट लीडरबोर्ड को कैसे कार्यान्वित करें?
Apple iTunes Connect पोर्टल का स्क्रीनशॉट

ऐप स्टोर कनेक्ट पोर्टल में ऐप सफलतापूर्वक बनाने के बाद, ऐप के लिए सर्विसेज टैब पर जाएं -> और सुनिश्चित करें कि आप गेम सेंटर पेज में हैं।

फिर "+" चिह्न का उपयोग करके एक नया लीडरबोर्ड जोड़ें, जो या तो "क्लासिक" (स्कोर कभी रीसेट नहीं होता) या "आवर्ती" (आपकी आवृत्ति सेटिंग्स के आधार पर स्कोर रीसेट) हो सकता है।

अधिकांश गेम आवर्ती लीडरबोर्ड को पसंद करते हैं ताकि लीडरबोर्ड उच्च स्कोर तक पहुंचने के लिए पुराने असंभव से भरा न हो।

आप जिस लीडरबोर्ड आईडी को इनपुट करते हैं, वह वह है जिसे आपको कोड के सभी स्थानों पर उपयोग करने की आवश्यकता होती है।

स्विफ्टयूआई में गेमकिट लीडरबोर्ड को कैसे कार्यान्वित करें?
एक नया लीडरबोर्ड बनाने के लिए आवश्यक विवरण

2. GameCenter प्रमाणीकरण कैसे सेट करें

सबसे पहले, आपको इस कार्यक्षमता के काम करने के लिए उपयोगकर्ताओं को GameCenter में प्रमाणित करने की आवश्यकता होगी।

इसलिए हम ऐसा करने के लिए इस कोड का उपयोग करेंगे, जो मूल रूप से सुनिश्चित करता है कि आप (GKLocalPlayer.local) प्रमाणित हैं, या यदि कोई त्रुटि है तो प्रिंट करता है:

func authenticateUser() {
    GKLocalPlayer.local.authenticateHandler = { vc, error in
        guard error == nil else {
            print(error?.localizedDescription ?? "")
            return
        }
    }
}

यदि उपयोगकर्ता प्रमाणित है, तो आपको UI में थोड़ा पॉपअप दिखाई देगा। यदि नहीं, तो उपयोगकर्ता को उनके GameCenter खाते में प्रवेश करने के लिए एक पृष्ठ पर ले जाया जाएगा।

स्विफ्टयूआई में गेमकिट लीडरबोर्ड को कैसे कार्यान्वित करें?
एक संकेत जो उपयोगकर्ता के लॉग इन होने पर प्रदर्शित होता है

3. UI में लीडरबोर्ड आइटम कैसे प्रदर्शित करें

GameCenter ViewController लीडरबोर्ड (GKLeaderboard) से डेटा प्राप्त करने के लिए, आपको loadLeaderboards का उपयोग करने की आवश्यकता है .

आप loadEntries को स्विच अप कर सकते हैं .global . से कार्य करें करने के लिए .friends केवल अपने दोस्तों को खींचने के लिए।

आप प्रत्येक खिलाड़ी पर पुनरावृति करके और loadPhoto . प्रदर्शन करके प्रत्येक खिलाड़ी के लिए छवि पुनर्प्राप्त कर सकते हैं .

NSRang(1...5) का उपयोग करना , आप चुन सकते हैं कि कितने खिलाड़ियों को प्रदर्शित करना है। यह उपयोगकर्ताओं को लीडरबोर्ड से उच्चतम 5 स्कोर के साथ खींचता है और यदि कोई उपयोगकर्ता नहीं है तो कोई भी नहीं लौटाता है, जैसे कि जब चक्र आवर्ती लीडरबोर्ड के लिए रीफ़्रेश होता है।

यदि आप async-wait का लाभ उठाते हैं तो लीडरबोर्ड से डेटा खींचना ऐसा दिखाई दे सकता है:

func loadLeaderboard() async {
    playersList.removeAll()
    Task{
        var playersListTemp : [Player] = []
        let leaderboards = try await GKLeaderboard.loadLeaderboards(IDs: [leaderboardIdentifier])
        if let leaderboard = leaderboards.filter ({ $0.baseLeaderboardID == self.leaderboardIdentifier }).first {
            let allPlayers = try await leaderboard.loadEntries(for: .global, timeScope: .allTime, range: NSRange(1...5))
            if allPlayers.1.count > 0 {
                try await allPlayers.1.asyncForEach { leaderboardEntry in
                    var image = try await leaderboardEntry.player.loadPhoto(for: .small)
                    playersListTemp.append(Player(name: leaderboardEntry.player.displayName, score:leaderboardEntry.formattedScore, image: image))
                                print(playersListTemp)
                    playersListTemp.sort{
                        $0.score < $1.score
                    }
                }
            }
        }
        playersList = playersListTemp            
    }
}
स्विफ्टयूआई में गेमकिट लीडरबोर्ड को कैसे कार्यान्वित करें?
आप अपने ऐप में लीडरबोर्ड डेटा प्राप्त कर सकते हैं

4. जैसे ही व्यू/पेज दिखाई देता है, स्विफ्टयूआई में कार्यक्षमता को कैसे कॉल करें

आप onAppear . का लाभ उठा सकते हैं वास्तव में कॉल को प्रमाणित करने और लोड करने के लिए दृश्य का जीवनचक्र कार्य करता है, लेकिन यदि आप इसे पसंद करते हैं तो आप इसे एक बटन के टैप पर भी कर सकते हैं:

.onAppear(){
    if !GKLocalPlayer.local.isAuthenticated {
        authenticateUser()
    } else if playersList.count == 0 {
        Task{
            await loadLeaderboard()
        }
    }
}

5. सबमिट किए गए स्कोर कैसे लोड करें

स्कोर लोड करने के लिए, आपको उन्हें भी जमा करना होगा। submitScore फ़ंक्शन इसमें आपकी सहायता कर सकता है।

  • flightsClimbed वेरिएबल में वह स्कोर होना चाहिए जिसे आप सबमिट करना चाहते हैं।
  • GameKit लीडरबोर्ड के जीवन के लिए केवल आपके सर्वश्रेष्ठ स्कोर को प्रदर्शित करना सुनिश्चित करता है।
  • leaderboardId इसमें वह मान होता है जिसे आप अपने ऐप स्टोर कनेक्ट खाते में मैन्युअल रूप से दर्ज करते हैं:
func leaderboard() async{
    Task{
        try await GKLeaderboard.submitScore(
            flightsClimbed,
            context: 0,
            player: GKLocalPlayer.local,
            leaderboardIDs: ["com.tfp.stairsteppermaster.flights"]
        )
    }
    calculateAchievements()
}

6. GameCenter ViewController पोर्टल कैसे प्रदर्शित करें

जब आप GameCenter में लॉग इन होते हैं, तो आपकी स्क्रीन के ऊपर दाईं ओर थोड़ा कष्टप्रद आइकन दिखाई देता है। जब आप उस पर टैप करते हैं, तो आपको GameCenter ViewController पर ले जाया जाता है। सौभाग्य से आप इसे छिपा सकते हैं यदि यह आपके डिज़ाइन का हिस्सा नहीं है, GKAccessPoint.shared.isActive = false . का उपयोग करके .

चूंकि GameCenter UI एक UIKit है ViewController और एक साधारण SwiftUI नहीं View , आपको इस UIViewControllerRepresentable को पहले बनाने की आवश्यकता है (जैसा कि आप यहां देख सकते हैं), एक अलग बटन का उपयोग करके GameCenter लॉन्च करने के लिए,

एक बार जब आप उस फ़ाइल को अपने प्रोजेक्ट में जोड़ लेते हैं, तो आप इसका उपयोग करके GameCenter पोर्टल प्रदर्शित कर सकते हैं:GameCenterView(format: gameCenterViewControllerState) जहां GameCenterViewControllerState GameCenter में एक विवरण पृष्ठ पर जाने में आपकी सहायता कर सकता है।

स्विफ्टयूआई में गेमकिट लीडरबोर्ड को कैसे कार्यान्वित करें?
GameCenter का लीडरबोर्ड व्यू

गेमसेंटर के लीडरबोर्ड का उपयोग करते समय ध्यान रखने योग्य बातें:

  • सिम्युलेटर डिबगिंग - किसी कारण से गेम सेंटर के लिए प्रमाणीकरण सिम्युलेटर पर बेहद धीमा है, इसलिए सिम्युलेटर का उपयोग करते समय डेटा का नकली बनाना भी समझ में आता है।
  • चुनौतियां - पदावनति के कारण अब आप अपने दोस्तों को गेमकिट चैलेंज प्रोग्रामेटिक रूप से जारी नहीं कर सकते। इसके बजाय, आपको गेमकिट उपलब्धियों के खिलाफ उपयोगकर्ता के गेम सेंटर डैशबोर्ड के भीतर मैन्युअल रूप से करना होगा। साथ ही, आपके द्वारा भेजी गई चुनौतियों को देखने का कोई तरीका नहीं है।
  • उपलब्धियां - लीडरबोर्ड GameKit उपलब्धियों से भिन्न होते हैं, जिनकी गणना और प्रदर्शन अलग-अलग तरीके से किया जाता है, लेकिन यह बहुत आसान है। उन्हें ऐप में भी खींचा जा सकता है, जैसा कि आप नीचे देख सकते हैं:
स्विफ्टयूआई में गेमकिट लीडरबोर्ड को कैसे कार्यान्वित करें?
गेमकिट चुनौतियां और उपलब्धियां

रैपिंग अप

आप मुफ्त ओपन-सोर्स स्टेयर मास्टर क्लाइंबर आईफोन हेल्थ एंड फिटनेस ऐप को आज़मा सकते हैं जिसे मैंने ऊपर साझा किया है। मुझे यह जानना अच्छा लगेगा कि आप क्या सोचते हैं ताकि हम एक साथ सीख सकें।

यदि आपके कोई प्रश्न हैं, तो बेझिझक मुझसे सोशल मीडिया या ईमेल पर संपर्क करें।


  1. iPhone पर ऐप सब्सक्रिप्शन कैसे रद्द करें?

    ऐप स्टोर इन-ऐप ख़रीदारी से भरा हुआ है और हम आमतौर पर उन्हें आज़माने के लिए एप्लिकेशन के लिए साइन अप करते हैं। यदि आपने ऐप्स के लिए सब्सक्रिप्शन खरीदे हैं या नि:शुल्क परीक्षण के लिए साइन अप किया है और इसके लिए बिल नहीं प्राप्त करना चाहते हैं, तो इसके समाप्त होने से पहले आपको ऐप सब्सक्रिप्शन को रद्द क

  1. iMessage से ऐप आइकन कैसे छुपाएं

    iOS 11 कमाल के फीचर्स से भरा है! यह Apple के अब तक के सबसे बड़े सॉफ्टवेयर अपडेट में से एक है। हमें पूरा यकीन है कि आपने अपने उपकरणों को नवीनतम सॉफ़्टवेयर संस्करण में अपग्रेड कर लिया होगा जिसे Apple ने हाल ही में जारी किया है। संशोधित नियंत्रण केंद्र से, नया डिज़ाइन किया गया ऐप स्टोर, उन्नत सिरी समर्

  1. iOS 12 पर संदेशों में फ़ोटो कैसे एक्सेस करें?

    iOS 3 के लॉन्च होने के बाद से आप Apple डिवाइस पर संदेशों के माध्यम से वीडियो और फ़ोटो भेज सकते हैं। ऐसा करने के लिए आपको बस कैमरा आइकन पर टैप करना होगा और उन तस्वीरों या वीडियो को चुनना होगा जिन्हें आप भेजना चाहते हैं। IOS 12 के साथ, चीजें बदल गई हैं। हालांकि, इसका मतलब यह नहीं है, यह पूरी तरह से अक