1

アプリケーションでアプリ内購入を有効にするために、領収書の検証のために最新ではない 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 に含まれていないのはなぜですか。重要ではないでしょうか。

どんなアイデアでも歓迎します、クリス

4

1 に答える 1

1

ここで解決策を参照してください: https://github.com/MugunthKumar/MKStoreKit/issues/142

MKStoreKit が正常に動作するために、([UIDevice currentDevice].uniqueIdentifier を使用する) VerificationController は必要ありません。コードが MKStoreManager から呼び出されることはないため、ファイルを削除しただけです。

または独自の UDID を作成します: https://github.com/MugunthKumar/MKStoreKit/issues/142#issuecomment-17433634

于 2013-08-22T05:58:27.420 に答える