RMStore と呼ばれるレシート検証用の一般的なライブラリのコードを使用して、レシートがこの特定のデバイス用であることを検証しようとしています。
NSUUID * uuid = [[UIDevice currentDevice] identifierForVendor];
uuid_t uuidBytes;
[uuid getUUIDBytes:uuidBytes];
NSMutableData * data = [[NSMutableData alloc] init];
[data appendBytes:uuidBytes length:sizeof(uuidBytes)];
[data appendData:_parsedReceipt.opaqueValue];
[data appendData:_parsedReceipt.bundleIdentifierData];
NSMutableData * computedHash = [NSMutableData dataWithLength:SHA_DIGEST_LENGTH];
SHA1(data.bytes, data.length, computedHash.mutableBytes);
return [computedHash isEqualToData:_parsedReceipt.hash];
しかし、2 つのハッシュは等しくありません。コードに何か問題がありますか?
編集
SKReceiptRefreshRequest * request = [[SKReceiptRefreshRequest alloc] initWithReceiptProperties:@{SKReceiptPropertyIsRevoked: @YES}];
[request setDelegate:self];
[request start];
一度領収書を取得した後、ハッシュが一致し始めます。これは私が見た中で最も奇妙な行動です。なぜこれが起こるのか誰にも分かりますか?