首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在应用中购买非消耗性产品

在应用中购买非消耗性产品
EN

Stack Overflow用户
提问于 2011-04-28 02:24:13
回答 2查看 1.2K关注 0票数 1

我写了以下代码。

但是当我执行这段代码时,我得到了日志,它显示“没有产品可用”。我找不到原因。

代码语言:javascript
复制
-(void)viewDidLoad {

    [super viewDidLoad];

if ([SKPaymentQueue canMakePayments]) 
{

SKProductsRequest *productsRequest=[[SKProductsRequest alloc]initWithProductIdentifiers:[NSSet setWithObject:@"com.cmp.name.prdt"]];

productsRequest.delegate=self;
[productsRequest start];

}

else {
NSLog(@"Parental Control are enabled");
}

}


-(IBAction)btnpurchase

{

NSString* isPurchased = [[NSUserDefaults standardUserDefaults] stringForKey:@"com.cmp.name.prdt"];

if ([@"purchased" compare:isPurchased]==NSOrderedSame)
{

///do some task

}

else
{

SKPayment * payment=[SKPayment paymentWithProductIdentifier:@"com.cmp.name.prdt"];
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
[[SKPaymentQueue defaultQueue] addPayment:payment];

}

}


-(void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response

{

SKProduct *validProduct=nil;

int count=[response.products count];

if (count>0) {

validProduct=[response.products objectAtIndex:0];

}

else if(!validProduct)

{

NSLog(@"no products available");

}

}

-(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{

for (SKPaymentTransaction *transaaction in transactions)

{

switch (transaaction.transactionState)

{

case SKPaymentTransactionStatePurchasing:

break;

case SKPaymentTransactionStatePurchased:

[[SKPaymentQueue defaultQueue]finishTransaction:transaaction];
[[NSUserDefaults standardUserDefaults] setObject:@"purchased" forKey:@"com.cmp.name.prdt"];
[[NSUserDefaults standardUserDefaults] synchronize];

break;

case SKPaymentTransactionStateRestored:

[[SKPaymentQueue defaultQueue]finishTransaction:transaaction];

break;

case SKPaymentTransactionStateFailed:

if (transaaction.error.code!=SKErrorPaymentCancelled) {

NSLog(@"Error encountered");

}

[[SKPaymentQueue defaultQueue] finishTransaction:transaaction];

break;

default:

break;

}

}

}

有人能帮我解决这个问题吗?

EN

回答 2

Stack Overflow用户

发布于 2011-05-05 21:37:07

您可以尝试使用以下代码//产品请求委托方法

代码语言:javascript
复制
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{

    NSLog(@"The product request didReceiveResponse :%@",[response description]);
    NSLog(@"The products are :%@",[response.products description]);

    NSLog(@"The invalidProductIdentifiers are:%@",[response.invalidProductIdentifiers description]);

    NSArray *products=response.products;


    for(SKProduct *currentProduct in products){

         NSLog(@"THE Product price is :%@",currentProduct.price);
         NSLog(@"THE Product description is :%@",currentProduct.localizedDescription);
         NSLog(@"THE Product title is :%@",currentProduct.localizedTitle);
         NSLog(@"THE Product's product identifier is :%@",currentProduct.productIdentifier);

         }

}

这将在控制台窗口中记录在iTUNES连接上注册的产品详细信息

票数 1
EN

Stack Overflow用户

发布于 2011-04-28 03:30:31

不幸的是,苹果没有回应任何有用的信息,为什么你的购买没有显示出来。我会通过这个checklist。在我的应用程序中,有几天没有工作,然后突然开始工作。确保你的财务信息是正确的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5808718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档