2014-01-06 3 views
0

Я пытаюсь использовать MKStoreKit для реализации покупок в приложении в приложении. Он работает отлично по большей части, за исключением одной вещи, которую я не могу понять. Для восстановления транзакций я использую следующий метод.MKStoreKit isFeatureПриготовленная отчетность некорректно

-(void)restoreToFullVersion:(UIViewController *)sender{ 
    [MBProgressHUD showHUDAddedTo:sender.view animated:TRUE]; 
    [[MKStoreManager sharedManager] restorePreviousTransactionsOnComplete:^{ 
     [MBProgressHUD hideHUDForView:sender.view animated:TRUE]; 
     [[NSNotificationCenter defaultCenter] postNotificationName:@"userDidUpgradeNotification" object:nil userInfo:nil]; 
     [self upgradeSuccessful]; 
    } onError:^(NSError *error) { 
     [MBProgressHUD hideHUDForView:sender.view animated:TRUE]; 
    }]; 
}//end method 

Я nslogged блок завершения и код выше все работает как и ожидалось, за исключением, если вы затем вызвать

[MKStoreManager isFeaturePurchased:kMainNoncomsumable]; 

она возвращает ложь. Правильно ли я полагаю, что после завершения процесса восстановления MKStoreManager должен вернуть true для isFeaturePurchased или я чего-то не хватает?

Я реализую одну нерасходуемую покупку в приложении и включил MKStoreManager в свой проект, используя Cocoa-pods.

Кажется, что другие люди на SO имеют одинаковые problem, но я пока не нашел приемлемого решения.

Заранее благодарим за помощь!

ответ

0

У меня это работает, и на всякий случай у кого-то в будущем возникает такая же проблема, вот что я сделал.Я удалил покупку в приложении и создал новую в iTunes Connect, переустановил MKStoreKit, используя какао-контейнеры, повторно ввел идентификатор покупки в приложение в файл plst MKStoreKit и подождал день, и теперь все работает отлично!

1

Из того, что я вижу, MKStoreKit вызывает блок завершения, были ли восстановлены какие-либо покупки. Понимаете, не было никаких покупок для восстановления, даже если ошибок не было.

Что вы должны сделать, чтобы протестировать функцию восстановления является:

  1. Добавить в -application:didFinishLaunchingWithOptions: метод вашего приложения делегат:

    [[MKStoreManager sharedManager] removeAllKeychainData]; 
    
  2. Создать новый тестовый аккаунт на iTunesConnect.

  3. Используйте эту тестовую учетную запись, чтобы совершить покупку в своем приложении.
  4. Позвоните +isFeaturePurchased:, чтобы убедиться, что покупка прошла успешно (должно быть возвращено YES).
  5. Принудительное закрытие приложения и перезапуск его так, что вызывается -removeAllKeychainData.
  6. Звоните +isFeaturePurchased:, чтобы убедиться, что приложение не знает, что продукт был приобретен (он должен вернуть NO).
  7. Звонок -restorePreviousTransactionsOnComplete:onError:.
  8. Позвоните +isFeaturePurchased:, чтобы убедиться, что продукт был восстановлен (должен быть возвращен YES).

Убедитесь, что вы используете одну и ту же тестовую учетную запись на протяжении всего этого процесса.

Как и в сторону, MKStoreKit не производит никакой квитанции проверки на iOS7, так что вы можете попробовать более свежую библиотеку как RMStore вместо (по-видимому, имеется в cocoapods тоже).