【发布时间】:2011-01-09 11:39:25
【问题描述】:
基本上,我尝试在测试应用上设置应用购买,然后再将它们实施到我公司正在开发的适当应用中。我已阅读 Store kit pdf 和其他 sn-ps 大约 1000 次,但产品仍以空的形式退回。到目前为止,这正是我所做的:
设置测试应用和应用内购买测试项目
我在 iPhone 开发中心的公司开发者门户上为“Test App One”创建了一个新的应用程序 ID。我确保前缀是com.mycompany.testappone,以确保可以配置应用内购买。在 App ID 部分,我通过勾选“启用应用内购买”选项来配置应用内购买。
我在 iTunes Connect 中创建了“Test App One”并完成了通常的程序,但选择了“稍后上传二进制文件”并且没有提交以供审核,因为该应用程序什么都不做。当然,我们不必提交应用程序来审查这个工作吗?!然后我点击了应用内购买管理并创建了一个产品 ID 为“test1”的新产品并批准了它,以便它可以出售。
代码
我在 XCode 中建立了一个名为 TestAppOne 的新项目,这是我目前使用的仅有的 2 个类:
TestAppOneAppDelegate.h:
#import <UIKit/UIKit.h>
#import <StoreKit/StoreKit.h>
@interface TestAppOneAppDelegate : NSObject <UIApplicationDelegate, SKRequestDelegate, SKProductsRequestDelegate> {
UIWindow *window;
}
TestAppOneDelegate.m:
#import "TestAppOneAppDelegate.h"
static NSString *kMyFeatureIdentifier1 = @"com.mycompany.testappone.test1";
@implementation TestAppOneAppDelegate
@synthesize window;
- (void)applicationDidFinishLaunching:(UIApplication *)application {
if([SKPaymentQueue canMakePayments]) {
NSLog(@"IN-APP:can make payments");
}
else {
NSLog(@"IN-APP:can't make payments");
}
[self requestProductData];
[window makeKeyAndVisible];
}
- (void)requestProductData {
NSLog(@"IN-APP:requestProductData");
SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers: [NSSet setWithObject:kMyFeatureIdentifier1]];
request.delegate = self;
[request start];
NSLog(@"IN-APP:requestProductData END");
}
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {
NSLog(@"IN-APP:productsRequest");
NSArray *myProduct = response.products;
NSLog(@"IN-APP:array count: %i", [myProduct count]);
[request autorelease];
NSLog(@"IN-APP:productsRequest END");
}
- (void)dealloc {
[window release];
[super dealloc];
}
@end
在设备上测试
我创建了一个沙盒测试帐户并在 iPhone 上注销了我的 iTunes 帐户,但没有使用测试帐户登录,因为文档告诉我们在购买阶段收到提示之前不要这样做。然后我构建应用程序,这是我得到的日志:
IN-APP:can make payments
IN-APP:requestProductData
IN-APP:requestProductData END
IN-APP:productsRequest
IN-APP:array count: 0
IN-APP:productsRequest END
谁能告诉我我是否遗漏了任何阶段,或者我做错了什么。不幸的是,Apple 似乎没有任何示例应用程序。
【问题讨论】:
标签: iphone iphone-sdk-3.0 in-app-purchase storekit