Как я могу перехватить диалог покупки StoreKit, чтобы MBProgressHUD / UIProgressView отображался правильно и в нужное время?

Я программирую StoreKit в своем приложении для iPhone. Кажется, я не могу перехватить время ожидания диалога покупки предмета ни до, ни после нажатия кнопки для покупки предмета. В основном я хочу, чтобы на экране отображался индикатор до появления диалогового окна покупки и после него, но до того, как купленный предмет будет разблокирован. Я не хочу, чтобы мои пользователи зависали от экрана, не зная, прошла ли их покупка.

Кроме того, если я не показываю магазин, а только один предсказуемый элемент, нужно ли мне запрашиватьProductData? Все, что угодно, чтобы сократить время ожидания, было бы хорошо.

И последнее: в методе транзакций - (void) paymentQueue: (SKPaymentQueue *) очереди updatedTransactions: (NSArray *), если я показываю alertView, если выполняется случай SKPaymentTransactionStateFailed:, я продолжаю получать несколько вызовов, даже если покупка делается один раз.

Спасибо!

Пожалуйста, помогите чем угодно (просто пытаюсь научиться программировать на моем iPhone).


person Anthony Glyadchenko    schedule 12.04.2010    source источник


Ответы (1)


Для вашего первого вопроса о представлении активности во время обработки медленных отрезков.

Вы можете перехватить состояние SKPaymentTransactionStatePurchasing в очереди платежей, чтобы создать представление предупреждений с индикатором активности. Закройте представление в состояниях «Приобретено», «Восстановлено» и «Неудачно» после завершения обработки. Созданные StoreKit AlertViews заставят его исчезнуть и повторно появляться по мере необходимости на протяжении всего процесса.

case SKPaymentTransactionStatePurchasing:
                purchaseActivityIndicator = [[UIAlertView alloc] initWithTitle:@"Processing purchase" message:@"Please wait..." delegate:self cancelButtonTitle:nil otherButtonTitles:nil,nil];
                UIActivityIndicatorView *activity = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
                [activity setFrame:CGRectMake(121.0f, 80.0f, 36.0f, 36.0f)];
                [purchaseActivityIndicator addSubview:activity];
                [activity startAnimating];
                [activity release];
                [purchaseActivityIndicator show];
                [purchaseActivityIndicator release];
                break;

Что касается второго вопроса, я начинаю загрузку элементов моего магазина во время запуска приложения, чтобы они были готовы к тому времени, когда пользователь доберется до магазина. Поскольку они загружают async, они должны быть готовы к тому моменту, когда пользователь перейдет в режим просмотра магазина.

Не уверен по последнему вопросу.

Стив

person kjs    schedule 11.07.2010