# Android 跨商店安装问题

> 了解并解决部署到多个 Android 应用商店时的购买历史记录丢失和同步问题。

使用共享的 Android Bundle ID 同时发布到多个 Android 应用内购商店（例如 Google Play 商店）时，会出现跨商店安装问题。本页面将介绍这些冲突的结果以及如何解决此问题。

跨商店安装方案是指用户从一个商店（商店 A）安装应用程序，然后使用另一个商店（商店 B）的应用程序升级安装。升级用户安装的机会属于托管最新应用程序版本的商店。当应用程序的两个版本使用相同的 Android Bundle ID 和签名密钥时，可能会出现这种情况。

例如，如果在 Google Play 和另一家制造商的应用商店上都发布了 `com.foo.bar`，则安装了这两个应用商店的用户可能会从一个应用商店安装该应用程序，然后从另一个应用商店更新该应用程序。这可能导致 IAP 购买历史记录丢失，并阻止用户恢复以前购买的数字商品。

## 跨店安装问题的影响##impact-of-cross-store-installation-issues

跨商店冲突可能导致使用 IAP 的应用程序出现难以解决的终端用户问题。用户可能会发现在卸载或重新安装时丢失购买，并丢失因跨店升级而中断的任何即时购买。

产生的 IAP 问题如下：

| 问题类型               | 描述                                                                                                                              |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------- |
| 丢失未完成的购买           | 如果用户在购买获得批准后但在应用程序确认从商店的计费系统收到购买之前进行升级，则发生此事件。当应用程序无法及时与云库存服务同步时，或者在将此新 IAP 保存到本地库存数据库之前应用程序崩溃时，可能会出现这种情况。                      |
| 从商店 A 预扣购买         | 如果用户在商店 A 上完成 IAP 交易后从商店 B 重新安装应用程序，则发生此事件。他们无法恢复这些交易。许多商店明确禁止应用程序访问其他商店的 IAP 系统。要解决此问题，请使用云库存系统及其依赖的用户身份服务。                    |
| Divergent IAP 商品列表 | 如果商店 B 应用程序中的升级商品列表与商店 A 版本中的列表不同，则发生此事件。您可以提供不同的 IAP 目录。当商店 B 版本读取不一致的本地库存时，这可能会导致应用程序错误，或者用户可能会丢失他们以前购买的库存，而该库存无法通过商店 B 版本获取。 |

## 解决跨店安装问题##resolve-cross-store-installation-issues

有两种方法可以解决跨店冲突：

* 为每个商店使用唯一的签名密钥。这会导致来自冲突商店的升级错误消息。
* 为每个商店使用唯一的 Bundle ID。这可能会导致用户重复安装应用程序。
