Game Center API +应用程序内购买API =单个应用程序的两个不同用户帐户?

时间:2010-10-25 19:18:05

标签: iphone ios in-app-purchase gamekit game-center

如果我有一个支持Game Center的应用程序,并且我想提供成就来完成作为应用程序内购买销售的拼图包,我该如何同步为应用内购买而收费的iTunes帐户与正在进行购买的Game Center用户帐户?据我了解,它们是两个独立的用户帐户,可以在两个不同的位置访问(Game Center帐户可以在Game Center应用程序中访问,iTunes帐户可以在“设置”应用程序中访问)。

如何避免这种情况发生......

  1. Game Center Player1登录,运行我的应用程序并购买拼图包
  2. 游戏中心Player1注销,Game Center Player2登录,运行我的应用程序并播放完成Player1购买的拼图包,Player2获得成就。
  3. Game Center Player2注销,Game Center Player1登录并找到他/她已经完成的拼图包,因此Player1无法获得同样的成就。
  4. 我是否误解了这些用户帐户的工作原理?如果没有,当玩家登录和退出游戏时,有没有办法将游戏中心帐户与iTunes帐户同步?这个问题有什么解决方法吗?对于任何销售内容的多人游戏而言,这似乎是一个相当普遍的问题。

    非常感谢!

4 个答案:

答案 0 :(得分:2)

这是一个很好的问题。 :)就成就而言,我猜你可以用登录的GKPlayer中的playerId将它们存储在设备上,一旦登录播放器的成就完成,你就可以与Game Center同步。

至于同步iTunes和Game Center帐户,我真的不知道。通常,您可以存储有关设备上是否已进行购买(即可用功能)的一些信息。使用该功能(或允许使用该功能)是否合乎逻辑?应该依赖于设备,而不是GC用户依赖?但是,如果有人使用他们的帐户将您的内容一次又一次地下载到朋友的设备上会发生什么呢?

嗯......我希望其他人能分享他们对此的看法。但我发现游戏中心的问题收到的观点和答案非常低:(

答案 1 :(得分:2)

所以这就是我要做的事情,这实际上是一种相当简单的方法。我将使用核心数据在本地跟踪用户在购买的拼图包中的进度,因为它可以快速启动和运行。每次新的GC用户登录时,我都会创建一个新的用户对象并跟踪他们在拼图包中的进度,并在需要时报告GC中的成就。当GC用户稍后登录时,我将调整拼图包的状态以匹配核心数据中定义的当前进度。这样,任何iTunes帐户都可以购买拼图包,并且任何使用该设备的人都可以使用它们。每当任何GC用户登录GC并播放我的应用程序时,他们都可以访问相同的购买拼图包,但他们的进度和成就将独立于其他GC用户进行维护。

如果设备上没有安装GC,我可以禁用所有GC功能,只需启动应用程序,因为只有一个默认播放器。

应该很简单。

答案 2 :(得分:0)

我正在尝试提出解决此问题的解决方案。如果使用服务器产品交付模式,则可以在很大程度上解决问题。应用程序将购买的项目发送到服务器;在检查凭据后,服务器将项目交付给应用程序。有一些极端情况我还是不知道如何解决,基本上处理整个流程中断的情况,这取决于IAP的实现。仍然没有100%肯定。

答案 3 :(得分:0)

您是否可以在手机上记录特定用户已购买哪些成就,然后检查哪个用户已启用并启用或停用所购买的内容 - 您必须有一种方法可以跟踪不同的内容玩家进步(我可以看到用户可能没有登录到GC的潜在问题等)。我还没有这样做,所以我计划下一场比赛。