Я внедряю унифицированную квитанцию Apple Grand Unified в iOS 7, которая позволяет приложению проверять квитанцию о покупке приложения локально, не обращаясь к серверам Apple для проверки и проверки. Это прекрасно работает, если у пользователя есть квитанция, хранящаяся в приложении. В случае, если в приложении отсутствует квитанция, лучше всего попросить приложение обновить квитанцию, как таковую:
SKReceiptRefreshRequest *request = [[SKReceiptRefreshRequest alloc] init];
[request setDelegate:self];
[request start];
Проблема в том, что вызов этого кода попросит пользователя войти в систему со своим Apple ID. Я не уверен на 100%, происходит ли это постоянно или только в том случае, если время входа в магазин приложений пользователя истекло. Я не хочу показывать пользователям экран входа в систему Apple ID, если это действительно необходимо — я не хочу, чтобы люди беспокоились о том, что с них будут неправильно сняты средства. Я хотел бы показать дисплей, сообщающий пользователю, почему ему будет предложено ввести свой пароль Apple ID, но только в том случае, если ему действительно потребуется ввести свой пароль. Если им не нужно вводить свой пароль, я хочу, чтобы это был плавный и скрытый процесс. Как лучше поступить? Я думаю, что лучшим способом было бы проверить, нужно ли пользователю входить в магазин приложений, но я не уверен, что это возможно.