Как идентифицировать клиента на отправленном сервером событии для подписок Apple? - PullRequest
0 голосов
/ 07 января 2020

Реализация подписок в приложении iOS означает, что мы хотим обрабатывать SSE в случае изменения статуса подписки, чтобы управлять правами пользователя внутри службы.

Документация Apple не не показывает явный GUID клиента.

Они предоставляют в каждой полезной нагрузке SSE квитанции, например, последний .

Вопрос: как можно сервер API однозначно идентифицирует клиентов?

Должен ли сервер API отслеживать каждую квитанцию ​​в порядке наследования? Т.е. должен ли API сохранять каждую квитанцию ​​и ссылку на предыдущую квитанцию, вплоть до первой отправленной квитанции (которая может быть связана с клиентом через приложение iOS, которое пользователь использовал для инициирования своей подписки), и повторно отследить эту историю на каждом SSE?

на этот поток , UUID на стороне службы applicationUsername (используется Apple для «проверки нерегулярной активности») не является решением, так как это не указано в квитанциях или SSE. Поток намекает на то, что использование идентификаторов транзакций по-прежнему является лучшим способом идентификации SSE, поскольку в конечном итоге он привязан к пользователю, и служба должна отслеживать транзакции, совершенные пользователем на платформе Apple для заданного service.

Разве нет более простого и прямого способа установить sh отношения между SSE, его клиентом Apple и пользователем сервиса?

1 Ответ

0 голосов
/ 27 января 2020

Немного покопавшись и расспросив, я пришел к следующему выводу:

Существует только один способ t ie событие транзакции для пользователя, а именно с помощью механизма восстановления реализовать в своем приложении.

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

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

Но, поскольку через некоторое время вы можете «повторно подписаться» из AppStore, не просматривая ваше приложение, Apple может отправить SSE на ваш сервер, который будет содержать новый (следовательно, неизвестный) исходный идентификатор транзакции, поскольку эта новая подписка имеет новую транзакцию.


Короче говоря,

  • You ne Ed * чтобы сохранить по крайней мере БД исходных идентификаторов транзакций, которые вы получаете как SSE
  • Вам необходимо реализовать механизм восстановления, чтобы каждый раз при запуске приложения связываться с сервером со списком транзакций Идентификаторы / исходные идентификаторы транзакций Apple дает вам
  • Вы должны согласиться с тем, что транзакции хранятся в вашем бэкэнде без ссылки на пользователя (поскольку пользователь, возможно, еще раз подписался, не запуская приложение)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...