我有一个Android应用程序,有两个版本:免费版和高级版,功能更多,价格为0.99美元。
我希望采用In App Purchase方式,可以在免费版中购买高级功能。但是,我显然不想让已经购买付费应用的用户感到不安。
有没有经过验证的方法将单独的免费增值应用合并为一个?
现在,我正在考虑我提出的解决方案,如果检测到应用的付费版本安装在设备上,免费版会自动解锁其付费功能。我正在考虑在应用程序之间使用进程间通信。但是我没有IPC的经验,特别是在Android上,我不确定它是否适用于此处或特别强大。
答案 0 :(得分:1)
但是,我显然不想让已经购买付费应用的用户感到不安。
除非您为IAP收费少于付费应用以获得相同功能,否则我不确定这会导致任何用户投诉。无论他们是预付款还是以后付款,如果价格相同,那都无关紧要。
我正在考虑我提出的解决方案,如果它检测到应用的付费版本安装在设备上,免费版会自动解锁其付费功能。
只需查询PackageManager
以查看是否安装了其他应用,就可以轻松完成此操作。类似的东西:
try {
PackageInfo info = getPackageManager().getPackageInfo("com.example.paidapp", 0);
//If we got here, the paid app is installed.
// You can even check metadata, like which version they have
int installedVersion = info.versionCode;
} catch (PackageManager.NameNotFoundException e) {
//Paid app is not installed!
}
有些应用已经出于各种原因,使用"付费"打包作为免费应用程序的关键,因此它并非没有先例。
您可能需要参与的唯一IPC是,如果您想以某种方式将付费应用中的某些已保存数据读入免费应用。在这种情况下,我建议实现ContentProvider
以向其他应用程序公开所需的数据元素。我还会以signature
权限保护该提供商,以便只有您的应用程序才能访问它。