恐怕这个问题有点开放,但我希望这是有道理的,因为情况有点不寻常......
我们要达到的目标
我们的一款应用程序将预装在移动运营商即将推出的 Android 手机上。但是,在该预安装的应用程序中,应该解锁一些原本不可用的功能(对于从 Google Play 商店安装应用程序的用户)。例如,为新的付费订阅延长免费试用期。
到目前为止我们的想法
一种选择当然是应用程序的特殊构建,通过某些功能切换启用隐藏功能。然而,这个特殊的构建可能会在用户打开应用程序之前被 Play 商店的自动更新覆盖。
所以到目前为止,我们最好的猜测是预安装我们的主应用程序的正常版本和其他一些没有或只有极少 UI 的应用程序。然后,主应用程序将检测到其他关键应用程序的存在(通过包管理器)并基于此解锁隐藏的功能。
AFAICT 这是在 Google In App Purchases 支持非消耗性一次性产品之前处理付费应用程序免费试用的方式。只要两个应用程序使用相同的 key 签名,它也应该仍然有效,并且从 Android 11 开始,主应用程序在 AndroidManifest.xml
中声明 key .
到目前为止正确吗?
但是...
理想情况下,每个设备只能使用一次隐藏功能,即用户应该只能为一个新订阅申请延长免费试用期 - 而不能为他们的邻居和他们的狗申请额外的免费试用。
这不是一个非常强的要求,因此我们正在考虑在主应用程序和关键应用程序之间添加一些通信,并且关键应用程序将存储之前已声明该好处的事实。当然,这可能可以通过删除关键应用程序的应用程序数据来规避,但总比没有好......
所以,问题:
com.exampleapp.unlock.hiddenfeature1 = true
? - 我们可以查询哪个而不是检查关键应用程序的存在?这可能仍然容易受到多种用途的影响,但也许也有办法禁止这种情况? 还有什么?
从技术角度来看,一个明显的方法是查询设备的 IMEI(也许对于仍然可能的预安装应用程序?),然后将其与符合条件的设备列表进行比较,或者至少跟踪已声明隐藏功能的 IMEI。但是,当然,出于数据隐私的原因,这是不可能的。
所以,我希望我明确了我们的目标,非常感谢任何建议、建议和意见!
最佳答案
语境
PIA
GPA
. 问题
这些问题是您无法避免失败的各种情况,特别是如果用户在被 GPA 更新或简单的 SharedPreferences 清理/重新安装之前从未打开您的应用程序。
想法?
想法很便宜,所以对所有这些都持保留态度。我主要是在大声思考,因为我发现这是一个有趣的问题。
Licencing
?例如:使用 Google Play licencing目前我想不出其他的想法。
我不是在寻找代表,请随意选择更好的回应,但请告诉我们您选择做什么。 ;)
关于Android:在我们的应用程序的预装版本中寻找一种解锁隐藏功能的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63059624/