gpt4 book ai didi

ios - StoreKit 未接收产品数组

转载 作者:行者123 更新时间:2023-11-29 04:13:12 25 4
gpt4 key购买 nike

我的 iOS 应用程序中有一个应用程序内购买功能,允许用户升级到应用程序的完整版本。我已经创建了一个应该处理商店的类。问题是我在测试商店时收到无效的 ProductID 错误。我确定问题是无法从应用程序商店获取产品...

如何解决这个问题?

代码如下:

#import <Foundation/Foundation.h>
#import <StoreKit/StoreKit.h>

@interface PSStoreKitManager : NSObject <SKProductsRequestDelegate,SKPaymentTransactionObserver>

@property (strong, nonatomic) NSArray *products;


-(void)initStore;
-(void)upgradeToFull;

@end


@implementation PSStoreKitManager
@synthesize products = _products;

-(void)initStore {

if ([SKPaymentQueue canMakePayments]) {
[self requestProductData];
}else {
NSLog(@"payments disabbled");
}
NSLog(@"prod id %@",kFullVersionProductId);
}

-(void)upgradeToFull {
SKProduct *fullVersion;
NSLog(@"no items in array products %d",[self.products count]);
for (SKProduct *crt in self.products) {
if ([crt.productIdentifier isEqualToString:kFullVersionProductId]) {
fullVersion = crt;
}
}
SKPayment *payment = [SKPayment paymentWithProduct:fullVersion];
[[SKPaymentQueue defaultQueue] addPayment:payment];

}

-(void)requestProductData {
SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithObject:kFullVersionProductId]];
[request setDelegate:self];
[request start];
}

-(void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {
self.products = response.products;
NSLog(@"data in response: %d",[response.products count]);
}

#pragma mark -- Transaction observer

-(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {
for (SKPaymentTransaction *transaction in transactions)

{

switch (transaction.transactionState)

{

case SKPaymentTransactionStatePurchased:

[self completeTransaction:transaction];

break;

case SKPaymentTransactionStateFailed:

[self failedTransaction:transaction];

break;

case SKPaymentTransactionStateRestored:

[self restoreTransaction:transaction];

default:

break;

}

}
}

- (void) completeTransaction: (SKPaymentTransaction *)transaction

{

// Your application should implement these two methods.

[self recordTransaction:transaction];

[self provideContent:transaction.payment.productIdentifier];



// Remove the transaction from the payment queue.

[[SKPaymentQueue defaultQueue] finishTransaction: transaction];

}

- (void) restoreTransaction: (SKPaymentTransaction *)transaction

{

[self recordTransaction: transaction];

[self provideContent: transaction.originalTransaction.payment.productIdentifier];

[[SKPaymentQueue defaultQueue] finishTransaction: transaction];

}

- (void) failedTransaction: (SKPaymentTransaction *)transaction

{

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

// Optionally, display an error here.

}

[[SKPaymentQueue defaultQueue] finishTransaction: transaction];

}

-(void)recordTransaction:(SKPaymentTransaction *)transaction {
if ([transaction.payment.productIdentifier isEqualToString:kFullVersionProductId]) {
[[NSUserDefaults standardUserDefaults] setValue:transaction.transactionReceipt forKey:kUpgradeToFullReceipt];
[[NSUserDefaults standardUserDefaults] synchronize];
}

}

-(void)provideContent:(NSString *)productId {
if ([productId isEqualToString:kFullVersionProductId]) {
NSUserDefaults *def = [NSUserDefaults standardUserDefaults];
[def setBool:YES forKey:kIsUpgradedToFull];
[def synchronize];
}
}



@end

这是在应用程序委托(delegate)中:

  //set up store observer
PSStoreKitManager *observer = [[PSStoreKitManager alloc] init];
[[SKPaymentQueue defaultQueue] addTransactionObserver:observer];

这是在 applicationDidFinishLaunching 中设置为存储观察者。它的使用方式如下:

  PSStoreKitManager *store = [[PSStoreKitManager alloc] init];
[store initStore];
[store upgradeToFull];

另一个问题:当我在 itunnes connect 中注册测试用户时,它通过电子邮件发送了该地址,并要求使用我的 Apple ID 登录进行确认......我尝试了,但它说“未知的 Apple id”......如果此电子邮件未经确认,会有问题吗?

最佳答案

您需要在沙盒环境中测试您的应用内购买。如果您在 iTunes connect 中设置了测试用户,则需要在设备设置中明确从 Apple Store 注销。然后,在启动应用程序后,当提示您是否要登录以允许应用内购买时,请使用您的测试用户帐户登录。

关于ios - StoreKit 未接收产品数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14080744/

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