如何将“非消费品购买”与“在线多人游戏服务器”同步

时间:2013-10-07 09:28:22

标签: ios mobile in-app-purchase multiplayer online-game

我们正在开发适用于iOS平台的在线移动多人游戏。

在我们的游戏中,玩家可以购买并激活“PRO”模式以获得额外的好处。

因此,我们创建了一种“非消费”类型的应用内购买。因为,“PRO”模式是一种一次性购买,永远激活的项目。我们将激活它并在服务器上存储必要的数据,但我们还需要有关“谁刚从iTunes游戏商店购买此项目”的信息。

我的问题是:我们如何同步用户的appleid和服务器游戏帐户? appleid是一个我们无法从SDK中获取的私有变量。

我们也无法使用 identifierForVendor ,因为有人可以在同一设备上使用不同的帐户登录和注销。

这种情况有什么解决方案吗?或者您建议我将此项目更改为“耗材”类型并处理服务器端的所有工作? (我想这种情况可能会在将来造成某种麻烦)

编辑:如何检测到:有人删除应用程序,重新安装,使用不同的帐户登录游戏服务器并恢复此帐户的PRO模式(他可以很容易地做这个可能很多他玩游戏的朋友)我我想知道,我怎么能匹配appleuser< ==> gameuser 在这种情况下?

2 个答案:

答案 0 :(得分:0)

您可以为非消耗品实施“restoreCompletedTransactions”方法。

它已经准备好使用Apple的机制,允许用户恢复购买 - 你只需提供一个按钮和实现。

同时检查:https://developer.apple.com/in-app-purchase/In-App-Purchase-Guidelines.pdf

答案 1 :(得分:0)

我找到了解决方案

服务器产品型号部分进行了解释。

游戏服务器和itunes服务器之间有额外的收据验证过程。我通过移动应用程序获得横切收据数据,将其发送到游戏服务器,然后游戏服务器检查此收据是否有效。

https://developer.apple.com/library/mac/documentation/NetworkingInternet/Conceptual/StoreKitGuide/APIOverview/OverviewoftheStoreKitAPI.html#//apple_ref/doc/uid/TP40008267-CH100-SW11