2

iOS アプリにアプリ内購入を追加したところ、何人かのユーザーがクラッシュしてしまいました

-[__NSCFString objectForKey:]: unrecognized selector sent to instance 0xf0a6f10

BugSense から取得したメモリの場所は、Apple の VerificationController.m からのこの抜粋の最後の行を参照します。

- (BOOL)isTransactionAndItsReceiptValid:(SKPaymentTransaction *)transaction
{
    if (!(transaction && transaction.transactionReceipt && [transaction.transactionReceipt length] > 0))
    {
        // Transaction is not valid.
        return NO;
    }

    // Pull the purchase-info out of the transaction receipt, decode it, and save it for later so
    // it can be cross checked with the verifyReceipt.
    NSDictionary *receiptDict       = [self dictionaryFromPlistData:transaction.transactionReceipt];
    NSString *transactionPurchaseInfo = [receiptDict objectForKey:@"purchase-info"];
...

このコードにより、recipientDict が生成されます (VerificationController.m にも含まれています)。

- (NSDictionary *)dictionaryFromPlistData:(NSData *)data
{
    NSError *error;
    NSDictionary *dictionaryParsed = [NSPropertyListSerialization propertyListWithData:data
                                                                           options:NSPropertyListImmutable
                                                                            format:nil
                                                                             error:&error];
    if (!dictionaryParsed)
    {
        if (error)
        {
#warning Handle the error here.
        }
        return nil;
    }
    return dictionaryParsed;
}

NSDictionary または nil を返す必要があります。

ARC がオンになっています。この問題は、iOS 5.0.1 ユーザーでのみ発生するようです。VerificationController.m に必要な変更を加えましたが、この部分は変更されていません。iOS 5.1.1 を実行している iPad で問題を再現することはできないようですが、ユーザーはアプリを再インストールした後でも問題が解決しないと言っています。私が正しく行っていない単純なことを誰かが見ることができれば、感謝します。

EDIT フォローアップの質問。とはどういう意味ですか?

- (BOOL)isTransactionAndItsReceiptValid:(SKPaymentTransaction *)transaction

transaction.transactionReceipt

NSString のみを提供し、無視しても安全ですか?

4

1 に答える 1

1

私には似ている

 propertyListWithData:data options:NSPropertyListImmutableformat:nil error:&error];

辞書ではなく文字列を返しますが、論理的ではないようです。問題はこれから来ると確信していますか?

于 2012-11-20T17:41:26.670 に答える