如何使用现有付费 iOS 应用读取收据数据?

How do I read receipt data with existing paid iOS app?

我有一个付费应用,我正在考虑通过应用内购买免费使用它。如果我进行切换,我将需要检查用户是否已经为该应用付费,然后启用付费功能。

我认为下面的代码应该可以满足我的需要,但我不确定如何测试它。我在我的设备上使用我的开发配置文件构建了应用程序并 运行 它 receitpData 是空的。因此,我使用分发配置文件构建了该应用程序并将其提交到应用程序商店,然后使用试飞下载了该应用程序,但我仍然遇到同样的问题。

如何从现有应用程序获取收据数据?

我是否需要为此应用启用应用内购买才能获取此数据?

NSURL *receiptUrl = [[NSBundle mainBundle] appStoreReceiptURL];
NSData *receiptData = [NSData dataWithContentsOfURL:receiptUrl];

我想通了:

#import <StoreKit/StoreKit.h>

别忘了添加代表

<SKPaymentTransactionObserver, SKProductsRequestDelegate>

代码如下:

SKReceiptRefreshRequest* request = [[SKReceiptRefreshRequest alloc] initWithReceiptProperties:nil];
request.delegate = self;
[request start];

然后:

-(void)requestDidFinish:(SKRequest*)request{
    if([request isKindOfClass:[SKReceiptRefreshRequest class]]){
        NSLog(@"YES, You purchased this app");
    }
}

- (void)request:(SKRequest*)request didFailWithError:(NSError *)error{
    NSLog(@"NO, you need to buy it");
}