我有一个应用程序已经在AppStore中提供了一段时间了
我可以从iTunes报告中看到它是使用Apple's volume purchase program购买的,这很棒,但是 - 我想知道某个设备是运行批量购买的应用程序还是标准的AppStore应用程序。<登记/>
我试着在收据内撬([[NSBundle mainBundle] appStoreReceiptURL]
),但我找不到任何信息
为此目的创建不同的捆绑ID不是一种选择,并且有点错过了VPP的想法,请 - 请不要提供它。
是否有编程方式来判断应用程序是否是使用VPP购买的?
答案 0 :(得分:5)
您在应用收据内查看VPP信息是正确的,但您需要首先设置SKReceiptPropertyIsVolumePurchase
标记进行刷新:
self.refresh = [[SKReceiptRefreshRequest alloc] initWithReceiptProperties:@{SKReceiptPropertyIsVolumePurchase : @YES}];
self.refresh.delegate = self;
[self.refresh start];
然后,您可以在requestDidFinish:
- (void)requestDidFinish:(SKRequest *)request {
NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL];
NSData *receipt = [NSData dataWithContentsOfURL:receiptURL];
// decode receipt and examine vpp fields here
}
有many ways解码苹果收据,我发现最简单的方法是使用Apple的收据验证程序,因此我将收据数据移至我的文件(receipt-data.der
)上计算机:
curl -d "{ \"receipt-data\" : \"$(base64 receipt-data.der)\" }" https://sandbox.itunes.apple.com/verifyReceipt
这显示了一些有趣的新领域:
"organization_display_name": "ACME Bad VPPReceipt Inc."
"receipt_type": "ProductionVPPSandbox"
"expiration_date": "2015-12-10 00:44:22 Etc/GMT"
这是在沙箱中,因此当您转移到生产时结果会发生变化,但这应该足以确定给定设备是否为vpp。如果您使用Apple的收据验证程序,请务必将网址更改为https://buy.itunes.apple.com/verifyReceipt
。