2

我在我的项目中使用应用内购买。目前正在从沙箱进行购买。但我发现了一个关于产品标识符的问题。现在我正在对产品标识符进行硬编码,如下所示。我手动将产品标识符存储在 plist (ProductId.plist) 中(请参考图片)

#import "RageIAPHelper.h"

@implementation RageIAPHelper

+ (RageIAPHelper *)sharedInstance {
    static dispatch_once_t once;
    static RageIAPHelper * sharedInstance;
    dispatch_once(&once, ^{
        NSString* plistPath = [[NSBundle mainBundle] pathForResource:@"ProductId" ofType:@"plist"];

        NSArray * contentArray = [NSArray arrayWithContentsOfFile:plistPath];
        NSLog(@"content aray:%@",contentArray);
        NSSet * productIdentifiers= [NSSet setWithArray:contentArray];
        sharedInstance = [[self alloc] initWithProductIdentifiers:productIdentifiers];
    });
    return sharedInstance;
}

@end  

//应用程序购买教程中来自 RAY WENDERLICH 的代码

产品编号.PLIST

问题是现在无法从 iTunes Store 动态获取产品标识符。那么如何从 iTunes 商店获取产品 ID 而不是在 plist 中进行硬编码???请帮忙

4

3 回答 3

2

您可以执行以下操作以获取产品数据。

 NSSet *productIdentifiers = [NSSet setWithObject:@"com.****.******"];
self.productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:productIdentifiers];
self.productsRequest.delegate = self;
[self.productsRequest start];

该代表将接到电话,将获得您所需的产品信息

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
于 2013-07-30T17:04:05.543 回答
2

您无法从 AppStore 获取这些标识符!。如果您确实需要动态交付这些产品标识符,则应将带有标识符列表的文件放在可见服务器中。

请阅读Apple 文档中的功能交付部分。您应该使用“服务器产品模型”。

编辑后 iOS 7:

我写的旧链接已经过时了。当前文档更明确

于 2013-07-26T04:11:57.197 回答
0

您无法从 AppStore IN APP 中获取产品 id,但您可以自动生成产品 id 的 plist。

以下是步骤:

  1. metadata.xml使用transporter获取:

    iTMSTransporter -m lookupMetadata \
    -u [username] \
    -p [password] \
    -vendor_id [vendor id] \
    -subitemtype InAppPurchase \
    -destination [local destination]
    
  2. 转换metadata.xmlproduct_ids.plist

    # /usr/bin/sh
    # usage: [this script] [path/to/metadata.xml] > [path/to/product_ids.plist]
    
    echo '<?xml version="1.0" encoding="UTF-8"?>'
    echo '<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"'
    echo ' "http://www.apple.com/DTDs/PropertyList-1.0.dtd">'
    echo '<plist version="1.0">'
    echo '<array>'
    
    sed -n 's/.*<product_id>\(.*\)<.*/    \<string\>\1\<\/string\>/p' $1
    
    echo '</array>'
    echo '</plist>'
    

您可以将这些 shell 脚本集成到您的生产部署脚本中,或者您可以基于此概念编写自己的脚本。

于 2014-09-22T10:13:22.483 回答