Tag: 套件

如何在我的应用程序中使用ORKESerializer?

我正在开发我的第一个ResearchKit应用程序。 我一直在看这个video 。 其中一种对我有用的技术是将调查结果序列化为JSON。 video中使用的方法是ORKESerializer.JSONDataForObject(taskResult) 。 他解释说,这不是研究套件的标准部分,但它被包含在GitHub上的一个名为ORKTest的testing应用程序中。 我设置了我的taskViewController委托,就像他在video上设置的那样: extension ViewController : ORKTaskViewControllerDelegate { func taskViewController(taskViewController: ORKTaskViewController, didFinishWithReason reason: ORKTaskViewControllerFinishReason, error: NSError?) { switch reason { case .Completed: let taskResult = taskViewController.result let jsonData = try! ORKESerializer.JSONDataForObject(taskResult) if let jsonString = NSString(data: jsonData, encoding: NSUTF8StringEncoding) { print(jsonString) } break case .Failed, .Discarded, .Saved: break } //Handle […]

基于回合的Game Center游戏的不同版本不能看到彼此的比赛

每次我向testing人员部署一个新版本时,旧版本的游戏都不再可用。 作为testing,我在一个设备上安装了内部版本63(由agvtool编号),另外一个设备上安装了64版本。 我从64岁开始邀请。63人什么也没有看到(既没有Game Center邀请,也没有使用GKTurnBasedMatchmakerViewController )。 于是我安装了64个,邀请出现了。 我正在使用一个脚本来build立(使用xcodebuild来创build一个档案,然后压缩一个.ipa),虽然每次都是一样的脚本。 我还没有看到任何提到这个的文档,这让我担心一旦游戏在App Store中进行更新。 如果两个设备具有相同的构build,则一切运行良好。 (如果我从Xcode构build并将其复制到附加设备 – 这些不是存档构build虽然似乎没有相同的问题。)这使我认为这不是一个configuration问题(因为相同的configuration文件被一直使用)。

GKLocalPlayer身份validation不起作用,但isAuthenticated返回YES(游戏中心沙箱)

我正在整合我的游戏中的基于回合的比赛,并且几天前我开始从GameKit API中发现奇怪的错误,说本地玩家没有通过身份validation,即使他是。 当我启动应用程序时,调用authenticateHandler ,显示视图控制器,input密码后,再次调用authenticaHandler ,本地播放器似乎被authentication。 isAuthenticated返回YES 。 但是,一旦我开始使用任何GameKit API(例如loadFriendsWithCompletionHandler: ,就会返回错误信息,说明播放器尚未经过身份validation。 这是处理authentication更改的代码。 [[GKLocalPlayer localPlayer] setAuthenticateHandler:^(UIViewController *viewController, NSError *error) { if ([[GKLocalPlayer localPlayer] isAuthenticated]) { // Player authenticated } else { // Player not authenticated if (viewController != nil) { // Present view controller } } }]; 这是调用任何GameKit方法时收到的错误消息。 请注意,返回错误时, -isAuthenticated仍然返回YES。 找不到匹配项:Error Domain = GKErrorDomain Code = 6“请求的操作无法完成,因为本地播放器尚未validation。 […]

警告添加事件监听器回合基于IOS的游戏

这里是gamekithelper.m中的代码 – (void)authenticateLocalPlayer { //1 GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer]; //add a weak local player __weak GKLocalPlayer *blockLocalPlayer = localPlayer; if (localPlayer.isAuthenticated) { [[NSNotificationCenter defaultCenter] postNotificationName:LocalPlayerIsAuthenticated object:nil]; return; } //2 localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error) { //3 [self setLastError:error]; if(viewController != nil) { //4 [self setAuthenticationViewController:viewController]; *******problem code************ // add event handler [blockLocalPlayer registerListener:self]; […]

Swift显示游戏中心排行榜

现在我正在努力使我创build的排行榜显示出来。 玩家authentication很好,但是当游戏中心窗口打开时很奇怪。 这是一张图片: 这里是我用来显示这个图像的代码: override func touchesBegan(touches: NSSet, withEvent event: UIEvent) { self.showLeaderboard() } func showLeaderboard() { var leaderView = UIViewController() var leaderViewController = GKGameCenterViewController(rootViewController: leaderView) leaderViewController.viewState = GKGameCenterViewControllerState.Leaderboards leaderViewController.leaderboardIdentifier = "High_Score_Board" self.showViewController(leaderViewController, sender: self) //self.presentViewController(leaderViewController, animated: true, completion: nil) } func leaderboardViewControllerDidFinish(controller: GKGameCenterViewController){ controller.dismissViewControllerAnimated(true, completion: nil) } 所有这一切都在我的GameViewController。 此外,即使这个工程,我将如何访问我的SKScenes这个方法? 谢谢您的帮助!

使用WKWebView创build自定义ORKStep

我对iOS开发比较陌生,目前使用Swift来开发一个原型的ResearchKit应用程序。 其中一个要求是在一个WKWebView中embedded一个WKWebView ,包含三个步骤: ORKQuestionStep , ORKWebViewStep , ORKCompletionStep 。 我似乎无法find关于如何使用Swift子类化ORKStep和ORKStepViewController创build自定义步骤的很多信息。 有人可以指导我正确的方向如何子类ORKStep和ORKStepViewController显示使用Swift的WKWebView ? 先谢谢你!

处理Game Centerauthentication

根据苹果文档,我们应该这样做来处理GCauthentication: – (void) authenticateLocalUser { GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer]; if(localPlayer.authenticated == NO) { [localPlayer setAuthenticateHandler:(^(UIViewController* viewcontroller, NSError *error) { if (!error && viewcontroller) { DLog(@"Need to log in"); AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; [appDelegate.window.rootViewController presentViewController:viewcontroller animated:YES completion:nil]; } else { DLog(@"Success"); } })]; } } 我们给了这个信息: 如果设备没有authentication播放器,则游戏套件将视图控制器传递给您的authentication处理器。 呈现时,此视图控制器显示authentication用户界面。 你的游戏应该暂停其他需要用户交互的活动(比如你的游戏循环),呈现这个视图控制器然后返回。 当玩家完成与其交互时,视图控制器被自动解除。 我的问题是,我们如何知道这个视图控制器何时被解散,我们如何知道身份validation是否成功? 很明显,我需要知道身份validation是否正常工作,如果因为神奇的GC视图控制器的提示而不得不暂停游戏,我需要知道什么时候恢复游戏。

删除处于无效状态的GKTurnBasedMatch

我正在做一些尝试来学习GameKit,我做了一个简单的游戏和一个界面,列出了我的玩家的匹配。 我正在试图增加使用removeWithCompletionHandler:方法去除游戏的能力,但是我在删除似乎进入无效状态的GKTurnBasedMatch时遇到了问题。 有问题的比赛的po打印: $0 = 0x1d590d20 <GKTurnBasedMatch 0x1d590d20 id:858d8257-cc49-4060-b1d8-38c09a929e3c status:Ended message: taken:2013-03-08 18:08:47 +0000 created:2013-03-08 03:24:14 +0000 current:<GKTurnBasedParticipant 0x1d58c020 – id:G:1717956303 (local player) status:Invited outcome:None lastTurn:(null)> participants: <GKTurnBasedParticipant 0x1d58bc90 – id:G:1717239488 status:Done outcome:Quit lastTurn:2013-03-08 18:08:47 +0000> <GKTurnBasedParticipant 0x1d58c020 – id:G:1717956303 (local player) status:Invited outcome:None lastTurn:(null)> > 这似乎表明比赛已经结束。 然而,其中一个参与者的结果是:没有,我被文档领导认为是无效的游戏结束。 试图简单地删除游戏给出: 请求的操作无法完成,因为一个或多个参数无效。 尝试设定结果并结束游戏时,会给出: 请求的操作无法完成,因为会话处于无效状态。 我想也许我不能删除游戏,因为本地玩家是积极的参与者,但participantQuitInTurnWithOutcome:… endTurnWithNextParticipants:…和endTurnWithNextParticipants:…都给出了错误: 请求的操作无法完成,因为会话处于无效状态。 […]

如何创build逼真的.scn文件?

看苹果示例AR应用程序,有许多逼真的对象(杯子,蜡烛等)。 但是使用Xcode上的场景编辑器编辑器很显然,这只允许您创build基本对象。 我的问题是,什么软件/文件可以用来创build真实的scn对象? 我确信有一些软件可以让你创build3D模型并将它们转换成scn文件。 我只是不知道要使用哪个软件或哪些文件可以转换为scn 注意:我明白,这个问题可能太模糊/广泛的Stackoverflow准则。 我只是不知道在哪里提出我的问题,这似乎是最好的地方

我怎样才能覆盖SKScene在Swift的SCNScene?

在互联网上有一些覆盖教程,在某些时候都使用overlaySKScene 。 这在某种程度上是不可能在我的项目中,因为(我猜)我的视图不使用SCNView的构造函数( overlaySKScene是其中的一部分)。 在ViewController的viewDidLoad中,基本上只有MainScene被创build: viewDidLoad() { self.sceneView = MainScene(view: self.view)) } …在这里(注:SCNScene而不是SCNView): class MainScene: SCNScene, SCNPhysicsContactDelegate {… init(view:UIView) { scnView = view as! SCNView super.init() scnView.scene = self; (…) } 现场是完全创build的,现在我想覆盖SKScene。 有谁知道如何?