应用内购买:如何在没有iOS5唯一标识符的情况下处理收据验证?
为了在我的应用程序中启用应用程序内购买,我做了一个示例,其中引用了一个非最新的VerificationController进行收据验证 因此,我的应用程序被拒绝,因为它使用了iOS5的唯一标识符。由于我基本上喜欢支持iOS5和iOS6的想法,我认为可能有一个解决方案可以让“iOS6之前”的代码运行,但我只找到了解决方案,建议(在配套文件中)删除所有“iOS6之前”的代码 我的问题是:如何匹配iOS5的交易信息和收据? 为什么它不再在VerificationController中,不是很重要吗 任何想法都值得赞赏, Chris请参见此处的解决方案: 您不需要VerificationController(它使用[UIDevice currentDevice].uniqueIdentifier),以便MKStoreKit正常工作。我只是 已删除文件,因为从未从中调用代码 MKStoreManager 或者创建自己的UDID:请参见此处的解决方案: 您不需要VerificationController(它使用[UIDevice currentDevice].uniqueIdentifier),以便MKStoreKit正常工作。我只是 已删除文件,因为从未从中调用代码 MKStoreManager应用内购买:如何在没有iOS5唯一标识符的情况下处理收据验证?,ios,objective-c,ios5,in-app-purchase,verification,Ios,Objective C,Ios5,In App Purchase,Verification,为了在我的应用程序中启用应用程序内购买,我做了一个示例,其中引用了一个非最新的VerificationController进行收据验证 因此,我的应用程序被拒绝,因为它使用了iOS5的唯一标识符。由于我基本上喜欢支持iOS5和iOS6的想法,我认为可能有一个解决方案可以让“iOS6之前”的代码运行,但我只找到了解决方案,建议(在配套文件中)删除所有“iOS6之前”的代码 我的问题是:如何匹配iOS5的交易信息和收据? 为什么它不再在VerificationController中,不是很重要吗 任
或者创建自己的UDID:您找到解决方案了吗?不幸的是,我没有找到。我最终扔掉了“iOS6之前”的代码,就像苹果在那里的示例验证控制器一样。我在iOS 5上测试了它,它成功了。。。但我对这个解决方案不满意…我也这么做了,我觉得有些地方不对劲。目前只有不到10%的iOS5用户。。。可能更糟;)你找到解决办法了吗?不幸的是我没有。我最终扔掉了“iOS6之前”的代码,就像苹果在那里的示例验证控制器一样。我在iOS 5上测试了它,它成功了。。。但我对这个解决方案不满意…我也这么做了,我觉得有些地方不对劲。目前只有不到10%的iOS5用户。。。可能更糟;)
- (BOOL)doesTransactionInfoMatchReceipt:(NSString*) receiptString
{
// some code above
if ([[UIDevice currentDevice] respondsToSelector:NSSelectorFromString(@"identifierForVendor")]) // iOS 6?
{
#if IS_IOS6_AWARE
// iOS 6 (or later)
NSString *localIdentifier = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
NSString *purchaseInfoUniqueVendorId = [purchaseInfoFromTransaction objectForKey:@"unique-vendor-identifier"];
NSString *verifiedReceiptVendorIdentifier = [verifiedReceiptReceiptDictionary objectForKey:@"unique_vendor_identifier"];
if(verifiedReceiptVendorIdentifier)
{
if (![purchaseInfoUniqueVendorId isEqualToString:verifiedReceiptVendorIdentifier]
|| ![purchaseInfoUniqueVendorId isEqualToString:localIdentifier])
{
// Comment this line out to test in the Simulator.
failCount++;
}
}
#endif
} else {
// Pre iOS 6 - this part is missing now
NSString *localIdentifier = [UIDevice currentDevice].uniqueIdentifier;
NSString *purchaseInfoUniqueId = [purchaseInfoFromTransaction objectForKey:@"unique-identifier"];
if (![purchaseInfoUniqueId isEqualToString:verifiedReceiptUniqueIdentifier]
|| ![purchaseInfoUniqueId isEqualToString:localIdentifier])
{
// Comment this line out to test in the Simulator.
failCount++;
}
}
// more code
}