Ma c Квитанция App Store - Ха sh не соответствует. Почему? - PullRequest
0 голосов
/ 10 марта 2020

Я пытаюсь создать приложение Ma c, и будьте нежны со мной, так как это моя первая попытка! По сути, перенос того, что я сделал на iOS, на Ma c, и он почти готов к go с одной оставшейся частью - проверка App Store, чтобы люди не могли ее скопировать.

I у меня есть код подтверждения квитанции в нескольких моих iOS приложениях, и они работают для меня (для покупки в приложении). С Ма c я просто хочу проверить квитанцию ​​и надеюсь, что этого достаточно. Вот основа кода, который я создал:

char buf[512] = "";
get_platform_uuid(buf, sizeof(buf));

NSString *uuidString = [NSString stringWithUTF8String:buf];
NSUUID *myUUID = [[NSUUID UUID] initWithUUIDString:uuidString];

unsigned char uuidBytes[16];
[myUUID getUUIDBytes:uuidBytes];

NSMutableData *input = [NSMutableData data];
[input appendBytes:uuidBytes length:16];
[input appendData:[receipt objectForKey:kReceiptOpaqueValue]];
[input appendData:[receipt objectForKey:kReceiptBundleIdentifierData]];

NSMutableData *hash = [NSMutableData dataWithLength:SHA_DIGEST_LENGTH];
SHA1([input bytes], [input length], [hash mutableBytes]);

NSLog(@"kReceiptHash: %@", [receipt objectForKey:kReceiptHash]);
NSLog(@"hash: %@", hash);

Последние две команды NSLog только для того, чтобы я мог регистрировать это во время отладки, но значения ha sh будут сравниваться. Это где я знаю, что оба неверны. «get_platform_uuid» - это функция, которую я нашел для получения UUID для Ma c, и она, кажется, работает нормально.

Я взял всю переменную «input» и подключил к ней информацию и запустил его на iOS, и я сделал то же самое с устройства iOS и запустил его на Ma c. В обоих случаях рассчитанная величина Ha sh одинакова; Я думаю, что расчет в порядке.

Но на Ма c он по-прежнему отличается от получения га sh. iOS расчет и квитанция га sh соответствуют этому приложению.

Я установил приложение в iTunes Connect, похоже, он подбирает правильный идентификатор пакета. Я вышел из App Store на Ma c. Я копирую приложение, из которого Xcode создает приложение, в другой каталог для его запуска. Затем он просит меня войти, что я делаю с тестовой учетной записью. Затем несколько раз пытается перезапустить приложение и завершает работу (я копирую его обратно в папку отладки, и это прерывает цикл повторного запуска).

У меня есть сертификаты, настроенные для разработки и распространения для Ma c set на сайте Apple Developer, но я уверен, что это то, что я не правильно понял с разрешениями приложения или с тем, как я запускаю приложение. Но то, что я просто не могу понять (и я смотрел - в течение долгого времени!).

Я уверен, что это что-то глупое, но как одинокий разработчик, моя единственная надежда - спросить вас, что я Я делаю неправильно?

Спасибо.

1 Ответ

0 голосов
/ 04 апреля 2020

После долгих поисков я нашел другой метод для построения и сравнения значения ha sh. Но это также требовало модификации для запуска на Ma c, так как это был довольно старый код. Теперь у меня есть гибрид между этим методом и им.

Я не могу объяснить, почему старый код работает на iOS, а не на Ma c, и я не очень хороший достаточно программиста, чтобы понять почему. Я знаю только то, что этот гибридный метод работает.

...