编写苹果游戏中心应用程序(翻译 1.10 向排行榜提交得分)

本文主要是介绍编写苹果游戏中心应用程序(翻译 1.10 向排行榜提交得分),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.10 向排行榜提交得分

问题

    你已经在iTunes Connect中创建了至少一个排行榜,现在你想将玩家的成绩保存到排行榜。

解决方案

    使用GKScore类的实例方法reportScoreWithCompletionHandler:

讨论

    如果已经创建了排行榜,则遵循以下的步骤,以向排行榜提交成绩:

    1. 验证本地玩家(条款1.5)。

    2. 创建GKScore的实例,设置该实例的成绩分类为要使用的“Leaderboard ID”。

    3. 设置实例的value属性。

    4. 使用GKScore类的实例方法reportScoreWithCompletionHandler:。该方法接收一个参数,它必须是一个返回void、接受一个NSError类型的参数的块对象。你可以使用NSError参数来判断处理过程中是否有错误发生:

    - (BOOL) reportScore:(NSUInteger)paramScore
    toLeaderboard:(NSString *)paramLeaderboard{

        __block BOOL result = NO;

        GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];

        if ([localPlayer isAuthenticated] == NO){
            NSLog(@"You must authenticate the local player first.");
            return NO;
        }

        if ([paramLeaderboard length] == 0){
            NSLog(@"Leaderboard identifier is empty.");
            return NO;
        }

        GKScore *score = [[[GKScore alloc]
                           initWithCategory:paramLeaderboard] autorelease];

        score.value = (int64_t)paramScore;

        NSLog(@"Attempting to report the score...");

        [score reportScoreWithCompletionHandler:^(NSError *error) {
            if (error == nil){
                NSLog(@"Succeeded in reporting the error.");
                result = YES;
            } else {
                NSLog(@"Failed to report the error. Error = %@", error);
            }
        }];

        return result;

    }

    - (void) authenticateLocalPlayerAndReportScore{

        GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];

        if ([localPlayer isAuthenticated] == YES){
            NSLog(@"The local player has already authenticated.");
            return;
        }

        [localPlayer authenticateWithCompletionHandler:^(NSError *error) {

            if (error == nil){
                NSLog(@"Successfully authenticated the local player.");

                [self reportScore:10
                    toLeaderboard:@"MGL1LB"];
            } else {
                NSLog(@"Failed to authenticate the player with error = %@", error);
            }
        }];
    }

    authenticateLocalPlayerAndReportScore方法将验证本地玩家,向“Reference ID”为“MGL1LB”(条目1.9)的排行榜提交成绩(10分)。我的控制台窗口输出结果如下:

    Successfully authenticated the local player.
    Attempting to report the score...
    Succeeded in reporting the error.

    如果向不能存在的排行榜提交数据,则从reportScoreWithCompletionHandler:方法收到的错误将类似如下:

    Error Domain=GKErrorDomain Code=17 "The requested operations could
    not be completed because one or more parameters are invalid."
    UserInfo=0x5f43a90 {NSUnderlyingError=0x5f09390 "The operation
    couldn't be completed. status = 5053", NSLocalizedDescription=The
    requested operations could not be completed because
    one or more parameters are invalid.}

    查看提交到游戏中心(沙盒服务器)的成绩有三种方法:

    1. 在iOS模拟器中使用游戏中心应用程序。

    2. 用程序获取成绩(条目1.11)。

    3. 在程序的用户界面中显示排行榜(条目1.12)。

    后两种显示排行榜成绩给玩家的方法将在各自对应的章节介绍。此处,我只讲解如何使用iOS模拟器显示成绩:

    1. 在模拟器中打开游戏中心应用程序。

    2. 登录为本地玩家。

    3. 在屏幕下方导航到“Games”页签。

    4. 选择提交了成绩的游戏,你将看到游戏的菜单,如图1-10。


图 1-10 iOS模拟器中的游戏菜单

    5. 选择“Leaderboard”,将看到排行榜中的成绩(如图1-11)。


图 1-11 iOS模拟器中排行榜界面

    图1-11中的成绩是10,因为我们先前提交的成绩就是10。

这篇关于编写苹果游戏中心应用程序(翻译 1.10 向排行榜提交得分)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/885395

相关文章

SpringBoot+Redis防止接口重复提交问题

《SpringBoot+Redis防止接口重复提交问题》:本文主要介绍SpringBoot+Redis防止接口重复提交问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录前言实现思路代码示例测试总结前言在项目的使用使用过程中,经常会出现某些操作在短时间内频繁提交。例

苹果macOS 26 Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色

《苹果macOS26Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色》在整体系统设计方面,macOS26采用了全新的玻璃质感视觉风格,应用于Dock栏、应用图标以及桌面小部件等多个界面... 科技媒体 MACRumors 昨日(6 月 13 日)发布博文,报道称在 macOS 26 Tahoe 中

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

springboot加载不到nacos配置中心的配置问题处理

《springboot加载不到nacos配置中心的配置问题处理》:本文主要介绍springboot加载不到nacos配置中心的配置问题处理,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录springboot加载不到nacos配置中心的配置两种可能Spring Boot 版本Nacos

python编写朋克风格的天气查询程序

《python编写朋克风格的天气查询程序》这篇文章主要为大家详细介绍了一个基于Python的桌面应用程序,使用了tkinter库来创建图形用户界面并通过requests库调用Open-MeteoAPI... 目录工具介绍工具使用说明python脚本内容如何运行脚本工具介绍这个天气查询工具是一个基于 Pyt

Nacos注册中心和配置中心的底层原理全面解读

《Nacos注册中心和配置中心的底层原理全面解读》:本文主要介绍Nacos注册中心和配置中心的底层原理的全面解读,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录临时实例和永久实例为什么 Nacos 要将服务实例分为临时实例和永久实例?1.x 版本和2.x版本的区别

MyBatis编写嵌套子查询的动态SQL实践详解

《MyBatis编写嵌套子查询的动态SQL实践详解》在Java生态中,MyBatis作为一款优秀的ORM框架,广泛应用于数据库操作,本文将深入探讨如何在MyBatis中编写嵌套子查询的动态SQL,并结... 目录一、Myhttp://www.chinasem.cnBATis动态SQL的核心优势1. 灵活性与可

Mybatis嵌套子查询动态SQL编写实践

《Mybatis嵌套子查询动态SQL编写实践》:本文主要介绍Mybatis嵌套子查询动态SQL编写方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、实体类1、主类2、子类二、Mapper三、XML四、详解总结前言MyBATis的xml文件编写动态SQL

SpringCloud使用Nacos 配置中心实现配置自动刷新功能使用

《SpringCloud使用Nacos配置中心实现配置自动刷新功能使用》SpringCloud项目中使用Nacos作为配置中心可以方便开发及运维人员随时查看配置信息,及配置共享,并且Nacos支持配... 目录前言一、Nacos中集中配置方式?二、使用步骤1.使用$Value 注解2.使用@Configur

IDEA实现回退提交的git代码(四种常见场景)

《IDEA实现回退提交的git代码(四种常见场景)》:本文主要介绍IDEA实现回退提交的git代码(四种常见场景),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.已提交commit,还未push到远端(Undo Commit)2.已提交commit并push到