【问题标题】:SFProductsRequest always returning zeroSFProductsRequest 总是返回零
【发布时间】:2012-02-17 09:38:17
【问题描述】:

我正在尝试在免费应用程序中实现应用内购买。

我在 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 Connect 中的整个过程并没有给我信心。

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

但是,如果产品列表总是为零,我该如何测试应用购买呢?

如果有更多经验的人可以给我一个建议,因为我已经对此感到疯狂了!

谢谢,

谨向您致以最诚挚的问候,

努诺

【问题讨论】:

    标签: iphone ios ipad in-app-purchase app-store-connect


    【解决方案1】:

    我发现这个问题的最连贯的解决方案是这个清单。它应该被广泛传播,以避免任何人通过同样的问题,这确实是耗时和绝望的:

    • 您是否为您的 App ID 启用了应用内购买?
    • 您是否已为您的产品检查过清仓销售?
    • 您是否已提交(并可选择拒绝)您的应用程序二进制文件?
    • 您项目的 .plist Bundle ID 是否与您的 App ID 匹配?
    • 您是否为新的 App ID 生成并安装了新的配置文件?
    • 您是否已将项目配置为使用此新的配置文件进行代码签名?
    • 您是在为 iPhone OS 3.0 或更高版本构建吗?
    • 您在发出 SKProductRequest 时是否使用了完整的产品 ID?
    • 您是否在将产品添加到 iTunes Connect 后等待了几个小时?
    • 您的银行详细信息在 iTunes Connect 上是否有效? (通过马克)
    • 您是否尝试过从设备中删除该应用程序并重新安装? (通过 Hector、S3B、Alex O、Joe 和 Alberto)
    • 您的设备是否越狱了?如果是这样,您需要恢复越狱才能使 IAP 正常工作。 (通过我的上帝、Roman 和 xfze)
    • 您是否从真实的 iTunes 帐户中退出?
    • 您是否尝试过重启设备?
    • 您在设备上吗? (不适用于模拟器)

    学分转到Troy Brant

    【讨论】:

      【解决方案2】:

      看看这里,它回答了我所有的问题(而且这个框架也很容易使用:-):

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

      但我不得不说整个应用内购买是一个 PITA - 我的应用刚刚发布,当然我下载了它并检查了应用内购买屏幕。你猜怎么着,它完全是空的!

      经过一番阅读,似乎即使一切都被接受并准备好销售,应用内购买产品仍然需要一段时间才能在线上架 - 3小时后它终于奏效了......

      编辑:

      您需要在 iTunes Connect 中为您的应用创建应用内购买并将其设置为清除销售。您无需上传屏幕截图或对其进行审核,即可在开发模式下对其进行测试。

      您是如何在 iTunes Connect 中命名购买的?通常您应该使用 com.companyname.productname.purchasename 名称,并且您从应用中请求的名称必须完全相同。

      【讨论】:

      • 嗨!谢谢回复。但请描述一下你的经历。您需要什么产品清单?产品列表是否暗示应用内购买由苹果商店审核团队审核?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-08
      相关资源
      最近更新 更多