2016-11-10 109 views
0

我正在实施具有下载托管内容功能的inApp功能。所有产品都是免费的,无限时间。每个产品都有一个关联的下载,并且是音频文件。inApp购买,下载免费产品

  1. 是否可以开始下载,无需用户看到对话框购买免费产品。第一个用户必须给他的苹果ID密码,比他看到对话购买免费产品,而不是产品成功购买的对话。不过可以要求下载。 但由于所有产品都是免费的,可以以某种方式下载,而无需用户看到confiramtion对话框和消息,并开始下载imimedietly。

  2. 如果以前购买/下载的项目比用户看到消息,将再次购买免费物品。我知道恢复功能,但我需要跟踪以前下载的项目,并在这种情况下开始从恢复状态下载。

谢谢!

+0

你为什么需要应用程序内购买免费项目 – zombie

回答

0

1)是的,你可以下载没有对话框。使用商店套件获取产品详细信息,如果产品价格免费(0),则无需处理Storekit购买请求即可下载商品。

守则索取产品细节:

KProductsRequest *productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers: [NSSet setWithArray:productIdentifiers]]; 

// Keep a strong reference to the request. 
self.request = productsRequest; 
productsRequest.delegate = self; 
[productsRequest start]; 

// SKProductsRequestDelegate协议方法

- (void)productsRequest:(SKProductsRequest *)request 
    didReceiveResponse:(SKProductsResponse *)response 
{ 
    self.products = response.products; 

    for (NSString *invalidIdentifier in response.invalidProductIdentifiers) { 
     // Handle any invalid product identifiers. or check that product you are looking for dozens has its identifier here 

    } 
    for (SKProduct *product in self.products) 
    { 
     //for example, product you are looking for has identifier "com.product.free"   
     if([product.productIdentifier isEqualToString:@"com.product.free"] && [product.price compareWithInt:0]) 
     { 
       // Startdownloading without purchase 
     } 

    } 
} 

2)如果您有非消耗inappt购买,则必须提供恢复选项。下载时,您可以编写自己的逻辑。检查项目是否下载,只有在不可用时才重新下载。

+0

感谢您的回答。我明白了一切,但我不清楚如何开始doanload没有SKPaymentQueue和付款导致inApp对话框?或者如何从productRequest didReceiveResponse方法开始下载。我不确定这是可能的。 您可以请提供更多的代码如何开始下载。我的代码有效,但必须将付款添加到付款队列并获取updatedTransactions,我可以请求下载。但是在这种情况下,会出现系统inApp对话框/警报。谢谢! :] –

+0

@NikolaJovic在没有inapp购买对话框的情况下下载它,您的内容必须作为点播资源托管。您可以将标签分配给您要购买的内容,并且您可以开始下载NSBundleResourceRequest。 https://developer.apple.com/library/content/documentation/FileManagement/Conceptual/On_Demand_Resources_Guide/Managing.html#//apple_ref/doc/uid/TP40015083-CH4-SW1 – Darshana