跨两个 iOS 应用与 Game Center 自动匹配

Posted

技术标签:

【中文标题】跨两个 iOS 应用与 Game Center 自动匹配【英文标题】:Auto Matching with Game Center across two iOS apps 【发布时间】:2015-03-31 04:56:53 【问题描述】:

我们有两个 ios 应用程序:免费版和付费版。这些应用程序之间的唯一区别是免费版本作为 IAP 来完全解锁内容。

可以玩游戏的模式之一是 Game Center 上的多人游戏。当有人尝试匹配免费应用程序与免费应用程序或付费应用程序与付费应用程序时,自动匹配和邀请朋友工作得很好。

但问题是,当免费应用程序的用户登录并且另一个付费应用程序的玩家登录时,它永远不会找到自动匹配。这在沙盒和生产环境中都不起作用。

其他设置信息:

这两个应用都在同一个游戏中心组中 这两个应用都共享排行榜和成就(运行良好) 这两个应用都在 iTunes Connect 中正确设置了多人游戏兼容性。 我们已就此问题致函 Apple 支持,但他们回复说 Game Center 工作正常,iTunesConnect 中的其他设置似乎也正常,他们建议检查应用代码。

我已经尝试了所有方法,但似乎没有任何效果。这是我们在应用中进行游戏中心匹配的代码

GKMatchRequest *request = [[[GKMatchRequest alloc] init] autorelease];
request.minPlayers = 2;
request.maxPlayers = 2;
request.playersToInvite = nil; // This is not null only in case of friend invitations

GKMatchmakerViewController *mmvc =
    [[[GKMatchmakerViewController alloc] initWithMatchRequest:request] autorelease];
mmvc.matchmakerDelegate = self;

[_presentingViewController presentViewController:mmvc animated:YES completion:nil];

还尝试为GKMatchRequestplayerGroup 属性设置一个值,但没有帮助

问题:

我们正在使用的代码中是否缺少导致自动匹配不起作用的链接? 真的有人让它工作吗?如果是,您能否分享一些代码示例和/或缺少的设置说明?

【问题讨论】:

如果有任何 Game Center 专家,我们将不胜感激有关此问题的任何帮助? 有没有人想出这个问题的答案。我遇到了完全相同的问题,没有看到任何解决方案。排行榜和成就在应用程序之间正确共享,但两个应用程序无法使用 GKMatchmaker findMatchForRequest API 找到彼此 - 但是它们确实可以毫无问题地找到使用同一应用程序的玩家。 不,在这个问题上没有任何帮助或喘息的机会。我们的应用仍然面临同样的问题。 我正在考虑从组中删除原始应用程序并将其添加回来。你试过这个吗?我的逻辑是,第二个应用程序似乎具有正确的成就和排行榜 ID,但第一个应用程序没有,因为它仍然报告没有 grp 的旧成就和排行榜 ID。字首。所以我的猜测是,当原始应用程序被添加到 iTunes Connect 中的组时,转换没有正确完成,并且该应用程序并不是真正完全的组的一部分。 事实证明,删除添加到组中的第一个应用程序是不可能的,因此我建议的解决方法将行不通。 【参考方案1】:

这可能行不通。游戏组用于共享排行榜,但您无法创建匹配请求来连接两个不同的应用程序。如果版本信息(版本和构建)不完全相同,它甚至不适用于相同的应用程序。这对于自动化来说是正确的,但它也不会列出运行不同版本的应用程序的在线朋友或附近的设备。

【讨论】:

根据苹果文档 [这里] (developer.apple.com/library/ios/documentation/…) 它肯定说。 - “当你创建一个新版本的游戏时,你可以声明新版本是否与旧版本兼容”。 - “您可以创建不同的游戏(具有不同的捆绑包标识符)并仍然允许它们相互对战。” 所以我不确定你说的是否正确? 此外,当我们联系 Apple 支持时,他们确实说它应该在这个用例中工作,但我们的代码可能存在一些问题。【参考方案2】:

我已经找到了这个问题的答案。它与两个应用程序的应用程序前缀有关。如果他们有不同的应用程序前缀,它将不起作用。您可以联系 Apple https://developer.apple.com/contact/ 更改旧应用前缀以匹配新应用前缀。

您可以在此处阅读更多信息:https://developer.apple.com/library/ios/technotes/tn2311/_index.html Apple 完成旧应用程序的前缀更改后,它们将开始工作,无需任何代码更改,甚至无需重新提交应用程序。

【讨论】:

我检查了,我们的应用程序具有相同的应用程序前缀。但它仍然无法跨应用匹配玩家。

以上是关于跨两个 iOS 应用与 Game Center 自动匹配的主要内容,如果未能解决你的问题,请参考以下文章

iOS 8 beta 5 Game Center Sandbox 无法识别我的应用

iOS 6 Game Center authenticateHandler取消后无法登录

iOS 6 Game Center authenticateHandler 取消后无法登录

iOS 开发:验证 Game Center 用户的奇怪问题

如何更改 Game Center (iOS) 中的排行榜图标?

Game Center API + In-App Purchases API = 一个应用有两个不同的用户帐户?