简体   繁体   English

更改过滤器的副作用和 Android Play/Market 中现有应用程序的要求

[英]Side effects of changing filter and requirements of an existing app in Android Play/Market

No previous questions about it, so here I ask.以前没有关于它的问题,所以我在这里问。

Background:背景:

I have an old app, in free and paid versions, in the Play Market.我在 Play Market 中有一个旧应用程序,有免费版和付费版。 I created a new version, radically changed and with a different payment system (free app + in app purchases only, no more a paid version: reduce maintenance costs).我创建了一个新版本,彻底改变并使用不同的支付系统(免费应用程序 + 仅在应用程序内购买,不再是付费版本:降低维护成本)。 minSdkVersion also changed from 1.5 to 2.1. minSdkVersion也从 1.5 变成了 2.1。

Because of all those differences, I decided to upload a new app, not just update the current one (ie, not selectively provide a new apk for API 7+ --- multiple APKs).由于所有这些差异,我决定上传一个新应用,而不仅仅是更新当前应用(即,不选择性地为 API 7+ --- 多个 APK 提供新的 apk)。 This is especially important because of the new payment system, as I don't want to force old, paid customers, to buy everything again.由于新的支付系统,这一点尤为重要,因为我不想强迫付费的老客户再次购买所有东西。 I want to leave them alone and happy as they are (4.4/4.7 rating).我想让他们一个人呆着,像他们一样开心(评分 4.4/4.7)。 In short, I don't want to "force" people into anything.简而言之,我不想“强迫”人们做任何事情。 In this case, into buying again the same thing through in-app-purchases , besides other things the new app offers.在这种情况下,除了新应用提供的其他东西之外,通过应用内购买再次购买同样的东西

Questions:问题:

Having explained to you my background, it raises the obvious questions:在向您解释了我的背景之后,它提出了一个显而易见的问题:

1. How do I hide the old apps from the API 7+ audience while still keeping them visible to all the current API 7+ customers, ie, those that already bought it? 1. 如何对 API 7+ 观众隐藏旧应用,同时仍然让所有当前 API 7+ 客户(即已经购买它的客户)看到它们?

My biggest concern here is the paid app.我最关心的是付费应用程序。 I'm thinking about pushing a new version with maxSdkVersion set to 6 (SDK 2.0.1), effectively blocking new API 7+ customers to the old apps.我正在考虑将maxSdkVersion设置为 6(SDK 2.0.1)的新版本,有效地阻止新的 API 7+ 客户使用旧应用程序。 But I'm worried that the current API 7+ customers will suddenly lose access to the app.但我担心目前的 API 7+ 客户会突然失去对应用程序的访问权限。 That raises two questions:这就提出了两个问题:

2. Will they be able to keep updating the app? 2. 他们能否持续更新应用程序? is it reasonable to guess "yes"?猜测“是”是否合理?

3. Even if the answer to the previous question is "yes", it's still unclear to me what will happen if the user uninstalls the app, and then go find it again in the Market (not just updating). 3. 即使上一个问题的答案是“是”,我仍然不清楚如果用户卸载应用程序,然后 go 在市场中再次找到它(不仅仅是更新)会发生什么。 Will it disappear or will it still appear under his "bought" apps list, considering that meanwhile the app filter requirements changed?考虑到同时应用程序过滤器要求发生变化,它会消失还是会出现在他的“已购买”应用程序列表中?

Remark: I would upload a test app to see that, but AFAIK the author is not allowed to buy his own app (even the license behaves differently), so I couldn't test the uninstall-filter-install scenario.备注:我会上传一个测试应用程序来查看,但 AFAIK 不允许作者购买他自己的应用程序(即使许可证行为不同),所以我无法测试卸载-过滤-安装场景。




# # # # # # # Reply to answers: # # # # # # # #######回复答案:#######

@Sparky: @活泼的:

I think you got it wrong.我想你弄错了。 I know my way around multiple APKs, and, of course, the documentation.我知道如何处理多个 APK,当然还有文档。 The problematic here is way beyond that.这里的问题远不止于此。

Note also that maxSdkVersion is deprecated, so this throws a little bit of a wrench into your proposal to cap the old APK when you issue the new APK.另请注意, maxSdkVersion已弃用,因此这会对您在发布新 APK 时限制旧 APK 的提议产生一些影响。

Thank you.谢谢你。 I missed that.我错过了。

Multiple APKs offers a simpler user story.多个 APK 提供更简单的用户故事。

