Ran*_*per 109 iphone in-app-purchase ios
有没有人对如何重置和/或清除IOS应用内购买沙箱有任何想法?我有一个应用程序,我正在测试沙盒,我想测试新的购买,而不必每次购买时都创建一个新的测试用户.如果我不这样做,那么我(当然)总是会收到一条消息,当我点击我的应用程序的购买按钮时,已经购买了应用程序内购买项目.
Rob*_*gar 70
IMO有三件事可以让非耗材测试变得可以忍受:
您可以将多个测试帐户与一封电子邮件相关联.(例如Gmail),您可以添加一个"加"字符串的邮件创建一个地址别名:那么tester+01@gmail.com
和tester+02@gmail.com
这两个真的只是去tester@gmail.com
.可能其他电子邮件主机也这样做.当您创建测试帐户时,您需要介绍:名字,姓氏,电子邮件地址,密码,秘密问题,秘密答案,出生日期和iTunes商店国家/地区.您可以为tester+01@gmail.com
和设置完全相同的数据(包括密码), tester+02@gmail.com
并且您将拥有两个测试帐户.最后,在您的tester@gmail.com
收件箱中,您将收到Apple提供的两封验证电子邮件,以确认这两个测试帐户.
假设您有一个产品ID为"Extra_Levels"的非消耗品.不要在所有方法(requestProduct,purchaseProduct,...)中编写@"Extra_Levels",只需编写PRODUCT_ID1
并在某些头文件中放入#define PRODUCT_ID1 @"Extra_Levels"
(没有分号!),然后预处理器将搜索PRODUCT_ID1并将其替换为@"Extra_Levels".然后创建一个名为@"Extra_Levels_01"的新非耗材并更改#define将与重置所有测试用户的购买一样好.
应用程序指出,您可以通过首先使用耗材IAP购买非耗材IAP来测试代码的正确行为(以便测试用户可以根据需要进行尽可能多的购买)以消除一些错误.当然,您还应该使用真正的非消耗性IAP测试代码.
kir*_*ski 32
您可以清除测试者的购买历史记录,以便可以继续使用同一沙盒 Apple ID 进行持续测试。清除购买历史记录将删除沙盒环境中所选测试人员过去购买的所有自动续订订阅和非消耗品。客户在 App Store 上进行的应用内购买不受影响。
要清除测试仪购买历史记录:
从“用户和访问”中的“沙箱”下,单击“测试人员”。
单击编辑。
选中您要修改的每个测试仪的复选框,然后单击清除购买历史记录。
在出现的对话框中单击“清除购买历史记录”。
购买次数较多的沙盒 Apple ID 可能需要更长时间才能清除。此操作无法撤消。
Ben*_*tto 31
据我所知,你不能这样做.沙盒后端的工作方式与真实帐户相同 - 一旦购买,就会购买(因此您可以测试还原).您应该在商店内容中填充大部分开发,然后当您真正测试它时,只需要创建多个测试帐户.
我有2个应用程序购买项目.1用于生产.另一个用于测试.当我需要"清除"时,我删除了在应用程序项目并创建了新项目(在iTunes中连接15秒,在代码中更改产品ID为1秒)
如果我不需要测试"新用户",我在app项目中使用生产.
嗯,从技术上讲,你不需要那样做.
如果你得到SKPaymentTransactionStateRestored
,它100%相当于验证用户并授予他购买的应用商店.我有一个像这样的开关:
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
for( SKPaymentTransaction *purch in transactions )
{
switch( purch.transactionState )
{
case SKPaymentTransactionStateRestored:
info( "PURCHASE RESTORE" ) ;
// fall thru
case SKPaymentTransactionStatePurchased:
[[SKPaymentQueue defaultQueue] finishTransaction:purch];
// Do regular changes to app state for this purchase,
// register in keychain, etc.
break ;
//.. other cases
}
}
}
Run Code Online (Sandbox Code Playgroud)
让您的应用程序逻辑/收回购买的问题很简单:如果您在钥匙串中缓存购买,请删除您的钥匙串.如果您正在做其他一些方法,只需更改您的本地应用程序状态,假装用户以前从未购买过它.购买对话框的请求仍然完全相同,唯一的区别是当你点击YES时,它会给你SKPaymentTransactionStateRestored
而不是SKPaymentTransactionStatePurchased
.