编写苹果游戏中心应用程序(翻译 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

相关文章

Spring Cloud之注册中心Nacos的使用详解

《SpringCloud之注册中心Nacos的使用详解》本文介绍SpringCloudAlibaba中的Nacos组件,对比了Nacos与Eureka的区别,展示了如何在项目中引入SpringClo... 目录Naacos服务注册/服务发现引⼊Spring Cloud Alibaba依赖引入Naco编程s依

Git如何修改已提交人的用户名和邮箱

《Git如何修改已提交人的用户名和邮箱》文章介绍了如何修改Git已提交人的用户名和邮箱,包括注意事项和具体步骤,确保操作正确无误... 目录git修改已提交人的用户名和邮箱前言第一步第二步总结git修改已提交人的用户名和邮箱前言需注意以下两点内容:需要在顶层目录下(php就是 .git 文件夹所在的目

基于.NET编写工具类解决JSON乱码问题

《基于.NET编写工具类解决JSON乱码问题》在开发过程中,我们经常会遇到JSON数据处理的问题,尤其是在数据传输和解析过程中,很容易出现编码错误导致的乱码问题,下面我们就来编写一个.NET工具类来解... 目录问题背景核心原理工具类实现使用示例总结在开发过程中,我们经常会遇到jsON数据处理的问题,尤其是

javaScript在表单提交时获取表单数据的示例代码

《javaScript在表单提交时获取表单数据的示例代码》本文介绍了五种在JavaScript中获取表单数据的方法:使用FormData对象、手动提取表单数据、使用querySelector获取单个字... 方法 1:使用 FormData 对象FormData 是一个方便的内置对象,用于获取表单中的键值

Redis 多规则限流和防重复提交方案实现小结

《Redis多规则限流和防重复提交方案实现小结》本文主要介绍了Redis多规则限流和防重复提交方案实现小结,包括使用String结构和Zset结构来记录用户IP的访问次数,具有一定的参考价值,感兴趣... 目录一:使用 String 结构记录固定时间段内某用户 IP 访问某接口的次数二:使用 Zset 进行

Redis如何使用zset处理排行榜和计数问题

《Redis如何使用zset处理排行榜和计数问题》Redis的ZSET数据结构非常适合处理排行榜和计数问题,它可以在高并发的点赞业务中高效地管理点赞的排名,并且由于ZSET的排序特性,可以轻松实现根据... 目录Redis使用zset处理排行榜和计数业务逻辑ZSET 数据结构优化高并发的点赞操作ZSET 结

Git提交代码详细流程及问题总结

《Git提交代码详细流程及问题总结》:本文主要介绍Git的三大分区,分别是工作区、暂存区和版本库,并详细描述了提交、推送、拉取代码和合并分支的流程,文中通过代码介绍的非常详解,需要的朋友可以参考下... 目录1.git 三大分区2.Git提交、推送、拉取代码、合并分支详细流程3.问题总结4.git push

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma

利用Python编写一个简单的聊天机器人

《利用Python编写一个简单的聊天机器人》这篇文章主要为大家详细介绍了如何利用Python编写一个简单的聊天机器人,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 使用 python 编写一个简单的聊天机器人可以从最基础的逻辑开始,然后逐步加入更复杂的功能。这里我们将先实现一个简单的

使用PyQt5编写一个简单的取色器

《使用PyQt5编写一个简单的取色器》:本文主要介绍PyQt5搭建的一个取色器,一共写了两款应用,一款使用快捷键捕获鼠标附近图像的RGB和16进制颜色编码,一款跟随鼠标刷新图像的RGB和16... 目录取色器1取色器2PyQt5搭建的一个取色器,一共写了两款应用,一款使用快捷键捕获鼠标附近图像的RGB和16