If you say so (besides the other things I didn't quote), I think you probably didn't wrap your head around this issue.如果您这么说(除了我没有引用的其他内容),我认为您可能没有认真考虑这个问题。 Please follow me:请跟我来:

  1. I have n paid customers that bought my current Pro app version.我有n 个付费客户购买了我当前的 Pro 应用程序版本。
  2. They are using the feature set X that they've got with the Pro version.他们正在使用 Pro 版本中的功能集X。
  3. I decide now to implement in-app-purchases to offer feature set X , Y and so on...我现在决定实施应用内购买以提供功能集XY等等......
  4. Unfortunately, these changes made by app API 7+.不幸的是,这些更改是由应用程序 API 7+ 进行的。
  5. Thus, as you so suggest, I decide to offer multiple APKs.因此,正如您所建议的,我决定提供多个 APK。
  6. Now, the API 7+ crowd suddenly gets updated to this new version of my app.现在,API 7+ 人群突然更新到我的应用程序的这个新版本。
  7. Because they update to the new APK, they LOSE their feature set X .因为他们更新到新的 APK,所以他们失去了他们的功能集X They now need to buy X again (from the in-app-purchase menu).他们现在需要再次购买X (从应用内购买菜单)。 I took from them something they already had , albeit in a "less shiny" way.我从他们那里拿走了他们已经拥有的东西,尽管是以一种“不那么闪亮”的方式。 It's like me saying:就像我说的:

You either pay me again or you lose what you already have.你要么再付钱给我,要么失去你已经拥有的东西。

Do you see the problem now?你现在看到问题了吗? Do you see why I'm forced to provide a new app?你明白我为什么被迫提供一个新的应用程序了吗? Or am I still not getting what you said (I think not)?还是我还是不明白你说的话(我想没有)?

You will do yourself a disservice issuing a new app instead of an update without at least considering multiple APKs, because it complicates upgrading your existing paid users.如果不至少考虑多个 APK,发布新应用而不是更新会对自己造成伤害,因为这会使升级现有付费用户变得复杂。

Suppose you simply update your paid app to API level 7, cut its price to 0 and add In-App Payments.假设您只需将付费应用更新为 API 级别 7,将其价格降至 0 并添加应用内支付。 Devices with API level >=7 will be offered an upgrade, while devices with API level <=6 will not be notified, won't see it in Play (Market), and won't be able to reinstall if they uninstall. API 级别 >=7 的设备将提供升级,而 API 级别 <=6 的设备将不会收到通知,不会在 Play(市场)中看到它,并且如果卸载将无法重新安装。 That would be 'no' to your questions 2 and 3.对于您的问题 2 和 3,那将是“否”。

But now it is possible to implement multiple APKs: http://developer.android.com/guide/market/publishing/multiple-apks.html http://developer.android.com/training/multiple-apks/但是现在可以实现多个APK: http://developer.android.com/guide/market/publishing/multiple-apks.html http://developer.android.com/training/multiple-apks/

Specific to your issue, you can offer multiple APKs based on API level: http://developer.android.com/training/multiple-apks/api.html针对您的问题,您可以根据 API 级别提供多个 APK: http://developer.android.com/training/multiple-apks/api.html

This lets you maintain two versions of the same app, separated by API level.这使您可以维护同一应用程序的两个版本,以 API 级别分隔。 So the answer to your question 1 is, implement multiple APKs per the cited articles.因此,问题 1 的答案是,根据引用的文章实施多个 APK。

By publishing a whole new app, your answer to question 2 is 'yes'.通过发布一个全新的应用程序,您对问题 2 的回答是“是”。 By implementing multiple APKs, the answer to question 2 is also 'yes', and your application lineage/upgrade story is a lot simpler from the user's perspective (a bit harder for you technically, easier in the customer service department).通过实施多个 APK,问题 2 的答案也是“是”,并且从用户的角度来看,您的应用程序沿袭/升级故事要简单得多(技术上对您来说有点难,但在客户服务部门更容易)。 Note also that maxSdkVersion is deprecated, so this throws a little bit of a wrench into your proposal to cap the old APK when you issue the new APK.另请注意, maxSdkVersion已弃用,因此这会对您在发布新 APK 时限制旧 APK 的提议产生一些影响。

Likewise with question 3. Either by publishing a new app or implementing multiple APKs, you can keep offering an APK for the legacy API levels that your users can find and install.与问题 3 类似。通过发布新应用或实施多个 APK,您可以继续为用户可以找到并安装的旧版 API 级别提供 APK。

Multiple APKs offers a simpler user story.多个 APK 提供更简单的用户故事。 Publishing a new app makes it easier for you to differentiate the apps, if for example you want to say, "Look! Now EXTRA shiny!"发布新应用程序可以让您更轻松地区分这些应用程序,例如,如果您想说,“看!现在格外闪亮!”

Here is an untried idea for your consideration:这是一个未经尝试的想法供您考虑:

  • Upgrade your present, pre-in-app-payments app to include a ContentProvider that provides a cryptographic hash that only it knows how to generate in response to a random seed (to prevent replay attacks).升级您当前的应用内预付款应用,以包含一个 ContentProvider,它提供一个密码 hash,只有它知道如何生成以响应随机种子(以防止重播攻击)。

  • Release your new app that uses in-app payments as a separate APK, and have it check for the existence of the earlier app on the user's system by attempting to access the ContentProvider just described, passing it a random value and confirming that the response is correct.将使用应用内支付的新应用作为单独的 APK 发布,并通过尝试访问刚刚描述的 ContentProvider 来检查用户系统上是否存在较早的应用,向其传递一个随机值并确认响应是正确的。 If such a response is received, then the user owns the old app, and you can enable the corresponding features of the old app in the new app without requiring any in-app payments to do so.如果收到这样的响应,则用户拥有旧应用程序,您可以在新应用程序中启用旧应用程序的相应功能,而无需任何应用程序内支付。

Now, if some of your users skip the upgrade to the old app that gives them the new ContentProvider, and go straight to your new app, they'll be dinged for the payments.现在,如果您的一些用户跳过为他们提供新 ContentProvider 的旧应用程序的升级,并且 go 直接升级到您的新应用程序,他们将被罚款。 But they can then upgrade if they like and run the new app again to get validated.但是他们可以根据需要升级并再次运行新应用程序以进行验证。

This does address your issue.这确实解决了您的问题。 However, it has issues of its own.但是,它有其自身的问题。 So, put it in your tool kit and see if it comes in handy, as is or in combination with something else you may later devise!所以,把它放在你的工具包里,看看它是否能派上用场,原样或与你以后可能设计的其他东西结合使用!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM