基本上,我尝试在测试应用程序上设置应用程序购买,然后再将它们实施到我公司正在开发的适当应用程序中。我已经阅读了大约 1000 次 Store kit pdf 和其他片段,但产品仍然以空的形式返回。这正是我到目前为止所做的:
设置测试应用程序和应用程序内购买测试项目
我在 iPhone 开发中心的公司开发人员门户上为“测试应用程序一”创建了一个新的应用程序 ID。我确保前缀是com.mycompany.testappone
为了确保可以配置应用内购买。留在 App IDs 部分,我通过勾选“启用应用内购买”选项来配置应用内购买。
我在 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 似乎没有任何示例应用程序。