
Alexey
18.02.2017
20:35:28
вот типо юзер купил итем и вернулось вот такое да:
'{
"orderId":"GPA.1234-5678-9012-34567",
"packageName":"com.example.app",
"productId":"exampleSku",
"purchaseTime":1345678900000,
"purchaseState":0,
"developerPayload":"bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ",
"purchaseToken":"opaque-token-up-to-1000-characters"
}'
и что мне тут сверять и как?

Alexey
18.02.2017
20:36:19
@InjectViewState гугл после покупки отдает тебе в приложение JSON - ответ, этот ответ он подписывает подписью, эту подпись и сверять. Открытый ключ (для сверки) можно получить в консоли google play, закрытый - есть только у гугла
@InjectViewState
String dataSignature = data.getStringExtra("INAPP_DATA_SIGNATURE");
- вот это и сверять

Google

Alexey
18.02.2017
20:37:37

Alexey
18.02.2017
20:39:09
@InjectViewState ну там ещё надо
data.getStringExtra("INAPP_DATA_SIGNATURE");
из ответа взять

Alexey
18.02.2017
20:39:21
окей взял я эту сигнатуру

Nikolay
18.02.2017
20:40:00
посоветуйте мне какой-нибудь хороший и полный курс по андроиду, желательно чтобы там не только стандартная библиотека рассматривалась, но и новые общепринятые подходы были (всякие там архитекутры mvp с реализациями и прочее)
если ещё и на котлине курс будет = вообще прекрасно

Alexey
18.02.2017
20:41:03

Михаил
18.02.2017
20:41:06
мне кажется
на котлине и подавно

Nikolay
18.02.2017
20:41:25
ну можно не особо бесплатный

Alexey
18.02.2017
20:41:34
@InjectViewState У тебя есть RSA - публичный ключ, контент и сигнатура (подпись). Подставляешь в этот метод ) https://github.com/anjlab/android-inapp-billing-v3/blob/master/library/src/main/java/com/anjlab/android/iab/v3/Security.java#L123 подставляешь в этот метод. На сервере пишешь то же самое на своем языке

Михаил
18.02.2017
20:42:27
вот бесплатный был

Google

Alexey
18.02.2017
20:43:17

Nikolay
18.02.2017
20:44:45
вот бесплатный был
это шляпа, а не курс
оф. документацию, жизненный цикл активити-фрагментов и тп, я и сам могу прочитать
мне нужно не для совсем новичков в программировании, а для тех, кто хочет знать грамотные подходы в андроид разработке
чтобы не собирать инфу по крупицам с хабра-докладов и прочее

Alexey
18.02.2017
20:46:07
@InjectViewState первая ссылка в гугле http://stackoverflow.com/a/17144680/2971719

Alexey
18.02.2017
20:46:11
оу, спасибо. Я не те ключевые слова в гугл вбивал

Alexey
18.02.2017
20:47:43
@InjectViewState я не поню, вроде в IabHelper был метод для этого

Михаил
18.02.2017
20:50:12
http://skill-branch.ru/android
вот еще

Alexey
18.02.2017
20:52:25
@InjectViewState учти сразу при проверке подписи пришедший от IAB ответ в JSON парсить *не надо*. На вход метода проверки нужно подавать именно ту строку, которая пришла от IAB (иначе подпись может не сойтись)

Nikolay
18.02.2017
20:53:31
http://skill-branch.ru/android
вот это уже намного интереснее, но цену я всё-таки ожидал более адекватную :)
тут хотя бы по программе понятно, в какую сторону двигаться, спасибо

Михаил
18.02.2017
20:53:53

Alexey
18.02.2017
20:54:46

Alexey
18.02.2017
20:56:41
@InjectViewState можно это сделать на клиенте (метод verivy() выше), но безопаснее - на сервере

Alexey
18.02.2017
20:56:53
ну я на сервере и хочу
в приложении это выпиливается и ломается легко

Alexey
18.02.2017
20:57:21
точно так же легко, как и твоя проверка

Google

Alexey
18.02.2017
20:58:45
точно так же легко, как и твоя проверка
я делаю покупку через гугл плэй этот билинг сервис, потом на сервер отправляю эти все сигнатуры и т д, сервер валидирует, ну делает эту проверку сигнатуры. Если все ок, то в ответ отдает файл купленный грубо говоря
если не ок то посылает на хер

Beka
18.02.2017
20:58:57
Сорри за оффтоп. Хотелось бы узнать зп сениор ведро кодера в рф. Интересует зп среднестатистического сениора.

Alexey
18.02.2017
20:59:17

Beka
18.02.2017
20:59:32
Это где)) он кто))

Alexey
18.02.2017
20:59:40

Alexey
18.02.2017
21:00:44
@BigBeka чувак с канала подскаста (c)

