Я добавляю IAP в свое приложение для Mac, распространяемое в Mac App Store. Кажется, он отлично работает локально на моем Mac внутри / вне XCode, но по какой-то причине он не работает на других компьютерах Mac с другим поведением (SIGKILL или не загружает квитанцию App Store).
Вот код, который я использую, чтобы убедиться, что квитанция App Store присутствует или загружается правильно:
void EnsureAppstoreReceipt()
{
// TODO: Note: In OS X, if the appStoreReceiptURL method is not available (on older systems), you can fall back to a hardcoded path.
// The receipt’s path would be /Contents/_MASReceipt/receipt inside the app bundle.
NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL];
NSData *receipt = [NSData dataWithContentsOfURL:receiptURL];
if(!receipt)
{
// Validation fails
qDebug() << "No AppStore receipt found. Exiting with 173 to force OSX to generate one in " << QString::fromNSString(receiptURL.absoluteString);
exit(173);
}
}
Я Archive
приложение в XCode и затем выбираю Distribute
и затем Application
. Если я выберу Don't resign
, то он не загрузит квитанцию App Store даже на мой компьютер. Но если я выберу идентификацию «Mac Appstore Distribution» или профиль «Mac Development», тогда он правильно загрузит квитанцию на мой Mac для разработки, но не работает на другом компьютере. Он запускает приложение и всегда выходит с кодом 173 и ничего больше.
Можно ли протестировать IAP в песочнице на Mac, где приложение еще не создано? И если да, то что мне здесь не хватает?