Probleme beim Abrufen der ursprünglichen App-Version, die der Benutzer installiert hat (Empfangsbestätigung)?

Ich habe eine App, die ich kürzlich aktualisiert habe, um sie in App-Käufen zu verwenden. Die vorherige Version (bezahlt, aber ohne In-App-Käufe) war 1.0 und die aktuelle Version ist 1.1.

Da der In-App-Kauf im Wesentlichen alle Funktionen freischaltet (die in der kostenpflichtigen Version 1.0 enthalten waren), wollte ich, dass Benutzer, die ursprünglich Version 1.0 heruntergeladen haben, ein Upgrade durchführen, wenn sie auf die Schaltfläche "Käufe wiederherstellen" klicken.

Dazu versuche ich zunächst, Einkäufe wiederherzustellen und ob die Antwort auf:

- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue

Wenn dies zu einer Warteschlange mit einer Transaktionsanzahl von 0 führt, überprüfe ich die Quittung, um festzustellen, ob die ursprünglich installierte Version 1.0 war.

Der Code für den Erhalt der Quittung entspricht der Dokumentation von Apple

- (void)tryRestoreFromOriginalPurchase
{
    // Load the receipt from the app bundle
    NSError *error;
    NSData  *receipt = [NSData dataWithContentsOfURL:[[NSBundle mainBundle] appStoreReceiptURL]];

    if (receipt == nil) {
        [self restoreFromOriginalVersionWithReceipt:nil];
        return;
    }

    // Create the JSON object that describes the request
    NSDictionary *requestContents = @{@"receipt-data": [receipt base64EncodedStringWithOptions:0]};
    NSData       *requestData     = [NSJSONSerialization dataWithJSONObject:requestContents options:0 error:&error];

    if (!requestData) {
        [self restoreFromOriginalVersionWithReceipt:nil];
        return;
    }

    // Create a POST request with the receipt data
    NSURL *storeURL = [NSURL URLWithString:@"https://buy.itunes.apple.com/verifyReceipt"];
    NSMutableURLRequest *storeRequest = [NSMutableURLRequest requestWithURL:storeURL];

    [storeRequest setHTTPMethod:@"POST"];
    [storeRequest setHTTPBody:requestData];

    // Make a connection to the iTunes Store on a background queue
    NSOperationQueue *queue = [[NSOperationQueue alloc] init];

    [NSURLConnection sendAsynchronousRequest:storeRequest queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
        if (!connectionError) {
            NSError      *error;
            NSDictionary *jsonResponse = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];

            if (jsonResponse) [self restoreFromOriginalVersionWithReceipt:jsonResponse];
            else              [self restoreFromOriginalVersionWithReceipt:nil];
        } else {
            [self restoreFromOriginalVersionWithReceipt:nil];
        }
    }];
}

Dieser ruft dann die folgende Methode auf:

- (void)restoreFromOriginalVersionWithReceipt:(NSDictionary *)receipt
{
    if (receipt == nil) {
        // CALL METHOD TO HANDLE FAILED RESTORE
    } else {
        NSInteger status = [[receipt valueForKey:@"status"] integerValue];

        if (status == 0) {
            NSString *originalApplicationVersion = [[receipt valueForKey:@"receipt"] valueForKey:@"original_application_version"];

            if (originalApplicationVersion != nil && [originalApplicationVersion isEqualToString:@"1.0"]) {
                // CALL METHOD TO HANDLE SUCCESSFUL RESTORE
            } else {
                // CALL METHOD TO HANDLE FAILED RESTORE
            }
        } else {
            // CALL METHOD TO HANDLE FAILED RESTORE
        }
    }
}

Das funktioniert jetzt nicht. Wenn jemand Version 1.1 installiert und auf Einkäufe wiederherstellen tippt, wird die Wiederherstellung erfolgreich durchgeführt, wenn dies nicht der Fall sein sollte.

Ich habe gerade festgestellt, dass in meiner Info.plist mein CFBundleShortVersionString 1.1 ist, mein CFBundleVersion 1.0.

Dies mag eine wirklich blöde Frage sein, aber liefert die Quittung eine ursprüngliche Anwendungsversion von 1.0 (aufgrund der falschen CFBundleVersion), obwohl das Update Version 1.1 ist?

Wird das Problem behoben, wenn ich ein neues Update mit der korrigierten Version 1.2 (sowohl für CFBundleShortVersionString als auch für CFBundleVersion) veröffentliche?

- UPDATE -

Daher habe ich gerade eine neue Version mit dem CGBundleVersion- und dem CFBundleShortVersionString-Wert 1.2 in den App Store hochgeladen. Ich stehe jedoch immer noch vor dem gleichen Problem: Benutzer, die zum ersten Mal Version 1.2 herunterladen und Einkäufe für die Wiederherstellung tätigen, werden kostenlos aktualisiert (aufgrund des oben beschriebenen Kassenbon-Checks). Es scheint, dass die original_application_version immer auf 1.0 kommt.

Hinweis: Ich lade die App unter einem neuen iTunes-Konto herunter, das die App noch nicht heruntergeladen hat.

Hier ist die Quittung, die ich habe, wenn ich sie aus dem App Store installiere und dann versuche, die Quittung über Xcode zu erhalten

2014-08-27 08:46:42.858 AppName[4138:1803] {
    environment = Production;
    receipt =     {
        "adam_id" = AppID;
        "application_version" = "1.0";
        "bundle_id" = "com.CompanyName.AppName";
        "download_id" = 94004873536255;
        "in_app" =         (
        );
        "original_application_version" = "1.0";
        "original_purchase_date" = "2014-08-26 22:30:49 Etc/GMT";
        "original_purchase_date_ms" = 1409092249000;
        "original_purchase_date_pst" = "2014-08-26 15:30:49 America/Los_Angeles";
        "receipt_type" = Production;
        "request_date" = "2014-08-26 22:46:42 Etc/GMT";
        "request_date_ms" = 1409093202544;
        "request_date_pst" = "2014-08-26 15:46:42 America/Los_Angeles";
    };
    status = 0;
}

Irgendwelche Gedanken?