没有从iTunes Connect返回任何产品

时间:2014-12-13 20:37:35

标签: ios xcode6 itunesconnect

我一直在搜索stackoverflow几天如何让产品从itunes connect返回。我发现了很多信息,并试图遵循它。但是,我无法在SKProductsResponse中获得任何产品返回。
我正在使用Xcode 6.1.1
我尝试删除并重新添加产品。
我用模拟器和我的iPhone 5试过这个 我等了24小时,看看是否会导致产品出现。没有。

以下是我每次都遵循的流程:

  1. 在developer.apple.com:
    1. 检查我是否拥有有效的iOS开发证书
    2. 我的iOS设备(iPhone 5)已注册
    3. 创建一个新的应用ID
      1. 使用带有包ID的显式应用ID:com.ftotech.iaptest01
      2. 在应用服务中检查应用内购买选中标记
    4. 创建新的配置文件
      1. iOS App开发类型的配置文件
      2. 上面创建的已选择的应用ID
      3. 选择了我的iOS开发证书
      4. 选择了我的iOS设备
      5. 将配置文件命名为与包ID相同:com.ftotech.iaptest01
    5. 配置资料显示状态为Active
  2. 创建具有以下分辨率的图标PNG,不带Alpha通道:
    1. 1024×1024
    2. 76x76
    3. 120x102
    4. 152x152
  3. 使用以下分辨率创建屏幕截图PNG,不带Alpha通道:
    1. 640x920 for 3.5-inch
    2. 750x1334 for 4.7-inch
    3. 640x1096,4英寸
    4. 1242x2208 for 5.5-inch
    5. 1024x748 for iPad
    6. 640x920 for product
  4. 在Xcode中创建新的单视图项目:iaptest01
    1. 在项目设置中,常规,标识部分:
      1. 验证了包ID是com.ftotech.iaptest01
      2. 未找到签名身份错误,因此点击了修复问题按钮,选择了我的开发团队
      3. 错误消失
    2. 在项目设置,常规,链接框架和库部分,添加了StoreKit.framework
    3. 在项目设置中,功能部分,验证应用内购买项目是否已启用,并且检查了两个步骤(链接stoker.framework并添加应用内购买权利)
    4. 向资产目录添加图标:
      1. 将76x76图标拖到ipad app 1x
      2. 将120x120图标拖到iphone app 2x
      3. 将152x152图标拖到ipad app 2x
    5. 在故事板中,添加了一个标签,位于顶部,并添加了名为labelProduct
    6. 的插座
    7. 下面的ViewController.h
    8. 下面的ViewController.m
    9. 存档应用并提交 - 成功
  5. 在iTunes Connect中创建新的iOS应用
    1. 选择的包ID com.ftotech.iaptest01
    2. 完整定价部分
    3. 在应用内购买部分,创建一个消费品
      1. 产品编号:com.ftotech.iaptest01.product1
      2. 已售出 - 是
      3. 设置语言设置
      4. 添加了截图
      5. 产品显示“准备提交”状态
    4. 在版本部分
      1. 完成所有必填字段
      2. 上传截图和图标
      3. 将产品添加到应用内购买部分
      4. 将构建添加到构建部分
    5. 提交审核 - 这是成功的,现在正在等待审核
  6. ViewController.m:

    //
    //  ViewController.m
    //  iaptest01
    //
    //
    
    #import "ViewController.h"
    
    @interface ViewController ()
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
        activityIndicatorView = [[UIActivityIndicatorView alloc]
                                 initWithActivityIndicatorStyle:
                                   UIActivityIndicatorViewStyleWhiteLarge];
        activityIndicatorView.center = self.view.center;
        [activityIndicatorView hidesWhenStopped];
        [self.view addSubview:activityIndicatorView];
        [activityIndicatorView startAnimating];
        [self fetchAvailableProducts];
    }
    
    -(void)fetchAvailableProducts{
        NSSet *productIdentifiers = [NSSet
                                     setWithObjects:@"com.ftotech.iaptest01.product1", 
                                     nil];
        productsRequest = [[SKProductsRequest alloc]
                           initWithProductIdentifiers:productIdentifiers];
        productsRequest.delegate = self;
        [productsRequest start];
    }
    
    -(void)productsRequest:(SKProductsRequest *)request
        didReceiveResponse:(SKProductsResponse *)response
    {
        SKProduct *validProduct = nil;
        int count = (int)[response.products count];
        [_labelProduct setText:response.description];
        if ( count > 0 ) {
            validProducts = response.products;
            validProduct = [response.products objectAtIndex:0];
            [_labelProduct setText:[NSString stringWithFormat:
                                    @"found product: %@",validProduct.localizedTitle]];
            UIAlertView *tmp = [[UIAlertView alloc]
                                initWithTitle:@"Available"
                                message:@"Found products"
                                delegate:self
                                cancelButtonTitle:nil
                                otherButtonTitles:@"Ok", nil];
            [tmp show];
        } else {
            UIAlertView *tmp = [[UIAlertView alloc]
                                initWithTitle:@"Not Available"
                                message:[@"No products: " stringByAppendingString:
                                  [NSString stringWithFormat:@"%d", count]]
                                delegate:self
                                cancelButtonTitle:nil
                                otherButtonTitles:@"Ok", nil];
            [tmp show];
        }
        NSArray *products = response.invalidProductIdentifiers;
    
        for (SKProduct *product in products)
        {
            NSLog(@"Product not found: %@", product);
        }
    
        [activityIndicatorView stopAnimating];
    }
    
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    @end
    

    ViewController.h:

    //
    //  ViewController.h
    //  iaptest01
    //
    //
    
    #import <UIKit/UIKit.h>
    #import <StoreKit/StoreKit.h>
    
    @interface ViewController : UIViewController<SKProductsRequestDelegate>
    {
        SKProductsRequest *productsRequest;
        NSArray *validProducts;
        UIActivityIndicatorView *activityIndicatorView;
    }
    
    @property (weak, nonatomic) IBOutlet UILabel *labelProduct;
    
    - (void)fetchAvailableProducts;
    
    @end
    

    任何人都可以看到我错过的一个步骤或我错误配置的内容吗?

    谢谢!

1 个答案:

答案 0 :(得分:0)

问题是我的银行和税务信息不完整 为了使上述流程有效,请转到&#34;协议,税务和银行&#34; iTunes中的区域连接并验证&#34; iOS付费应用程序&#34;合同生效。
完成信息后大约需要15分钟,但是一旦合同生效,SKProductsResponse就会正确退回产品。

谢谢Matt Gibson的提示,让我开始寻求解决方案!

顺便说一句,它可以在iOS模拟器8.1中运行。