- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想知道如何知道用户何时完成 Game Center 登录表单。我正在自动登录 Facebook,但我需要等待 Game Center 登录完成。有什么方法可以知道吗?
-(void) authenticateLocalPlayer {
GKLocalPlayer* localPlayer = [GKLocalPlayer localPlayer];
localPlayer.authenticateHandler =
^(UIViewController *viewController,
NSError *error) {
[self setLastError:error];
if (localPlayer.authenticated) {
_gameCenterFeaturesEnabled = YES;
NSLog(@"local Player Info: %@",localPlayer);
[[UserManager sharedInstance] setGameCenterId:localPlayer.playerID];
[[UserManager sharedInstance] setUserName:localPlayer.alias];
[self retrieveFriends];
} else if(viewController) {
[self presentViewController:viewController];
} else {
_gameCenterFeaturesEnabled = NO;
}
};
}
-(void) setLastError:(NSError*)error {
_lastError = [error copy];
if (_lastError) {
NSLog(@"GameKitHelper ERROR: %@", [[_lastError userInfo]
description]);
}
}
-(UIViewController*) getRootViewController {
return [UIApplication
sharedApplication].keyWindow.rootViewController;
}
-(void)presentViewController:(UIViewController*)vc {
UIViewController* rootVC = [self getRootViewController];
[rootVC presentViewController:vc animated:YES completion:nil];
}
最佳答案
这里引用自 authenticateHandler
文档
The authenticate handler will be called whenever the authentication process finishes or needs to show UI. The handler may be called multiple times. Authentication will happen automatically when the handler is first set and whenever the app returns to the foreground.
If the authentication process needs to display UI the viewController property will be non-nil. Your application should present this view controller and continue to wait for another call of the authenticateHandler. The view controller will be dismissed automatically.Possible reasons for error:
1. Communications problem
2. User credentials invalid
3. User cancelled
所以这个block会被多次调用,例如,如果用户没有登录,一个 View Controller 将被传递到这个 block ,在你呈现它并且用户提交表单之后,他的 block 将再次执行。
这是处理身份验证的代码:
- (void)authenticateLocalPlayer
{
GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
__weak typeof(localPlayer) weakLocalPlayer = localPlayer;
localPlayer.authenticateHandler =
^(UIViewController *viewController, NSError *error)
{
if (error) {
// Something happened, handle it...
return;
}
__strong typeof(weakLocalPlayer) strongLocalPlayer = weakLocalPlayer;
if (viewController) {
// Just show it, user needs to submit the form
return;
}
if (strongLocalPlayer.isAuthenticated) {
// User completed login, do FB login
} else {
// GameKit is disabled, show guide to enable it
}
};
}
关于IOS 游戏中心 : How to know when default sign in form for game center is finished?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30129062/
我正在使用 COM 库 RCWs 。我一直发现最好的做法是在所有非托管资源超出范围之前手动释放它们并进行垃圾收集。我不希望这“减慢”我的应用程序的速度,并且我不在乎这实际上何时完成(如果有的话)在应用
我认为作为一个挑战,我应该编写一个基于 javascript 的游戏。我想要声音、图像和输入。模拟屏幕的背景(例如 640x480,其中包含我的所有图像)对于将页面的其余部分与“游戏”分开非常有用。我
在抓取网站的单个页面时,我使用 Beautiful Soup 取得了巨大成功,但我有一个新项目,我必须在其中检查大量网站,看看它们是否包含指向我网站的提及或链接。因此,我需要检查每个站点的整个站点。
我期待构建一个高度依赖地理数据的应用程序。 该应用程序将使用 HTML5 获取 GPS 数据的能力,并将进行诸如寻找最近的街道、寻找两点之间的最短路径等计算。我正在考虑使用 Google map 等平
我在使用 liquibase 时遇到问题。当我运行我的 J2EE 应用程序时,liquibase 告诉我: liquibase.exception.ValidationFailedException:
我的 iphone 上有一个应用程序,它允许我也可以通过 ftp 从我的 linux 桌面传输歌曲。应用显示主机地址为192.168.0.4并且要使用的端口是5021 .我可以从 filezilla
回答者已经知道的东西,但无论如何在这里展示我的思考过程: 从 HLL 到机器代码,这里有一组粗略的发生的事件(有链接器和其他东西,但现在让我们忽略它): HLL --> 编译器 --> 汇编器 ---
显然,下面的函数是不可能的,因为不可能永久地解开一个 IO 值(忽略 unsafePerformIO 或类似的): unwrapIO :: IO String -> String unwrapIO (
我在测试机器上安装了 Java 版本 45。高安全性设置表示无法在旧版本的 Java 上运行未签名或自签名的应用程序,事实上它无法运行自签名的小程序。 这个版本如何能够检测到它是旧版本?首次部署时它肯
怎么可能跳过 SemaphoreCI 上的一些测试?换句话说,是否有可能知道我们何时对 Semaphore 运行特定测试? 最佳答案 SemaphoreCI 将 CI 环境变量设置为 true。 有关
我知道我可以使用 xcodebuild 启动应用程序的单元测试,但我想知道什么告诉应用程序在启动期间运行测试,它是发送给应用程序的特殊参数还是它为了运行测试(使用 XCTest)进行不同的编译? 最佳
我对 Joomla 相当陌生(我更喜欢使用 Wordpress),我有一个关于模块位置的问题。 模块可以知道它所处的位置吗?例如我可以做这样的事情: if(modulePosition =='left
我有一个简单的 Spring Boot 应用程序,它从 Kafka 读取并写入 Kafka。我写了一个 SpringBootTest使用 EmbeddedKafka测试这一切。 主要问题是:有时测试失
我想知道 R 对它运行的硬件/系统有什么了解。 例如,我知道使用“sessionInfo()”会发现一些事情。但是是否也可以检查计算机的 CPU/内存?是否可以为所使用的计算机设置一些唯一标识符? 动
我试图掌握 PHP 和 MYSQL 编程,但在看到示例后,我无法理解 mysql_fetch_row 如何知道要返回哪一行。例如: 在上面的代码中,echo $row[0]; 返回表中第一列的数据,
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我得到了一个 makefile,我将其修改为: ############################################ # Makefile using OCI (Oracle Ca
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 4 年前。 Improve this qu
相关:What does casting do at compiler/machine level? 假设我有自定义类型。 A 型是 B 型的子类型。 最初,我的变量类型为 A 类型。然后我将其转换为
想到这里有个奇怪的问题。例如,假设您在服务器上部署了执行以下操作的代码: //GET request called when a URL is hit public void gETCalled(){
我是一名优秀的程序员,十分优秀!