为了在我的应用程序中启用应用内购买,我做了一个tutorial,它引用了一个不是最新的VerificationController来进行收据验证。
结果,由于使用iOS5的唯一标识符,我的应用被拒绝了。因为我基本上喜欢支持iOS5和iOS6的想法,所以我认为可能有一种解决方案可以在运行下获得“iOS 6之前的代码”,但是我只找到this解决方案,建议(在伴随文件中)删除所有的“Pre iOS 6”代码。
- (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
}
我的问题是:如何匹配iOS5的交易信息和收据?为什么不再在VerificationController中添加它,这不重要吗?
任何想法表示赞赏,
克里斯
最佳答案
在此处查看解决方案:https://github.com/MugunthKumar/MKStoreKit/issues/142
您不需要VerificationController(使用[UIDevice
currentDevice] .uniqueIdentifier),以使MKStoreKit正常工作。我只是
删除了文件,因为从不调用该代码
MKStoreManager。
或创建自己的UDID:https://github.com/MugunthKumar/MKStoreKit/issues/142#issuecomment-17433634
关于ios - 应用内购买:如何在没有iOS5的uniqueIdentifier的情况下处理收据验证?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17026523/