16

所以我有一个需要订阅(通过 IAP)的应用程序,它提供了一个 Today Widget。在小部件(以及应用程序内)中,我使用 RMStore 检查捆绑包中的应用程序收据以获取有效订阅。它在沙箱中运行良好,包括通过 TestFlight 安装时。但是今天,该应用程序获得了Apple的批准,并且在我测试了实体店版本时,当主应用程序在应用程序收据中看到用户购买时,今日扩展程序并没有读取应用程序收据,因此发现没有订阅!

Today Extension 和主应用程序都使用完全相同的代码来读取应用程序收据并查找订阅信息。为什么它会在主应用程序中工作而不是扩展程序?这是一个已知的问题?它与 RMStore 而不是 StoreKit 本身有关吗?我有什么聪明/不同的事情要做吗?

我在想这个问题可能与收据验证有关——例如,沙盒中的捆绑标识符与扩展的 App Store 中的包标识符是否不同?

这真的很令人沮丧,因为我实际上无法在不重新提交到 App Store 的情况下测试任何潜在的解决方案,然后在它发布后对其进行测试,如果它坏了就将它从商店中拉出来,否则我会让用户付费他们实际上没有得到的东西。

4

1 回答 1

8

所有收据(应用程序购买和应用内购买)都存储在应用程序包内的文件中。应用程序扩展驻留在嵌套在应用程序包内的包中 - 因此,如果它可以访问外部包中的收据文件,我会感到惊讶(但值得通过调用来检查appStoreReceiptURL)。

因此,有关收据的信息(即收据本身,或处理收据的某些结果)需要通过通常的方式从包含应用程序传递到扩展,即使用共享容器文件协调

于 2015-05-29T01:16:11.007 回答