编写苹果游戏中心应用程序(翻译 1.14 向游戏中心提交成就)

2024-04-08 10:58

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

1.14 向游戏中心提交成就

问题

    你已准备好在游戏中使用成就。

解决方案

    使用GKAchievement类。

讨论

    提交成就的过程和提交成绩(条目1.10)相似,步骤是:

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

    2. 分配和初始化GKAchievement类型的对象。分配对象有两种方法:一是使用initWithIdentifier:方法;二是先简单地使用init方法,然后再使用setIdentifier:方法设置标识符。标识符是我们创建成就(条目1.13)时指定的“Achievement ID”。

    3. 使用对象的setPercentComplete:方法设置成就的完成度(0%-100%)。

    4. 调用reportAchievementWithCompletionHandler:方法,传递一个返回void、接受一个NSError类型参数的块对象。

    下面的示例代码提交ID为“MGL1HP1C”(条目1.13)的成就50%的完成度

    - (BOOL) reportAchievementWithID:(NSString *)paramAchievementID
                 percentageCompleted:(double)paramPercentageCompleted{

        BOOL result = NO;

        if ([paramAchievementID length] == 0){
            NSLog(@"Achievement ID cannot be empty.");
            return NO;
        }

        GKAchievement *achievement =
            [[[GKAchievement alloc] initWithIdentifier:paramAchievementID]
autorelease];

        NSLog(@"Setting percentage to %.02f", paramPercentageCompleted);
        [achievement setPercentComplete:paramPercentageCompleted];

        NSLog(@"Reporting the achievement...");
        [achievement reportAchievementWithCompletionHandler:^(NSError *error) {

            if (error == nil){
                NSLog(@"Successfully reported the achievement.");
            } else {
                NSLog(@"Failed to report the achievement. %@", error);
            }

        }];

        return result;

    }

    - (void) authenticateLocalPlayerAndReportAchievement{

        GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];

        NSLog(@"Authenticating the local player...");
        [localPlayer authenticateWithCompletionHandler:^(NSError *error) {

            if (error == nil){
                NSLog(@"Successfully authenticated the local player.");
                NSLog(@"Reporting achievement...");
                [self reportAchievementWithID:@"MGL1HP1C"
                          percentageCompleted:50.0f];
            } else {
                NSLog(@"Failed to authenticate the local player. %@", error);
            }

        }];
    }

    在调用authenticateLocalPlayerAndReportAchievement方法后,控制台输出类似如下的结果(除非有错误发生;在这种情况下,将输出错误信息):

        Authenticating the local player...
        Successfully authenticated the local player.
        Reporting achievement...
        Setting percentage to 50.00
        Reporting the achievement...
        Successfully reported the achievement.

    在成就提交到游戏中心之后,如果成就没有被设置为隐藏,那么本地玩家就可以打开游戏中心应用程序查看它(当然,还有该玩家使用该程序所获得的所有其他成就),如图1-14所示。


图 1-14 iOS模拟器上的成就

    一旦玩家选择“Achievements”选项,他将看到程序提交给游戏中心的所有成就,以及每个成就的进度,如图1-15所示。


图 1-15 iOS模拟器上的成就进度

    在iTunes Connect中创建成就之后,可能需要延迟一小段时间,你才能提交该成就的进度。如果你得到的错误说成就不存在,但你确信它存在,请等待5-10分钟,然后重试。

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



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

相关文章

苹果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到

MySQL中的两阶段提交详解(2PC)

《MySQL中的两阶段提交详解(2PC)》:本文主要介绍MySQL中的两阶段提交(2PC),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录引言两阶段提交过程sync_binlog配置innodb_flush_log_at_trx_commit配置总结引言在Inn