iOS Exploit: восстановление покупок в приложениях для нескольких игровых аккаунтов

Я создаю серверную игру на iOS, которая позволяет игрокам создавать учетную запись игры для игры с несколькими устройствами. В моей игре есть In-App Purchase (IAP), которые не подлежат расходуемому, и могут быть восстановлены или повторно загружены первоначальным покупателем.

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

Например, брать Академию Героев можно.

  • Player1, чтобы купить все IAP на своей учетной записи игры и в iTunes
  • Player1 для входа в Игровой аккаунт Академии героев Player2
  • Player1 для повторной загрузки нерасходуемого IAP в игровой аккаунт Player2, предоставляя разрешениям Player2 всем IAP
  • Player2, чтобы войти в свою учетную запись на своем собственном устройстве и теперь иметь разрешения для всех IAP

Результат: Player2 получил все IAP бесплатно.

Возможно, я смогу прочитать их учетную запись iTunes и ограничить покупки iTunes на одну учетную запись игры. Внедрение этого решения противоречит рекомендациям Apple по восстановлению неиспользуемых IAP.

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

2 Solutions collect form web for “iOS Exploit: восстановление покупок в приложениях для нескольких игровых аккаунтов”

Легким решением для этого было бы иметь потребительскую IAP мягкой валюты, которую пользователь проводит в игре, чтобы купить не потребляемый товар.

Т.е. я покупаю расходуемый комплект IAP из 100 магических монет за 5 долларов США, чтобы купить предмет Magic Bean стоимостью 50 магических монет.

Я подозреваю, что ответ может заключаться в использовании чего-то вроде NSUbiquitousKeyValueStore. Это требует от пользователя использования iCloud, но я думаю, что большинство пользователей это делает. Если я правильно ее понимаю, это хранилище ключевых значений на основе iCloud, и поэтому будет связано с одним конкретным AppleID.

Сохраняя свой собственный идентификатор Академии героев, я думаю, что вы, по сути, синхронизировали бы его с определенным AppleID. Это было бы так, что на шаге 2 вашего эксплойта Player2 должен был бы дать ему и его AppleID, и пароль для Player1. Многие люди не хотят этого делать. Однако некоторые из них, и, чтобы предотвратить это, я думаю, вам придется программировать игру, чтобы она проверяла разрешения на NSUbiquitousKeyValueStore. Другими словами, вам нужно будет активно связать специальную покупку с вашим AppleID в то время, когда вы ее использовали.

Ваша игра никогда не увидит фактический AppleID, но она сможет отличить один магазин iCloud от другого с помощью Ирины Академии Hero, которую вы разместили в ней.

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

  • Формат транзакции формата SKPaymentTransactionIdentifier
  • Безопасный способ открыть полную версию через In-App Purchase
  • Расширение iMessage и покупка In-App
  • Как синхронизировать / проверять повторяющиеся подписки в приложении с помощью веб-сервера (кросс-платформенная подписка)
  • paymentQueue: updatedTransactions: not called
  • У Apple исправлены проблемы с безопасностью при проверке поступления на покупку в приложении?
  • Отслеживание покупок через приложение с помощью Google Analytics iOS SDK
  • Удаление при покупке приложений из новой версии приложения (iOS)
  • iOS In-App Покупка и обнаружение автоматической возобновляемой подписки
  • IOS IAP Error Domain = SKErrorDomain Code = 2 в производстве
  • Можно ли добавить приложение в приложение в приложение без обновления приложения?
  • Идентификатор транзакции, не отображающийся в приложении к приложению
  • Interesting Posts

    не удалось выполнить команду: Ошибка сегментации: 11 команда swift frontend завершилась неудачно из-за сигнала (используйте -v для вызова вызова)

    Google Analytics не инициализируется в Swift

    Создайте тень, используя QuartzCore для UITextView

    XCode5 не может установить приложение на симулятор iOS

    Какие альтернативы оператору switch можно использовать для обновления моего UITableViewCells?

    HKWorkoutSession: не получает частоту сердечных сокращений, когда экран выключен в watchOS 2

    Можно ли деактивировать столкновения в физических телах в spriteKit?

    Загрузка нескольких контроллеров View в UIPageViewController – Swiping показывает пустой экран

    Воспроизведение в корневом режиме при выборе вкладки

    Является ли URL полученным из UIImagePickerControllerReferenceURL стабильным?

    IOS Swift 3: изображение передней панели флип Горизонтально после съемки снимка камеры

    Уведомления об обновлении данных Bluetooth не запускаются

    Установите выделенный цвет текста для UILabel, используя NSAttributedString.?

    Как масштабировать физику?

    NSArray objectAtIndex index 0 за пределами для пустого массива

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.