博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
编写苹果游戏中心应用程序(翻译 1.6 获取本地玩家的信息)
阅读量:4217 次
发布时间:2019-05-26

本文共 1650 字,大约阅读时间需要 5 分钟。

 

1.6 获取本地玩家的信息

问题

    验证了本地玩家,你还需要获得他的别名和其它一些信息。

解决方案

    使用GKLocalPlayer的各个有效属性,如alias

讨论

    GKPlayer对象表示游戏中心中的玩家。每个玩家拥有一些非常重要的属性:

    playerID

        玩家标识。该标识不应当显示给玩家。在排行榜中,玩家希望看到的是别名。在许多游戏中心方法中,我们首先要能够获取玩家的ID,并使用它们加载玩家的其它信息,比如某特定排行榜中的成绩。换句话说,仅当和游戏中心API打交道时玩家ID才会重要。

    alias

         在游戏中心注册过程中玩家设置的别名。

    isFriend

         该属性返回一个BOOL类型的值。它用来决定该玩家是否是当前已通过验证的本地玩家的好友。

        该属性仅在GKPlayer中有效。虽然GKLocalPlayerGKPlayer的子类,但它不能访问isFriend

    此处是获取本地玩家信息的演示代码。在该代码中,我想要演示的东西分为两个部分,每个部分都用块对象表示。其中的一个块对象简单地用来打印本地玩家的别名和玩家ID:

        void (^printLocalPlayerInfo)(void) = ^{

            GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
            if ([localPlayer isAuthenticated] == YES){
                NSLog(@"Player ID = %@", [localPlayer playerID]);
                NSLog(@"Player Alias = %@", [localPlayer alias]);
            }
        };

    第二个块对象作出验证,然后调用第一个块对象。

        - (void) authenticateLocalPlayerAndGetHerInfo{

            dispatch_queue_t concurrentQueue =
                dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
            dispatch_async(concurrentQueue, ^(void) {
                GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
                if ([localPlayer isAuthenticated] == NO){
                    [localPlayer authenticateWithCompletionHandler:^(NSError *error) {
                        if (error == nil){
                            NSLog(@"Successfully authenticated.");
                            dispatch_async(concurrentQueue, printLocalPlayerInfo);
                        } else {
                            NSLog(@"Failed to authenticate. Error = %@", error);
                        }
                    }];
                } else {
                    dispatch_async(concurrentQueue, printLocalPlayerInfo);
                }
            });
        }

    直白又简单!如果我调用authenticateLocalPlayerAndGetHerInfo方法,将打印下面的信息到控制台:

        Successfully authenticated.

        Player ID = G:1428628142
        Player Alias = Test Game User 1

    该信息仅当本地玩家已经通过验证才会输出到控制台。如果玩家还没有登录,则会提示玩家进行登录。如果玩家故意不登录或未能成功登录,则打印出错信息。

    本地玩家(GKLocalPlayer),和其它玩家(GKPlayer)不同,拥有一个叫作friends的属性,它定义了本地玩家的朋友信息。关于它的更多信息,参考条款1.8。

转载地址:http://jeami.baihongyu.com/

你可能感兴趣的文章
Conclusion for Resource Management
查看>>
Conclusion for Constructors,Destructors,and Assignment Operators
查看>>
《浪潮之巅》1 AT&T
查看>>
《浪潮之巅》2蓝色巨人 IBM公司
查看>>
《浪潮之巅》3水果公司的复兴
查看>>
《浪潮之巅》4计算机工业的生态链
查看>>
《浪潮之巅》5奔腾的芯 英特尔公司
查看>>
python语言程序设计基础笔记(三)从题目到方案
查看>>
读取txt文件出现出现多余空行问题
查看>>
从理论到实践开发自己的聊天机器人
查看>>
@***装饰器(python)
查看>>
最优化算法之梯度下降法
查看>>
激活函数之ReLU函数
查看>>
经典排序算法详解
查看>>
概述类加载器及类加载过程
查看>>
MySQL SQL优化总结
查看>>
MySQL MyISAM引擎的读锁与写锁
查看>>
面向对象与面向过程的本质的区别
查看>>
Java语言有哪些特点?
查看>>
idea创建maven项目并关联gitee
查看>>