#ios #swift #in-app-purchase #storekit
#iOS #swift #покупка в приложении #storekit
Вопрос:
О SKPayment.applicationUsername
, он говорит здесь…
Это используется, чтобы помочь магазину обнаруживать нерегулярную активность. Например, в игре было бы необычно, если бы десятки разных учетных записей iTunes Store совершали покупки от имени одного и того же игрового персонажа.
Рекомендуемая реализация — использовать односторонний хэш имени учетной записи пользователя для вычисления значения этого свойства.
Это свойство необязательно. Итак, могу ли я использовать его для чего-то совершенно другого? Я хочу использовать его для хранения сведений о продукте, которых нет в iTunes.
Комментарии:
1. Вы им пользовались?
2. Нет, я не думал, что это стоило риска.
Ответ №1:
SKPayment.applicationUsername
используется Apple в серверной части только для обнаружения мошенничества. Они могут использовать это, чтобы увидеть, обрабатывает ли один пользователь покупки на нескольких устройствах или обрабатывает покупки быстрее, чем обычно.
Это значение нечитаемо, за исключением того, что вы устанавливаете его для оплаты, вы не можете прочитать, SKPaymentTransaction.payment.applicationUsername
оно есть всегда nil
.
Кстати, я думаю, что это недостаток StoreKit
, поскольку это делает невозможным привязку транзакций в учетной записи iTunes к учетной записи приложения, поэтому, если у вас есть пользователи, совместно использующие учетную запись iTunes, очень сложно не предоставлять приобретенный контент дважды.
Комментарии:
1. Точно. Это специально?
2. К сожалению, да. API предоставляет разработчику мало преимуществ или вообще не дает их, и, что еще хуже, фактически вводит в заблуждение.
3. Есть ли альтернатива API?
4. Зависит от типа информации, которую вы хотите сохранить. Чаще всего я хочу сохранить имя пользователя покупателя, чтобы его мог использовать только один пользователь. Если вы хотите сохранить что-то сложное, связанное с покупкой, вам, вероятно, понадобится собственное хранилище данных, которое сопоставляет
transaction_id
интересующую вас информацию. Если вы просто хотите назначить транзакцию идентификатору пользователя, вам может понадобиться серверная часть или какой-нибудь размещенный эквивалент .5. Но у вас нет идентификатора транзакции до тех пор, пока вы не свяжетесь с Apple. Если за это время приложение перезапустится, вы должны угадать, что пользователь пытался приобрести.