我正在尝试使用[[GKMatchmaker sharedMatchmaker] startBrowsingForNearbyPlayersWithReachableHandler:]
. 本质上,我正在尝试实现无界面的本地比赛:只要我当地附近有玩家,我就想连接并开始比赛。重要的是,我只想为本地玩家这样做:我从不想通过互联网自动匹配。
我在 iTunes 连接中为我的应用程序启用了 Game Center,并在我用来测试的每台设备上注册了不同的沙盒帐户。
我已经尝试了匹配GKMatchmakerViewController
(在验证本地玩家之后)和程序匹配startBrowsingForNearbyPlayersWithReachableHandler:
,在 iPhone 4 和第四代 iPod Touch 上运行相同的代码。两者都找不到对方;使用GKMatchmakerViewController
寻找附近玩家的界面时停留在
寻找玩家...
spinner,并且在使用时startBrowsingForNearbyPlayersWithReachableHandler:
,通知块永远不会被调用。
这是我当前的测试代码块:
-(void)connectLocal
{
if( ![GKLocalPlayer localPlayer].isAuthenticated )
{
// authenticateLocalPlayer calls connectLocal again after authentication is complete
[ self authenticateLocalPlayer ];
return;
}
[[GKMatchmaker sharedMatchmaker] startBrowsingForNearbyPlayersWithReachableHandler:^(NSString *playerID, BOOL reachable) {
NSLog(@"Reachability changed for player %@", playerID );
} ];
}
文档在该主题上有点稀疏和混乱,尤其是在涉及本地多人游戏和互联网比赛之间的区别时。例如,似乎有必要在找到加入该比赛的球员之前验证本地球员并创建一场比赛(Creating Any Kind of Match Starts with a Match Request)。然而,这个小金块似乎另有暗示:
标准用户界面允许玩家发现附近的其他玩家,即使当前没有玩家直接连接到 Game Center。
此外,在Searching For Nearby Players中描述的流程中,在通过传递给的通知块找到玩家之后,直到第 3 步才创建匹配请求startBrowsingForNearbyPlayersWithReachableHandler:
。不幸的是,我从来没有走到那一步。
所以,问题:
1)我认为我可以startBrowsingForNearbyPlayersWithReachableHandler:
在验证本地播放器之前打电话是对的吗?GameKit 不会抛出错误,所以我假设它没问题。这可能是一个轻率的假设。我是否进行身份验证似乎没有太大区别。
2) 有没有人使用成功实现本地自动匹配[GKMatchmaker sharedMatchmaker] startBrowsingForNearbyPlayersWithReachableHandler:
?任何地方都有很好的示例代码来说明完整的流程,从浏览玩家到开始比赛,所有这些都是以编程方式进行的吗?
3) 关于是否可以在 iOS 模拟器中测试支持 GameKit 的应用程序,网络上似乎存在相互矛盾的报道。普遍的共识似乎没有,最好在 iOS 硬件上进行测试。我一直在使用 iPhone 4 和第四代 iPod Touch。对于那些成功测试过本地多人游戏的人,您使用了哪些测试设置和方法?