アプリケーションでアプリ内購入を有効にするために、領収書の検証のために最新ではない VerificationController を参照するチュートリアルを行いました。
その結果、iOS5 の一意の識別子を使用しているため、アプリが拒否されました。私は基本的にiOS5とiOS6をサポートするという考えが好きなので、実行中の「Pre iOS 6」コードを取得する解決策があるかもしれないと考えましたが、(コンパニオンファイルで)削除することを提案するこの解決策しか見つかりませんでしたすべての「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 に含まれていないのはなぜですか。重要ではないでしょうか。
どんなアイデアでも歓迎します、クリス