gpt4 book ai didi

ios - 应用内购买未获得任何产品

转载 作者:行者123 更新时间:2023-11-29 03:09:01 26 4
gpt4 key购买 nike

我一直在尝试让应用内购买正常运行。目前我在应用程序商店中有一个应用程序(版本 1.1)。我想发布另一个版本(V 1.2),我想在应用程序购买中集成该版本。我为此创建了一个产品。但是当我尝试加载所有产品时,它显示没有产品。

V1.2是准备上传二进制文件的形式。我已经关联了应用程序购买。我只想在 App Purchase 中测试。我已经从我的设备(MAC + iPhone)中删除了所有配置文件。目前我只安装了一个配置文件。

这是我的代码:

-(void)fetchAvailableProducts{
NSSet *productIdentifiers = [NSSet
setWithObjects:bundle_identifier,nil];
productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:productIdentifiers];
productsRequest.delegate = self;
[productsRequest start];
}

- (void)requestDidFinish:(SKRequest *)request {
NSLog(@"purchase request finished");
}

- (void)request:(SKRequest *)request didFailWithError:(NSError *)error {
NSLog(@"%@", [error description]);
}

- (BOOL)canMakePurchases
{
return [SKPaymentQueue canMakePayments];
}
- (void)purchaseMyProduct:(SKProduct*)product{
if ([self canMakePurchases]) {
SKPayment *payment = [SKPayment paymentWithProduct:product];
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
[[SKPaymentQueue defaultQueue] addPayment:payment];
}
else{
UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:
@"Purchases are disabled in your device" message:nil delegate:
self cancelButtonTitle:@"Ok" otherButtonTitles: nil];
[alertView show];
}
}

#pragma mark StoreKit Delegate

-(void)paymentQueue:(SKPaymentQueue *)queue
updatedTransactions:(NSArray *)transactions {
for (SKPaymentTransaction *transaction in transactions) {
switch (transaction.transactionState) {
case SKPaymentTransactionStatePurchasing:
NSLog(@"Purchasing");
break;
case SKPaymentTransactionStatePurchased:
if ([transaction.payment.productIdentifier
isEqualToString:bundle_identifier]) {
NSLog(@"Purchased ");
UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:
@"Purchase is completed succesfully" message:nil delegate:
self cancelButtonTitle:@"Ok" otherButtonTitles: nil];
[alertView show];
}
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
break;
case SKPaymentTransactionStateRestored:
NSLog(@"Restored ");
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
break;
case SKPaymentTransactionStateFailed:
NSLog(@"Purchase failed ");
break;
default:
break;
}
}
}

-(void)productsRequest:(SKProductsRequest *)request
didReceiveResponse:(SKProductsResponse *)response
{
SKProduct *validProduct = nil;
int count = [response.products count];
NSLog(@"%@",response.products);
if (count>0) {
validProducts = response.products;
validProduct = [response.products objectAtIndex:0];
if ([validProduct.productIdentifier
isEqualToString:bundle_identifier]) {
}
} else {
UIAlertView *tmp = [[UIAlertView alloc]
initWithTitle:@"Not Available"
message:@"No products to purchase"
delegate:self
cancelButtonTitle:nil
otherButtonTitles:@"Ok", nil];
[tmp show];
}
}

我想知道启用应用内购买的正确程序是什么以及我做错了什么?应该怎么做?

最佳答案

我解决了这个问题,所以我添加这个作为答案。

我混淆了捆绑标识符和产品标识符。我的代码是正确的,我提供了捆绑标识符而不是产品标识符,这就是我没有收到任何产品的原因。

NSSet *productIdentifiers = [NSSet
setWithObjects:product_identifier,nil];
productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:productIdentifiers];

在上面的代码中使用 product_identifier(s)。因为我只创建了一个产品,所以我使用单个元素来构建集合。

关于ios - 应用内购买未获得任何产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22433896/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com