提供额外的媒体资源(图形/声音)作为Google Play应用内结算项目

caw*_*caw 5 android in-app-purchase in-app-billing

在我通过Google Play提供的Android应用中,我想提供可通过应用内结算方式购买的其他商品.

我想提供的项目类型是媒体内容,如图形和声音,通常会进入res应用程序的文件夹.

问题是当然必须保护这些资源.在其文档中,Google建议不要将内容存储在应用程序包中,而是在购买该项目后获取密钥,然后将密钥发送到检查密钥的远程服务器,如果成功,则提供图形/声音下载到应用程序.

从安全角度来看,这听起来不错.但是,如果我这样做,我就不能像使用正常访问资源那样容易地使用内容.例如,如果用户可以获得额外的背景PNG,我不能使用R.drawable.new_background但必须以编程方式解码位图,对吧?

那么是否有通过应用内结算下载其他媒体内容的替代方案或最佳做法?

我会说,因为每个坚定的人都可以对代码进行反向工程,无论如何,为什么不将内容存储在应用程序内部,而是在用户可能根本使用该内容时进行强力检查.

Evi*_*uck 2

不在应用程序中存储额外内容的明显原因之一是应用程序的下载大小。如果您提供音频作为附加内容,它可能会大大增加应用程序的大小。用户也关心它。此外,它还可以更轻松地发布其他内容,因为您可以通过服务器端/开发人员控制台来完成此操作,而无需发布应用程序更新。此外,如果您想提供高质量的图形,您将能够直接向设备提供适当版本的图像,而无需存储所有密度/屏幕尺寸版本。

如果您担心安全性,您始终可以使用加密和签名来访问资源,并通过适当地混淆您的代码(甚至将安全/解密相关代码移至本机端,这也将使其更快),从而使攻击者的日子更加艰难。

是的,这会产生一个缺点,您必须以编程方式解码它们,而对此无能为力。老实说,我不明白为什么这有什么大不了的,相反,我认为您将拥有更多数据驱动的资源访问权限,这非常方便。

总而言之,我真的不认为这样做有任何标准,这取决于您的应用程序和内容类型。如果你提供固定数量的5-10张图片,那么将它们保存在本地就完全没问题,如果内容更丰富、项目更多、资源更重,那么客户端-服务器会更适合你。