iOS和游戏中心 - 为托管游戏挑选朋友

时间:2010-12-17 12:09:04

标签: ios 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上运行,这两个iPad都有沙盒用户登录。在没有通知他们的情况下挑选朋友真的可能吗?

编辑:

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

2 个答案:

答案 0 :(得分: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,它的内部版本号是295,然后我在iPad上安装它,它有296版本,与bundle版本相同。这两个版本与Game Center的观点不相容。

正常(即时)多人游戏模式在尝试邀请朋友时只是说“不兼容”。基于回合的模式根本不会显示任何有用的东西。

整个事情令人困惑,因为在iTunesConnect的Game Center兼容性列表中它显示了短版本字符串(CFBundleShortVersionString),所以我假设只要在项目设置的“Version”字段中放入相同的值,它就会起作用。但事实并非如此,“Build”也必须相同。

答案 1 :(得分:0)

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