Использование незаконченных транзакций для обмена расходными материалами между устройствами в iOS? - PullRequest
2 голосов
/ 09 марта 2019

TL; DR Можете ли вы отложить вызов finishTransaction для расходных материалов в iOS, чтобы имитировать androids потребление Async?

В Android можно купить предмет, который окажется в списке, управляемом API биллинга. И могут быть доступны через queryPurchaseHistoryAsync .

Затем предмет можно использовать позже. Покупка и потребление - это две разные вещи.

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

Документы не ясны в SKPaymentQueue относительно синхронизации нескольких устройств.

Содержимое очереди сохраняется между запусками вашего приложения.

Но на практике это, кажется, обменивается между устройствами.

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

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

Теоретически транзакция должна оставаться в SKPaymentQueue и должна передаваться на все устройства, подключенные к одной учетной записи AppStore.

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

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

1 Ответ

3 голосов
/ 12 марта 2019

Вы обязательно должны завершить транзакцию на iOS:

StoreKit будет вызывать paymentQueue вашего наблюдателя (_: updatedTransactions :) каждый раз, когда ваше приложение запускается или возобновляется из фона, пока они не будут удалены.В связи с этим ваших клиентов могут неоднократно просить подтвердить подлинность их покупок или лишить их возможности покупать ваши продукты.https://developer.apple.com/library/archive/technotes/tn2387/_index.html#//apple_ref/doc/uid/DTS40014795-CH1-BEST_PRACTICES-FINISH_THE_TRANSACTION

И Android:

Потребление покупки, соответствующее данному токену покупки.Это приведет к тому, что этот элемент будет удален из всех последующих ответов getPurchases () и позволит выкупить элементы того же номера.https://developer.android.com/google/play/billing/billing_reference#consumePurchase

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

Вы также можете использовать такой сервис, как RevenueCat , который сделает все это за вас без головной боли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...