问题 如何在用户购买应用内购买时移除广告[关闭]


我有一个应用程序,我希望用户能够支付少量费用来删除广告。我认为最好的方法(应用程序需要保持免费)是通过应用程序内购买。然而,我想知道删除广告的最佳方法以及用户购买升级后如何操作。任何帮助或建议都将非常感谢。


978
2017-12-21 08:16


起源



答案:


NSUserDefaults中的布尔值似乎是正确的选择。您可以在启动时查看广告,查看是否应展示广告,让应用隐藏或相应地展示广告,并在用户付费以禁用广告时将其设置为适当的值。

编辑添加:

刚看到 这在开发论坛上。如果您特别关注摆弄了NSUserDefaults布尔值的越狱设备上的用户,您可以使用钥匙串存储数据。钥匙串不能以与NSUserDefaults相同的方式进行干预。该链接的更多细节。

我一般不相信在反盗版方面花费了太多精力,但这是一种简单的方式来掩盖自己,并不比使用NSUserDefaults花费更多。


13
2017-12-21 08:23



如果用户卸载应用程序并再次安装,那会发生什么
您可以使用StoreKit重新授权任何应用内购买。 - Danilo Campos


答案:


NSUserDefaults中的布尔值似乎是正确的选择。您可以在启动时查看广告,查看是否应展示广告,让应用隐藏或相应地展示广告,并在用户付费以禁用广告时将其设置为适当的值。

编辑添加:

刚看到 这在开发论坛上。如果您特别关注摆弄了NSUserDefaults布尔值的越狱设备上的用户,您可以使用钥匙串存储数据。钥匙串不能以与NSUserDefaults相同的方式进行干预。该链接的更多细节。

我一般不相信在反盗版方面花费了太多精力,但这是一种简单的方式来掩盖自己,并不比使用NSUserDefaults花费更多。


13
2017-12-21 08:23



如果用户卸载应用程序并再次安装,那会发生什么
您可以使用StoreKit重新授权任何应用内购买。 - Danilo Campos


另一种方法是记录购买或恢复时收到的SKPaymentTransaction的收据。在随后的发布中,您可以在后台验证应用商店的收据,如有必要,重新启用广告以供下次启动。

验证商店收据文档

虽然我不认为这可以保护您不会粘贴来自其他地方的有效用户收据,但是比在NSUserDefaults中切换布尔值更难以规避。无论如何,任何人都不太可能为你的应用付费。


0
2018-01-17 22:22



你需要担心的事情(我相信)是用户每次重启应用时都可能没有网络连接。如果他们没有手机信号或WiFi接入,他们就无法进行验证,并且用户会获得广告 - 即使已付费也可以删除广告。我猜他们不会对此感到高兴。小心。 - Axeva
在这种情况下,您将收到网络错误而不是收据响应。你是对的;这不应该被解释为失败的验证。 - mrwalker
如果他们没有任何类型的网络连接,他们也不会收到任何广告。 - Scooter


好吧,这个问题不是iphone限制的。您应该应用众多安全算法之一。 (我不知道如何完成购买,但我会提出建议) 例如,您可以在购买后让应用程序将IMEI发送到购买服务器,该服务器将生成应用程序将保存的代码。然后,所有应用都会检查它是否启用/停用广告。 (尝试使用一些哈希算法等来制作代码)

请记住,所有系统都可以被破解,所以不要尝试太复杂的东西,这会给你真正的用户带来麻烦。


-2
2017-12-21 08:25



我不能说我同意。事实上,这不仅是矫枉过正,这是一个坏主意。首先,iPhone应用程序没有用于获取IMEI的API - 您只能获得UDID。其次,用户可能在某些时候很好地更换他们的手机。 iPhone SDK的StoreKit API提供了重新授权替换硬件上的未锁定功能的机制。为这种简单,可解锁的功能重新发明轮子似乎不是正确的选择。 - Danilo Campos