appStoreReceiptURL на mainBundle всегда возвращает nil

Этот метод appStoreReceiptURL является заменой устаревшего метода транзакцииReceipt на SKPaymentTransaction. И каждый говорит просто использовать этот вызов:

NSURL *theURL = [[NSBundle mainBundle] appStoreReceiptURL]; 

Это должно вернуть URL-адрес квитанции, если таковой имеется. Но для меня нет ни одного, поскольку это значение равно нулю, и насколько я могу судить, этого не должно быть. Я работаю на iOS 7 и сделал несколько покупок в приложении (песочница на устройстве). Теперь я пытаюсь добавить еще одну покупку в приложении, подписку на автоматическое продление подписки, и мне нужно заглянуть в квитанцию, чтобы получить срок действия подписки. Но я не могу пройти этот простой шаг, потому что значение всегда всегда равно нулю.

Кто-нибудь знает, почему?

2 Solutions collect form web for “appStoreReceiptURL на mainBundle всегда возвращает nil”

Немного поздно, но это может быть полезно кому-то:

 -(void) someMethod { NSURL *receiptUrl = [[NSBundle mainBundle] appStoreReceiptURL]; if ([[NSFileManager defaultManager] fileExistsAtPath:[receiptUrl path]]) { NSData *ios7ReceiptData = [NSData dataWithContentsOfURL:receiptUrl]; //Do stuff } else { NSLog(@"iOS 7 AppReceipt not found %@, refreshing...",iapID); SKReceiptRefreshRequest *refreshReceiptRequest = [[SKReceiptRefreshRequest alloc] initWithReceiptProperties:@{}]; refreshReceiptRequest.delegate = self; [refreshReceiptRequest start]; } } - (void)requestDidFinish:(SKRequest *)request { if([request isKindOfClass:[SKReceiptRefreshRequest class]]) { //SKReceiptRefreshRequest NSURL *receiptUrl = [[NSBundle mainBundle] appStoreReceiptURL]; if ([[NSFileManager defaultManager] fileExistsAtPath:[receiptUrl path]]) { NSLog(@"App Receipt exists"); //Do stuff } else { NSLog(@"Receipt request done but there is no receipt"); // This can happen if the user cancels the login screen for the store. // If we get here it means there is no receipt and an attempt to get it failed because the user cancelled the login. //[self trackFailedAttempt]; } } } 

`

Это теперь iOS 8.4 и Xcode 6.4, поэтому, возможно, история отличается, но я нахожу, что этот вызов метода всегда возвращает nil при работе в симуляторе. На реальном устройстве это работает как задокументировано Apple. Возвращается путь туда, куда предполагается сохранить квитанцию ​​приложения, – без гарантии, что там есть квитанция или что она действительная квитанция.

  • Код SKErrorDomain = 0 «Не удается подключиться к iTunes Store»
  • Как реализовать покупку In-App с динамической ценой без использования SDK сторонних разработчиков в IOS?
  • paymentQueueRestoreCompletedTransactionsFinished: vs updatedTransactions:
  • Как подтвердить только однократное получение покупки в приложении в iOS8?
  • Можно ли получить список идентификаторов продуктов App App, основанный на идентификаторе пакета приложения
  • Отправить в App Purchase для просмотра в первый раз
  • paymentquue updatedTransactions: not called вместо paymentQueueRestoreCompletedTransactionsFinished: вызов
  • Есть ли способ получить уведомление, когда кто-то делает покупку в приложении?
  • Индивидуальная цена покупки в приложении
  • Сохранение изменений после покупки в приложении
  • Непризнанный селектор отправлен в экземплярную ошибку с продуктом покупки приложения
  • Interesting Posts

    Локальная логика UICollectionView отсутствует в горизонтальном просмотре прокрутки

    Как проигрывать видео на YouTube с помощью MPMoviePlayer?

    где выпустить переменную __block?

    Плохая производительность прокрутки MapKit с помощью Apple Maps в iOS 6

    Как я могу рассчитать свою скорость с iPhone?

    Есть ли способ сравнить изображения кнопок в Swift / iOS

    Совместное использование данных UDP в приложениях (многозадачность для фона / переднего плана или многоэкранного экрана) в iOS

    Установка ключаWindow rootViewController, не работающего в iOS8

    Как включить исключения Objective-C в Xcode 4.2?

    Как разработать UIMockup в iOS sdk?

    Как установить вид камеры для заполнения родительского представления

    Программно получать дату «в следующее воскресенье в 5 вечера»

    iPhone – Получить название города из Локатора и Лонгтиуде

    Можно ли загружать сжатый аудиофайл непосредственно в буфер без преобразования?

    Показывать изображение первого кадра фильма в MPMoviePlayerController перед воспроизведением фильма

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.