我发现许多用户使用所谓的“IAP 破解器”而不是在应用内购买 (IAP) 中购买商品。我还了解到 Zynga Poker 和 Pokerist 已经检测到 IAP 破解程序并防止伪造 IAP。我想检测哪部手机正在使用 IAP 破解程序。对于 Cydia 黑客工具,我可以通过应用程序路径找到它。
但是因为我不相信 iAP 破解程序属于特定的应用程序。我想我可以通过调用“Url Scheme”来检查,但我不知道名字。有没有人知道怎么做?
最佳答案
目前最好的解决方案似乎是使用外部服务器验证 IAP 交易,然后发送回某种特定于设备的 key 来解锁只能在该服务器上生成的付费项目。这不是万无一失的,但它应该使您的应用程序对任何通用 IAP 破解系统具有高度抵抗力;想要破解您的应用程序的人几乎必须专门为它开发破解程序。 (这要复杂得多,远远超出了大多数使用 IAP Cracker 的人的能力范围)
以下是您基本上需要做的:
(请参阅下面编辑后的文本,了解您现在需要在第 3 步中进行的一些额外验证)
在您的情况下,由于您的应用程序已经被破解并且您正试图停用非法获取您的 IAP 项目的人,您将在您的应用程序的新版本中推出此功能,然后在新版本的第一次调用 restoreCompletedTransactions运行版本以重新验证/重新激活您的合法用户的购买并阻止其他所有人。
然而,我应该补充一点,这是一个 LOT 的工作——我们花了几周的程序员时间让它顺利运行,尽管现在有开源代码可以处理大部分步骤 2 和 3你。重新激活步骤还有支持和公关成本 - 不可避免地,有些人会更改 iTunes 帐户或没有互联网连接或类似的东西,他们可能会很生气,甚至短暂地失去对他们合法支付的东西的访问权限.
您需要权衡是否真的值得为此投入时间,因为该破解仅适用于越狱用户(因此 90% 的潜在客户不受影响)并且大多数安装它的人不太可能为您的应用付费反正;不要被大量用户破解你的应用程序吓到了,很多人会很乐意免费下载一些东西,即使他们从不付费。您最好将时间花在使合法用户受益的改进上(并鼓励更多人购买您的应用)。
EDIT 一年后,这仍然(大部分)准确,但要处理今天宣布的拦截并重新发送真实收据的新破解,现在需要在服务器端做更多的工作。 (幸运的是,如果您已经设置了验证服务器,您应该可以在不更新您的应用程序的情况下执行此操作)两个新要求:
1) 检查您从 Apple 服务器返回的解密收据中的产品 ID(应用程序 ID 和 IAP 产品之一)是否与用户购买的产品实际匹配。
2) 检查收据中的交易 ID(或恢复收据的恢复交易 ID)以前从未使用过,通过记录以前使用过的交易 ID。
尽管现在非越狱用户可以使用 IAP 破解,但我的基本观点仍然是,这可能比它的值(value)更麻烦 - 收回您将花费的时间来实现和维护一批完全不有趣的代码,你需要从那些不愿意为你的产品支付费用的人那里获得大量额外的销售额,他们愿意为了避免这样做而大量损害他们 iPhone 的安全性。
关于iphone - 如何检测 "IAP crackers"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7465713/