2012-02-17 121 views
0

我试图在免费应用程序中的应用程序购买中实现。SFProductsRequest总是返回零

我在iTunes连接入口中的应用程序购买管理器中创建了一个产品ID“test1”。

当我做以下列方式将产品的要求:

- (id)init { 

    NSSet *productIdentifiers = [NSSet setWithObjects: 
          @"test1", 
          nil]; 

    if ((self = [self initWithProductIdentifiers:productIdentifiers])) {     

} 

return self; 

}

- (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]; 

}

答案总是0.我不明白我做错了什么。这段代码来自一个教程。有关应用程序购买的文档通常很混乱,iTunes中的整个流程并不能给我带来信心。

我认为应用程序需要在网上销售的应用程序购买工作。但是,我决定不包含在应用程序购买中,但让应用程序在iTunes购买连接审查。在审核过程中,该应用程序被拒绝,因为它应该与应用内购买进行测试。

但是,如果产品列表始终为零,我该如何测试应用程序购买?

如果有更多经验的人可以给我一个这方面的建议,因为我已经疯了!

感谢,

随着我的问候,

努诺

回答

3

我发现这个问题的最一致的解决方案是这个清单。

  • 是否启用应用内购买你的应用程序ID:应该以避免任何人通过这实在是费时又情急同样的问题可以通过全铺展?
  • 您检查了您的产品的清仓待售吗?
  • 您是否提交了(并可选择拒绝)您的应用程序二进制文件?
  • 您的项目的.plist软件包ID是否与您的App ID匹配?
  • 您是否为新App ID生成并安装了新的供应配置文件?
  • 您是否使用此新配置文件将项目配置为代码签名?
  • 你是为iPhone OS 3.0或以上版本?
  • 在制作SKProductRequest时是否使用完整的产品ID?
  • 自从将产品添加到iTunes Connect后,您是否等了几个小时?
  • 您的银行信息是否在iTunes Connect上处于活动状态? (via Mark)
  • 您是否试过从设备中删除应用程序并重新安装? (通过Hector,S3B,Alex O,Joe和Alberto)
  • 您的设备是否越狱?如果是这样,你需要恢复越狱为IAP工作。 (通过我的上帝,罗马和xfze)
  • 您是否从真实的iTunes帐户注销?
  • 您是否尝试过重新启动设备?
  • 你在设备上吗? (不会在模拟器工作)

现金去Troy Brant

0

这里一看,那回答我所有的问题(和框架是使用简单,太:-):

http://blog.mugunthkumar.com/coding/iphone-tutorial-%E2%80%93-in-app-purchases/

但我不得不说,在整个应用程序内购买的是皮塔 - 我的应用程序刚刚发布了,当然我的下载并检查了应用内购买屏幕。猜猜看,它完全是空的!

一些研读之后似乎即使所有被接受并准备出售,在应用程序内购买的产品还需要一段时间才能成为可在线 - 2小时它终于摸索后...

编辑:

您需要为您的应用程序创建应用程序内购买,并将其设置为在iTunes连接中清除销售。您不需要上传截图或者已经审查过,以便能够以开发模式进行测试。

你是如何命名iTunes连接购买?通常,您应该使用com.companyname.productname.purchasename名称,并且您从您的应用程序请求的名称完全一样。

+0

嗨!谢谢回复。但请描述你的经历。你需要什么产品列表?产品列表意味着应用内购买是由苹果商店评论组审核的? – 2012-02-17 15:56:48