2011-06-17 15 views
7

मैं अपने ऐप के लिए गेम सेंटर लीडरबोर्ड बनाने की कोशिश कर रहा हूं। मैं ऐप्पल के चरणों का पालन कर रहा हूं और जीकेटापर से नमूना कोड का पालन कर रहा हूं, लेकिन मुझे गेम सेंटर में दिखाने के लिए कोई स्कोर नहीं मिल रहा है। मैंने आईट्यून्स कनेक्ट में लीडरबोर्ड स्थापित किया है। यहां कोड है जो स्कोर की रिपोर्ट करता है:सैंडबॉक्स लीडरबोर्ड खाली

- (void) reportScore: (int64_t) score forCategory: (NSString *) category { 
    GKScore *scoreReporter = [[[GKScore alloc] initWithCategory:category] autorelease]; 
    scoreReporter.value = score; 

    [scoreReporter reportScoreWithCompletionHandler:^(NSError *error) { 
     if (error != nil) 
     { 
      UIAlertView* alert= [[[UIAlertView alloc] initWithTitle: @"Score Report Failed!" message: [NSString stringWithFormat: @"Reason: %@", [error localizedDescription]] delegate: self cancelButtonTitle: @"Try Again..." otherButtonTitles: NULL] autorelease]; 
      [alert show]; 
     } 
    }]; 
} 

कोड ठीक चल रहा है। अलर्ट कभी नहीं दिखाया जाता है। लेकिन, जब मैं गेम सेंटर में जाता हूं, तो लीडरबोर्ड खाली होता है। मैं एक्सकोड 4.2 और आईओएस 5 चला रहा हूँ। कोई विचार?

उत्तर

-1

reportScoreWithCompletionHandler के लिए दस्तावेज़ का कहना है:

"। आपका आवेदन स्कोर वस्तु के लिए एक मजबूत संदर्भ रखना चाहिए जब तक रिपोर्टिंग कार्य पूरा हो गया है"

आप ऑटोरेलीज़िंग कर रहे हैं। चूंकि कार्य बाद में पूरा हो जाएगा, ऑपरेशन निष्पादित होने से पहले ऑब्जेक्ट को हटा दिया गया है।

2

इनिट को मेरे लिए तय करने के बाद स्पष्ट रूप से श्रेणी को सेट करना।

Scoreobject.category = category 

सही लीडरबोर्ड दिखाने के लिए मैंने वहां श्रेणी भी सेट की है।

leaderboardobject.category = @"mycategory"; 
0

1) कृपया जांचें कि आपने श्रेणी को सही तरीके से लिखा है या नहीं। हैरानी की बात है, जब भी मेरी श्रेणी गलत वर्तनी थी तब भी मुझे कोई त्रुटि नहीं मिली थी। टाइपो को सुधारने के लिए मेरे लिए समस्या तय की गई।

2) कृपया जांचें कि क्या आप GKLeaderboardViewController प्रस्तुत करने से पहले सही लीडरबोर्ड सेट कर रहे हैं? नीचे के रूप में सही ढंग से सेट करें:

GKLeaderboardViewController *leaderboardViewController = [[[GKLeaderboardViewController alloc] init] autorelease]; 
leaderboardViewController.category = @"yourcategoryname"; 
[youviewcontroller presentModalViewController:leaderboardViewController animated: YES]; 
0

दो सत्यापित GameCenter उपयोगकर्ताओं को एक लीडरबोर्ड से पहले किसी भी स्कोर लीडरबोर्ड में दिखाने के लिए स्कोर सूचना दी है चाहिए।

यदि आपके पास केवल अपने सैंडबॉक्स में एक उपयोगकर्ता है, तो दूसरा बनाएं और स्कोर की रिपोर्ट करें।

यदि यह अभी भी काम नहीं कर रहा है, तो सुनिश्चित करें कि आपने दोनों उपयोगकर्ताओं के ईमेल पते को सत्यापित किया है।

3

जो कुछ भी कहा गया है पूरी तरह से सही है:

  • आप एक int_64t स्कोर की जरूरत है;
  • आपको आईट्यून्स कनेक्ट पर स्थापित सभी चीजों की आवश्यकता है;
  • आपको एक सैंडबॉक्स खाते का उपयोग करने की आवश्यकता है।

जो मैंने अभी पाया है वह है कि श्रेणी के रूप में iTunesConnect में ऐसी कोई चीज़ नहीं है। दूसरी तरफ, आपको लीडरबोर्ड श्रेणी के साथ अपने जीकेएसकोर में प्रवेश करना होगा।

जो मैंने मंचों पर देखा है, उससे लगभग 2/3 लोगों को यह सही लगता है।

iTunesConnect में, जब आप एक लीडरबोर्ड कॉन्फ़िगर करते हैं, आप सेट:

  • इसके संदर्भ (जो मैं लंबे समय से सोचा श्रेणी था);
  • इसकी आईडी (जो वास्तविक श्रेणी के रूप में बाहर निकलती है)।

मैं आईडी के बजाय संदर्भ का उपयोग करके स्कोर पोस्ट करने का प्रयास कर रहा था।

दो बातें:

  • पहले, मैं कार्यक्रम (जो, किसी तरह से, स्वीकार्य है) की ओर से कोई त्रुटि थी;
  • दूसरा, एक बार मुझे यह सही हो गया, मुझे लगता है कि, जबकि कई लोग विपरीत दावा करते हैं, स्कोर दिखाने के लिए एक से अधिक सैंडबॉक्स खाते की आवश्यकता नहीं है।
संबंधित मुद्दे