Приложение инициирует процесс покупки в приложении нестандартным образом.

Apple отклонила мою заявку по следующей причине: «приложение инициирует процесс покупки в приложении нестандартным образом.

Вместо того, чтобы сначала отображать описание элемента и запрашивать логин после того, как пользователь нажмет «ОК», приложение сначала запрашивает логин, что является неправильным порядком. "

Я проверил свой код, но он такой же, как и в другом моем приложении, где покупка в приложении работает нормально. Затем я изменил идентификатор пакета и идентификатор продукта (установил идентификатор пакета из другого моего приложения), и все заработало нормально!

Я думаю, это очень странно. У кого-нибудь была эта проблема? Вы можете помочь мне?

УПД:

В отладчике вижу эту ошибку:

«Неожиданное исключение во время завершения транзакции: не удается завершить транзакцию покупки»

Это происходит в этот момент в коде:

    @try 
    {
        [[SKPaymentQueue defaultQueue] finishTransaction: transaction]; 
    }
    @catch (NSException *exception) 
    {
        NSLog(@"Unexpected exception during finish transaction: %@", exception);
    }

person kilj    schedule 10.10.2012    source источник


Ответы (2)


В вашем сообщении об ошибке может показаться, что вы пытаетесь завершить транзакцию, состояние которой равно SKPaymentTransactionStatePurchasing.

Вы должны сначала проверить состояние транзакции через [transaction transactionState], чтобы убедиться, что транзакция:

СКпайменттрансактионстатефаилед

SKPaymentTransactionStatePurchased

СКпайменттрансактионстатерестореде

Дополнительные разъяснения см. в документации Apple:

Ваше приложение должно вызывать этот метод из наблюдателя транзакций, получившего уведомление из очереди платежей. Вызов finishTransaction: для транзакции удаляет ее из очереди. Ваше приложение должно вызывать finishTransaction: только после того, как оно успешно обработало транзакцию и разблокировало функциональность, приобретенную пользователем.

Вызов finishTransaction: для транзакции, находящейся в состоянии SKPaymentTransactionStatePurchasing, вызывает исключение.

person CaptainRedmuff    schedule 19.10.2012
comment
Спасибо за ответ, но это не работает. Думаю, есть еще одна транзакция, которую [SKPaymentQueue defaultQueue] пытается завершить. Я не знаю, откуда это... Я решу свою проблему следующим образом: я заново создам свое приложение на itunesconnect.apple.com с новым идентификатором пакета. Надеюсь, это поможет. - person kilj; 22.10.2012

Ага, я решил эту проблему. Очень странно, но мне помогает пересоздание моей игры на itunesconnect.apple.com.

person kilj    schedule 23.10.2012
comment
Вы хотите сказать, что удалили и воссоздали содержимое IAP? - person jesses.co.tt; 16.12.2014