2017-07-13 204 views
0

我有一个移动应用程序,其中iOS我正在测试TestFlight。iOS恢复购买在TestFlight

在我成功购买“非续约订购”后,我希望在拨打Restore Purchases时看到购买历史记录。当我通过TestFlight应用程序进行购买时,我没有看到任何历史购买。

问题

这是正常的行为,因为这是一个测试环境,而购买并不真的存在吗?或者,我应该期望看到历史性的采购?

如果一个人看不到历史购买,你会如何测试Restore Purchases

代码:

this.iap.restorePurchases().then((purchases: any[]) => { 
     // purchases are empty 
    }); 

该产品获得成功并返回该产品。

this.iap.getProducts(this.PRODUCT_IDS).then((products: any[]) => { 
    ... 
    }); 

ps。当我在AndroidrestorePurchases运行相同的代码确实会返回历史购买。

回答

1

如果您参考表1-2和In App Purchase Programming Guide中的相应文字,您将看到系统不会恢复不可续订订阅;您的应用程序有责任在您自己的服务器上跟踪用户的订阅状态。

  • 不可再生订阅。不涉及提供情节内容的订阅。例子包括访问历史照片数据库或一组飞行地图。您的应用程序有责任在用户的所有设备上提供订阅,并让用户恢复购买。当您的用户在您的服务器上拥有一个帐户时,通常会使用此产品类型,在恢复内容时,您可以使用该帐户来识别它们。订阅的到期时间和持续时间也留给您的应用程序(或您的服务器)来执行和执行。

因此你不会看到在恢复购买一个非更新订阅,所以你看到的是在测试和生产预期两者。

自动续订订阅是可恢复的,因为Apple的服务器正在跟踪您的活动订阅。

+0

嗨@ Paulw11,谢谢你的回答。但是,我有另一个问题,然后请。苹果表示,所有购买都需要在用户拥有的所有设备上提供。如果是这样的话,那么如果你无法获得历史性的采购,那么如何在每个设计上恢复购买? (我在我的服务器上维护了我的服务器上的订阅到期日期,但是如果用户使用他们自己的另一个设备上的其他应用程序帐户登录,会发生什么情况?) – Richard

+0

对于非续订订阅,订阅是与您的服务器上的帐户相关联,而不是iTunes帐户,因此如果他们使用该设备上的相同应用程序帐户登录,它将/应该在另一台设备上“恢复”。 – Paulw11

+0

谢谢。那么,如果我使用同一用户拥有的其他设备,那么'restorePurchases'会返回一个结果集?你看到我的问题了吗?苹果要求购买恢复到所有拥有的设备,但“恢复购买”不适用于“非续订订购”购买。 – Richard