首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >应用程序中的购买崩溃

应用程序中的购买崩溃
EN

Stack Overflow用户
提问于 2011-06-08 13:06:23
回答 2查看 1.9K关注 0票数 1

我正在尝试在我的iPhone应用程序中添加In。但是,当我运行我的应用程序或试图购买一个项目时,我的应用程序会崩溃,并显示下一个错误:

/Developer/Platforms/iPhoneOS.platform/DeviceSupport/4.3.3 (8J2)/Symbols/Developer/usr/lib/libXcodeDebuggerSupport.dylib警告:无法读取

符号(未找到文件)。(gdb)

我把StoreKit代码放在一个NSObject类中,看下面的代码。

StorePurchase.h

代码语言:javascript
复制
#import <Foundation/Foundation.h>
#import <StoreKit/StoreKit.h>

@interface StorePurchase : NSObject <SKProductsRequestDelegate, SKPaymentTransactionObserver> {

}

- (void)loadStore;
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions;
- (void)purchase;
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response;

@end

StorePurchase.m

代码语言:javascript
复制
#import "StorePurchase.h"

@implementation StorePurchase

- (void)loadStore {

    if ([SKPaymentQueue canMakePayments]) {
        NSLog(@"Parental-controls are disabled");

        SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithObject:@"testding2"]];
        request.delegate = self;
        [request start];

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

}

- (void)purchase {

    SKPayment *payment = [SKPayment paymentWithProductIdentifier:@"testding2"];
    [[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];
        NSLog(@"Products found, joepie!!!");
    } else if (!validProduct) {
        NSLog(@"No products available");
    }

}

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

    for (SKPaymentTransaction *transaction in transactions) {

        switch (transaction.transactionState) {

            case SKPaymentTransactionStatePurchasing:

                break;

            case SKPaymentTransactionStatePurchased:

                [[SKPaymentQueue defaultQueue] finishTransaction:transaction];

                break;

            case SKPaymentTransactionStateRestored:
                [[SKPaymentQueue defaultQueue] finishTransaction:transaction];

                break;

            case SKPaymentTransactionStateFailed:
                if (transaction.error.code != SKErrorPaymentCancelled) {
                    NSLog(@"An error encounterd");
                }
                else {
                    NSLog(@"Cancelled!");
                }

                [[SKPaymentQueue defaultQueue] finishTransaction:transaction];

                break;

        }

    }

}

@end

我将该方法称为"loadStore“,如下所示:

代码语言:javascript
复制
StorePurchase *classStorePurchase = [[StorePurchase alloc] init];

[classStorePurchase loadStore];

我希望有人能帮我.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-08 13:12:11

您添加了StoreKit框架引用了吗?

票数 0
EN

Stack Overflow用户

发布于 2014-09-01 12:25:47

您可以避免一般的UIAlertView

代码语言:javascript
复制
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex

并将代码放在

代码语言:javascript
复制
 if ([SKPaymentQueue canMakePayments]) {
  ...
   ...
    ..
   [tmp show];
 }

直接在你用来管理每一张照片的程序上。

跟着这个

代码语言:javascript
复制
  - (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];
}
}
-(IBAction)purchase:(id)sender{
[self purchaseMyProduct:[validProducts objectAtIndex:0]];
purchaseButton.enabled = NO; 
 }

诚挚的问候

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

https://stackoverflow.com/questions/6279154

复制
相关文章

相似问题

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