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 и будет плохой дизайн конечного пользователя.

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

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

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

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

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

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

  • Проверка XCode 6Controller.m
  • Проверка поступления заявки от клиента
  • покупка в приложении, несколько подписей на автоматическое продление подписки, имеющих разные сроки
  • В App Purchase перестала работать (код ошибки 109)
  • Возвратите ранее приобретенную невозобновляемую подписку, а не текущую. Возможное?
  • Как добавить расходные материалы в покупки приложений с помощью NSUserDefaults, а не мой собственный сервер?
  • Как я могу узнать, действительна ли покупка, не потребляемая в приложении, с использованием конечной точки проверки поступления яблок
  • где хранить загружаемые покупки в приложении?
  • Apple In-app покупка transaction_id одной покупки иногда меняется
  • Недопустимая транзакционная квитанция, возвращаемая appStoreReceiptURL (NSData), в iOS 7
  • Как получить текущий уровень цен из Store Kit Framework?
  • Давайте будем гением компьютера.