Alexey
18.02.2017
21:01:09
@illarionov это как-то так делается по правильному, как я выше описал?
типо сервер проверяет подпись и только тогда отдает контент

Alexey
18.02.2017
21:01:39
@InjectViewState да
@InjectViewState ну т.е. не совсем :) Видишь строку developerPayload в ответе? Её передешь ты перед вызовом метода покупки. Перед покупкой в неё нужно поместить каких-нибудь нужных данных с сервера и немного рандома. Затем эти данные нужно будет на сервере сверить эти данные, вместе с подписью

Alexey
18.02.2017
21:08:18

Dmitrii
18.02.2017
21:46:59
А связать AsyncTask и UI тред через LocalBroadcastReceiver это норм паттерн?
Вообще у меня уже есть Handler для связи _из_ AsyncTask в UI тред, только не пойму как его же в две стороны использовать

Арсений
18.02.2017
21:48:29

Dmitrii
18.02.2017
21:48:42
Ну прости ... )

Quarx2k ?
18.02.2017
21:48:56
AsyncTask страшилка
Как раз на ночь

Dmitrii
18.02.2017
21:49:10
Могу обычный Thread пустить

Google

Dmitrii
18.02.2017
21:49:21
Мне в принципе похир ) Но суть то не меняется
Просто я не уверен, что AsyncTask стартует сразу
А если не сразу, то мой "рулер" может пропустить момент, когда клава поднимится
Т.е. какая логика... детект что клава поднялась, это я витоге в локал бродкаст ресивере получаю сообщение и вот в этот момент есть 2 опции:
1) Стартануть новый асинк таск "Рулер" который будет ожидать изменений визибилити моих квадратиков, которыедолжна частично накрыть клавиатура.
2) Сказать потоку "рулера" — "просыпайся, щас будут изменения скоро"
Ну или 3я опция мерить всегда и через Handler слать сообщения в UI

Admin
ERROR: S client not available

Alexey
18.02.2017
22:03:55
@illarionov слушай, а как дебажить/тестировать ин аппы? там ведь насколько я знаю муторно, надо влоз-первых выложить в маркет, добавить юзера, который не девелопер приложения в тестировщиков, и только тогда он смождет проверить. Может знаешь способ удобнее тестировать?

Roman
18.02.2017
22:49:53

Dmitrii
18.02.2017
22:54:53

Roman
18.02.2017
22:58:13

Dmitrii
18.02.2017
22:59:20
Так как без запуска повторного это сделать?
У меня процесс уже должен быть преддзапущен, иначе андроид может отложить запуск на непонятно когда
Для меня тут важны каждые 100 миллисекунд

Roman
18.02.2017
23:10:57

Dmitrii
18.02.2017
23:42:10
Состояние меняю из бродкаста а AsyncTask палит его постоянно
Получается такой типа middleware
ХЗ как сделать по-другому
mBroadcastState.setType(EVENT_KEYBOARD_OPEN);
mBroadcastState.setIsSleeping(false);
while (!this.isCancelled()) {
if (mBroadcastState.getIsSleeping()) {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
this.cancel(true);
break;
}
continue;
}
// ...
Как то так )

Google

Andrey
18.02.2017
23:55:10
Ребят,всем привет, кто знает, как от вспышки можно избавиться, которая появляется вокруг фрагмента с Surface?)

Михаил
19.02.2017
02:06:58
есть в rxjava оператор, который перегоняет лист одних элементов в лист других?

Anton ?
19.02.2017
02:09:42

Doni
19.02.2017
05:36:15
Всем привет, случилась проблема - работало-работало и перестало.
Если по правде: не вызывается onActivityResult у фрагмента из которого делается вызов "startActivityForResult". Также не вызывается onActivityResult у родительского activity.
Подскажите, в чем проблема может быть?
На формах, в основном пишут, что надо вызывать не так "getActivity().startActivityForResult()", а так "startActivityForResult()"
Отставить вопрос, проблему решил

Bogdan
19.02.2017
06:21:52

DivelNick
19.02.2017
07:59:48
Здравствуйте, повесил ClickListener на разметку фрагмента, но он почему-то не срабатывает, в чем может быть дело не подскажете?

Михаил
19.02.2017
08:05:42

DivelNick
19.02.2017
08:05:57

Михаил
19.02.2017
08:07:34
Покажи полностью метод onCreateView

DivelNick
19.02.2017
08:07:59
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.free_fragment, container, false);
imageView = (ImageView) view.findViewById(R.id.paid_text_img);
imageView.setImageDrawable(getResources().getDrawable(R.drawable.start_screen_paid_text));
relativeLayout = (RelativeLayout) view.findViewById(R.id.rel);
relativeLayout.setOnClickListener(this);
try {
startFlick();
}catch (Throwable e){}
return view;
}

Михаил
19.02.2017
08:09:16
Вроде все норм

DivelNick
19.02.2017
08:09:23
Это же