Как поддерживать несколько устройств с обновлением In-App Purchase?

Я создаю приложение iOS, которое будет включать IAP с не обновляющейся подпиской. Apple предоставляет этот самородок в своем обзоре IAP:

Вам необходимо предоставить не возобновляемые подписки на все устройства, принадлежащие пользователю. Не возобновляемые подписки автоматически не синхронизируются со всеми устройствами в Store Kit; вы должны реализовать эту инфраструктуру самостоятельно. Например, большинство подписей предоставляется внешним сервером; вашему серверу необходимо будет внедрить механизм идентификации пользователей и связать покупки подписки с пользователем, который их приобрел.

Я хотел бы следовать этому правилу: я хочу, чтобы мои пользователи могли использовать подписку, которую они покупают на одном устройстве, на других устройствах. Итак, как я могу определить одного и того же пользователя на своем iPhone и iPad? Я понимаю, что вы не можете использовать Apple ID, и вы не можете полагаться на метод регистрации.

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

Ответы

Ответ 1

У меня есть предложение от Gavin McKenzie, которое звучит как лучший выбор, который я слышал:

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

Гэвин предложил использовать это в методе "спаривания", аналогичном Bluetooth: при восстановлении инициируйте сопряжение на устройстве A, которое генерирует короткий код и выталкивает его на сервер. Затем устройство B может использовать этот код. Через пять минут или при отключении экрана сопряжения код будет удален.

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

Ответ 2

Если вы можете отказаться от поддержки iOS ниже версии 5.0, вы можете использовать iCloud для синхронизации пары значений ключа между пользовательскими устройствами.

Ответ 3

Смотрите это:

http://iphonedevsdk.com/forum/business-legal-app-store/88698-floored-by-new-rejection.html

Очевидно, вы можете потребовать имя пользователя/пароль перед покупкой. Это действительно единственный способ, который имеет смысл. Код может делиться тысячами людей, что плохо.

Ответ 4

Отъезд Frac.as. Он предлагает вариант сочетания "короткий код", предложенный выше, но с некоторыми встроенными смартфонами для предотвращения злоупотреблений. Это SaaS API с большим свободным уровнем.