Я знаю о функциях восстановления и ранее реализовал его в своих приложениях, но в нем все еще есть дыры. Я пытаюсь отобразить настроенные экраны на основе того, какие приложения у пользователя есть. Без взаимодействия с пользователем, я хочу попросить яблоко получить мне покупки в приложении, принадлежащие этому пользователю для этого приложения? Другие сообщения упомянуть, что я всегда должен следить, что с помощью вызова методов, как:Может ли Apple рассказать, какие покупки у пользователя есть?
NSUserDefaults.StandardUserDefaults.BoolForKey
Но в то же время считает его небезопасным. В настоящее время я храню информацию в БД. Это легко, но рассмотрим следующий сценарий:
- Загружается приложение. Моя БД записывает, что у пользователя есть 0 покупок в приложении. Пользователь позже покупает 1 покупку в приложении. Мой БД также записывает это.
- Пользователь удаляет приложение по любой причине
- Через некоторое время он повторно загружает приложение. Моя БД в этот момент начинает новый и записывает, что пользователь 0 покупает.
- пользователь видит покупку в приложении (он уже купил) и снова нажимает на покупку.
- Здесь мой поток выполнения останавливается, и яблоко поднимается ... Apple предупреждает пользователя, что он уже купил приложение и предлагает его бесплатно.
Это сообщение предназначено только для пользователей, и мое приложение не знает об этом. Мне не удалось найти звонок на яблоко, спрашивая, какие покупки пользователь сделал для моего приложения? Я тоже не хочу, чтобы пользователь снова платил, но всегда мог узнать, какие покупки он совершил в прошлом в любой момент. Почему эта информация так запечатана на стороне яблока? Они alrady знают, что у пользователя может быть приложение, и я только спрашиваю о покупках в приложении в этом приложении.
Я использую Xamarin.
Это то, к чему валидация квитанции. См. «NSBundle appStoreReceiptURL» и документацию проверки валидации с iOS 7. – rmaddy