1

我正在尝试将 Game Center 支持添加到我们的游戏中。它已经支持 OpenFeint,但我们也想支持 GC。

基本的身份验证和使用非常简单,而且似乎工作得很好(除了沙箱非常不稳定)。但是,由于我们的架构,我们希望将 GC 主要用于挑选朋友,而不是使用完整的邀请支持。所以,我正在寻找一种方法来使用像 GKMatchmakerViewController 这样的东西来只挑选朋友,而不是向他们发送邀请。我想显示玩家可以选择朋友然后只返回选择的朋友的普通视图,我不希望视图/GC 向选择的朋友发送任何东西。

    GKMatchmakerViewController * mmvc = [[[GKMatchmakerViewController alloc] initWithMatchRequest:request] autorelease];
    mmvc.matchmakerDelegate = my_delegate;
    mmvc.hosted = YES;

根据文档,这应该调用我的委托的didFindPlayers方法,但它似乎不起作用。托管标志无效,无论有没有它 GC 似乎都试图向选择的朋友发送一些东西,然后在 UI 中短暂地显示一个文本不兼容并忽略选择的朋友。

我在这里做一些根本错误的事情还是我想做的事情是不可能的?不兼容错误实际上是什么意思?我在两个都有沙盒用户登录的 iPad 之间运行。在不通知他们的情况下挑选朋友真的可能吗?

编辑:

当我尝试选择朋友时,GKMatchmakerViewController 显示的不兼容消息很奇怪我没有找到任何关于它可能意味着什么以及可能导致它的文档。一个简单的猜测是 GC 以某种方式认为沙盒用户安装了我的游戏的不同版本,并且这些版本不兼容。该游戏已经在应用商店中提供,但没有 GC 联网。沙盒环境能以某种方式从中获取一些信息吗?但是,没有在垫子上安装旧版本的游戏。

4

2 回答 2

3

对于那些仍然遇到这个问题的人。查看您的构建阶段,运行脚本部分。就我而言,我使用了其中一个自动增加内部版本号的脚本,这是跟踪此类事情的一种常见做法。但是,Game Center 不会接受这种方法。该脚本实际上采用 CFBundleVersion 并将其增加 1(有多种技术,我使用的技术只是 +1)。

#!/bin/bash
buildPlist=${INFOPLIST_FILE}
CFBundleVersion=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" $buildPlist)
CFBundleVersion=$(($CFBundleVersion + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $CFBundleVersion" $buildPlist

所以我在 iPhone 上安装 build,它的 build 号是 295,然后我在 iPad 上安装它,它有 296 build 版本,与 bundle 版本相同。从 Game Center 的角度来看,这两个版本是不兼容的。

尝试邀请朋友时,普通(即时)多人游戏模式只会显示“不兼容”。回合制模式根本不会显示任何有用的东西。

整个事情令人困惑,因为在游戏中心兼容性列表中的 iTunesConnect 上,它显示了短版本字符串(CFBundleShortVersionString),所以我假设只要我在项目设置的“版本”字段中输入相同的值,它就会起作用。但是,“构建”也必须相同。

于 2012-09-20T07:03:39.783 回答
0

我可以确认 Info.plist 中的 CFBundleVersion 必须完全匹配。我有一台设备版本为“4.00”,另一台设备版本为“4.0”,我收到“不兼容”消息。将它们都更改为“4.00”解决了这个问题。

于 2011-03-22T21:53:55.600 回答