172 похожих чатов

Есть кто-то мастер In-App, подскажите пожалуйста?)) 1. После успешной транзакции покупки

подписки, все ок в очереди приходящих транзакций
2. Если я делаю восстановление покупок, тоже все ок.
3. Если я во время действующей подписки пытаюсь купить снова, то показывает что куплено, транзакция приходит одна, все ок, очередь правильная.
4. Только если я делал п.3, то после перезагрузки приложения единоразово приходит очередь из всех ранее совершенных транзакций с transactionState == .purchased (Например 14 шт, если еще раз подпишусь то теперь будет 15 приходить и тд)

До перезагрузки аппки все отлично, почему после перезагрузеи приходит эта очередь, она совсем нежданная мною. Может есть объяснение и так надо? Может это решаемо? Или это баг и нужно просто добавить костыль?

18 ответов

13 просмотров

А ты завершаешь все транзакции после обработки?

bodich- Автор вопроса
Say my name
А ты завершаешь все транзакции после обработки?

Да. Я для уверенности могу еще несколько раз нажать покупку (при уже купленной подписке), оно возвращает лишь ОДНУ транзакцию, и сообщение что уже куплено. Но как только перезагружаю приложение, прилетают 15 штук .purchased

bodich
Да. Я для уверенности могу еще несколько раз нажат...

this is the Way ;) то есть так задумано самим эпплом. каждый раз когда ты чего то запрашиваешь - генерируется новая транзакция в которой содержится информация об оригинальной транзакции

bodich- Автор вопроса
Say my name
this is the Way ;) то есть так задумано самим эппл...

Но после рестарта прилетают просто все старые, которые я уже завершал ранее и они перестали приходить. Мне их зачем-то снова все пушат... Причем только в случае если я попытался купить уже купленное)))

bodich
Но после рестарта прилетают просто все старые, кот...

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

bodich- Автор вопроса
Say my name
так для этого и пушат чтобы ты проверил и понял чт...

Открыл детали поведения: 1. Если я пытаюсь купить купленное, то в paymentQueue:updatedTransactions приходить только эта одна попытка, но SKPaymentQueue.default() добавляются закулисами все предыдущие, до релоада в делегат они не отправляются. А при рестарте они уже оттуда все приходят в paymentQueue:updatedTransactions

bodich- Автор вопроса
Say my name
так для этого и пушат чтобы ты проверил и понял чт...

Правильно проверять купленные билеты на обновляемую подписку это только через Validate App Store Receipt и вот это все? Без сервера это дело совсем тяжко проверять как я понял? Ибо во входных SKPaymentTransaction только дата покупки хранится, а высчитывать дату окончания это как я понял не принято и вообще может быть ошибочно посчитано?

bodich
Правильно проверять купленные билеты на обновляему...

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

bodich- Автор вопроса
Say my name
да, если делать все по уму - то без своего сервера...

А если допустим забить на валидацию как на безопасность, то как правильно проверить: 1. Истекла подписка или нет по факту 2. Дату окончания подписки

bodich
А если допустим забить на валидацию как на безопас...

отсылать эпплу и получать расшифровку. но ты подставляешься под MitM-атаку

bodich- Автор вопроса
Say my name
отсылать эпплу и получать расшифровку. но ты подст...

Но это они об этом же пишут НЕ ДЕЛАЙ ТАК? Имеется ввиду что просто реджект получу за это или всего лишь предупреждение что лучше бы так не делать?

bodich- Автор вопроса
David Khegay
реджект нет, просто не безопасно

Выходит что для одной лишь операции проверки чека, нужно на каком-нибудь Vapor писать сервер, заливать его на хероку и юзать его лишь для проверки подписки? (((

bodich- Автор вопроса
David Khegay
погугли RevenueCat

Спасибо!!! RevenueCat это лидер выбора или есть ближайший конкурент сравнить?

bodich- Автор вопроса

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта