@android_ru

Страница 1004 из 3205
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: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
@InjectViewState ну там ещё надо data.getStringExtra("INAPP_DATA_SIGNATURE"); из ответа взять
ну взял я значит эту сигнатуру и ключ из гугл консоли. Как сверять? это наверно не просто equals что-то с чем-то, я так понимаю там что-то похитрее

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
ну можно не особо бесплатный
https://learndroid.e-legion.ru/users/sign_in

вот бесплатный был

Google
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 был метод для этого

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

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

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
Сорри за оффтоп. Хотелось бы узнать зп сениор ведро кодера в рф. Интересует зп среднестатистического сениора.

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

Alexey
18.02.2017
20:59:40
Это где)) он кто))
http://gmsservices.ru/blog/2016/10/19/no-fear/

Это где)) он кто))
про вилки в конце пишет. Это GDE Russia

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 в ответе? Её передешь ты перед вызовом метода покупки. Перед покупкой в неё нужно поместить каких-нибудь нужных данных с сервера и немного рандома. Затем эти данные нужно будет на сервере сверить эти данные, вместе с подписью

Dmitrii
18.02.2017
21:46:59
А связать AsyncTask и UI тред через LocalBroadcastReceiver это норм паттерн?

Вообще у меня уже есть Handler для связи _из_ AsyncTask в UI тред, только не пойму как его же в две стороны использовать

Арсений
18.02.2017
21:48:29
А связать AsyncTask и UI тред через LocalBroadcastReceiver это норм паттерн?
ты такие страшные вещи рассказываешь весь день, будет сложно уснуть

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
А связать AsyncTask и UI тред через LocalBroadcastReceiver это норм паттерн?
Так-то в AsyncTask'е есть метод onPreExecute() и onPostExecute() которые работают в UI треде.

Dmitrii
18.02.2017
22:54:53
Так-то в AsyncTask'е есть метод onPreExecute() и onPostExecute() которые работают в UI треде.
Мне надонесколько раз "сказать" асинк-таску что "пора начинать"

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 оператор, который перегоняет лист одних элементов в лист других?

Doni
19.02.2017
05:36:15
Всем привет, случилась проблема - работало-работало и перестало.

Если по правде: не вызывается onActivityResult у фрагмента из которого делается вызов "startActivityForResult". Также не вызывается onActivityResult у родительского activity.

Подскажите, в чем проблема может быть?

На формах, в основном пишут, что надо вызывать не так "getActivity().startActivityForResult()", а так "startActivityForResult()"

Отставить вопрос, проблему решил

Bogdan
19.02.2017
06:21:52
а у меня вопрос по скану QR кода - какие библиотеки комильфо?
Возможно уже не актуально но у Гугл есть google vision

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

DivelNick
19.02.2017
08:05:57
Покажи как повесил
relativeLayout.setOnClickListener(this);

Михаил
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
Это же

Страница 1004 из 3205