Ios 检查应用程序是否已购买

Ios 检查应用程序是否已购买,ios,objective-c,login,app-store,Ios,Objective C,Login,App Store,我只是想问,是否有办法检查用户是否真的通过编程方式购买了应用程序。我看到了Infinity Blade 3和其他游戏是如何强迫用户登录到他们的苹果帐户,并以某种方式与商店核实应用程序是否已被购买的。这是如何以编程方式创建的?我搜索了整个网络,只是想找到如何打开storkit视图,从中可以购买其他应用程序或视频等。。。提前感谢您可以尝试检查应用程序的收据,并与AppStore进行验证- NSURL* url = [[NSBundle mainBundle] appStoreReceiptURL];

我只是想问,是否有办法检查用户是否真的通过编程方式购买了应用程序。我看到了Infinity Blade 3和其他游戏是如何强迫用户登录到他们的苹果帐户,并以某种方式与商店核实应用程序是否已被购买的。这是如何以编程方式创建的?我搜索了整个网络,只是想找到如何打开storkit视图,从中可以购买其他应用程序或视频等。。。提前感谢

您可以尝试检查应用程序的收据,并与AppStore进行验证-

NSURL* url = [[NSBundle mainBundle] appStoreReceiptURL]; // iOS 7+, do not use respondsToSelector as it will report YES for iOS 6 too
下面介绍如何验证您的收据。
如果收据为零或url指向不存在的路径,您可能需要刷新收据。
执行
SKRequestDelegate
并检查:

NSError* err = nil;
if (![url checkResourceIsReachableAndReturnError:&err]){
    SKReceiptRefreshRequest* request = [[SKReceiptRefreshRequest alloc] initWithReceiptProperties:nil];
    request.delegate = self; /* or your delegate's instance here */
    [request start];
}
....
-(void)requestDidFinish:(SKRequest*)request{
    if([request isKindOfClass:[SKReceiptRefreshRequest class]]){
        // The URL should be available now, if it's not - I guess the app is cracked
    }
}
-(void)request:(SKRequest*)request didFailWithError:(NSError *)error{
    ; // This does not mean the app is pirated, use this to schedule the test for later.
}
我将在调试模式下(以及在模拟器上)禁用这些检查。

您可能需要检查此项目-以验证您的收据。

如果没有收据,则应用程序被破解?此外,此操作是否会导致弹出AppStore登录警报,用户将在其中输入其帐户凭据?因为这就是infinity blade 3保护其应用程序不被破解的方式…看起来抓取触发了apple id登录,忽略我之前的评论。你的代码有效吗?我的意思是,我把它放在我的项目中,在登录我的苹果ID后,编译器显示
didFailWithError
消息,我的意思是,你的代码是否证明用户以前购买过我的应用?@Mc.Lover好吧,这可能是因为你的应用不在应用商店中,因此无法测试上面的代码。我还没有测试上面的代码,因为在测试上面的代码之前,我还有很多特性要添加到我的应用程序中。但是iMoses是一个值得信赖的用户,因为他解决了很多问题,所以我认为他会给出有效的代码。并不是说它编译得很好,但似乎只是在设备上运行时才出现问题。