Iphone SFProductsRequest始终返回零
我正在尝试在一个免费应用程序中实现应用内购买 我在itunes connect门户的应用内采购管理器中创建了productd id“test1” 当我以以下方式提出产品请求时:Iphone SFProductsRequest始终返回零,iphone,ios,ipad,in-app-purchase,app-store-connect,Iphone,Ios,Ipad,In App Purchase,App Store Connect,我正在尝试在一个免费应用程序中实现应用内购买 我在itunes connect门户的应用内采购管理器中创建了productd id“test1” 当我以以下方式提出产品请求时: - (id)init { NSSet *productIdentifiers = [NSSet setWithObjects: @"test1", nil]; if ((self =
- (id)init {
NSSet *productIdentifiers = [NSSet setWithObjects:
@"test1",
nil];
if ((self = [self initWithProductIdentifiers:productIdentifiers])) {
}
return self;
}
}
}
}
响应始终为0。我不明白我做错了什么。这段代码来自一个教程。关于应用程序内购买的文档往往非常混乱,itunes connect的整个过程都没有给我信心
我认为应用程序需要在线销售,应用内购买才能正常工作。但是,我决定不包括应用程序内购买,而是让itunes中的应用程序内购买进行连接以供审查。在审查过程中,该应用程序被拒绝,因为它应该与应用程序内购买一起进行测试
但是,如果产品列表总是为零,我如何测试应用程序内购买
如果有人有更多的经验可以给我一个建议,因为我已经疯了
谢谢
代我向你问好
努诺看看这里,它回答了我所有的问题(框架也很容易使用:-): 但我不得不说,整个应用内购买是一个PITA——我的应用刚刚发布,当然我下载了它并查看了应用内购买屏幕。你猜怎么着,它是空的 经过一些阅读,似乎即使所有产品都已被接受并准备好出售,应用内购买产品仍然需要一段时间才能在网上获得-3小时后,它终于起作用了 编辑: 您需要为您的应用创建应用内购买,并将其设置为在itunes connect中清除以供出售。为了能够在开发模式下进行测试,您不需要上传屏幕截图,也不需要对其进行审查
您如何在itunes connect中命名此次购买?通常,您应该使用com.companyname.productname.purchasename名称,并且您从应用程序ha请求的名称应完全相同 看看这里,它回答了我所有的问题(框架也很容易使用:-): 但我不得不说,整个应用内购买是一个PITA——我的应用刚刚发布,当然我下载了它并查看了应用内购买屏幕。你猜怎么着,它是空的 经过一些阅读,似乎即使所有产品都已被接受并准备好出售,应用内购买产品仍然需要一段时间才能在网上获得-3小时后,它终于起作用了 编辑: 您需要为您的应用创建应用内购买,并将其设置为在itunes connect中清除以供出售。为了能够在开发模式下进行测试,您不需要上传屏幕截图,也不需要对其进行审查
您如何在itunes connect中命名此次购买?通常,您应该使用com.companyname.productname.purchasename名称,并且您从应用程序ha请求的名称应完全相同 我找到的解决这个问题的最连贯的方法是这个清单。它应该广泛传播,以避免任何人路过同样的问题,这确实是非常耗时和令人沮丧的:
- 您是否已为您的应用ID启用应用内购买
- 您的产品是否已获准出售
- 您是否已提交(或拒绝)您的申请
- 您的项目的.plist捆绑包ID是否与您的应用程序ID匹配
- 您是否为新的应用程序ID生成并安装了新的配置文件
- 您是否已使用此新的资源调配配置文件将项目配置为代码签名
- 您是否正在为iPhone OS 3.0或更高版本进行构建
- 您在发出SKProductRequest时是否使用完整的产品ID
- 将产品添加到iTunes Connect后,您是否等待了几个小时
- 您的银行详细信息是否在iTunes Connect上有效?(通过马克)
- 您是否尝试过从设备中删除应用并重新安装?(通过Hector、S3B、Alex O、Joe和Alberto)
- 你的设备被越狱了吗?如果是这样,您需要恢复越狱以使IAP正常工作。(通过哦,我的上帝,罗曼和xfze)
- 您是否从real iTunes帐户注销
- 你试过重新启动设备吗
- 你在使用这个设备吗?(在模拟器上不工作)
积分归我发现这个问题最连贯的解决方案是这个清单。它应该广泛传播,以避免任何人路过同样的问题,这确实是非常耗时和令人沮丧的:
- 您是否已为您的应用ID启用应用内购买
- 您的产品是否已获准出售
- 您是否已提交(或拒绝)您的申请
- 您的项目的.plist捆绑包ID是否与您的应用程序ID匹配
- 您是否为新的应用程序ID生成并安装了新的配置文件
- 您是否已使用此新的资源调配配置文件将项目配置为代码签名
- 您是否正在为iPhone OS 3.0或更高版本进行构建
- 您在发出SKProductRequest时是否使用完整的产品ID
- 将产品添加到iTunes Connect后,您是否等待了几个小时
- 您的银行详细信息是否在iTunes Connect上有效?(通过马克)
- 您是否尝试过从设备中删除应用并重新安装?(通过Hector、S3B、Alex O、Joe和Alberto)
- 你的设备被越狱了吗?如果是这样,您需要恢复越狱以使IAP正常工作。(通过哦,我的上帝,罗曼和xfze)
- 您是否从real iTunes帐户注销
- 你试过重新启动设备吗
- 你在使用这个设备吗?(在模拟器上不工作)
信用卡转到嗨!谢谢你的回复。但请描述一下你的经历。你需要什么样的产品清单?产品清单表明应用内购买由苹果stor审查
- (id)initWithProductIdentifiers:(NSSet *)productIdentifiers
{
if ((self = [super init]))
{
// Store product identifiers
_productIdentifiers = [productIdentifiers retain];
// Check for previously purchased products
NSMutableSet * purchasedProducts = [NSMutableSet set];
for (NSString * productIdentifier in _productIdentifiers)
{
BOOL productPurchased = [[NSUserDefaults standardUserDefaults] boolForKey:productIdentifier];
if (productPurchased)
{
[purchasedProducts addObject:productIdentifier];
NSLog(@"Previously purchased: %@", productIdentifier);
}
NSLog(@"Not purchased: %@", productIdentifier);
}
self.purchasedProducts = purchasedProducts;
}
return self;
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {
NSLog(@"Received products results...");
self.products = response.products;
self.request = nil;
[[NSNotificationCenter defaultCenter] postNotificationName:kProductsLoadedNotification object:_products];
NSLog(@"%d",[self.products count]);
NSEnumerator *e = [self.products objectEnumerator];
id object;
while(object=[e nextObject])
{
NSLog(@"item");
NSLog(@"%s",(char*)object);
}
- (void)requestProducts {
self.request = [[[SKProductsRequest alloc] initWithProductIdentifiers:_productIdentifiers] autorelease];
_request.delegate = self;
[_request start];