Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.15.229.217] |
|
Сообщ.
#1
,
|
|
|
Всем привет!
Кто тут бывает, наверно, уже в курсе, какую программу я сейчас пишу. Разработка продвигается неплохо, через недельку уже буду по моим расчетам завершать. Пока что навешиваю параметры услуг при заказе такси. Но на следующей неделе уже точно буду озабочен следующим вопросом, поэтому тему решил создать заранее. Все виденные мной программы конкурентов (5 штук) требуют обязательной SMS-регистрации. Некоторые сами посылают исходящее сообщение. Другие дают какую-то команду серверу, и сообщение приходит на указанный номер. Второе мне видится более приемлимым, так как позволяет использовать программу на устройстве с internet-only-симкой, либо на устройстве вообще без симки, получая код на любой телефон, имеющийся в наличии. Хотя и не каждое приложение. Одно из них как-то осуществило привязку к железу, полученный мной на мой простенький за 1000 р. телефон код на Android-устройстве так и не сработал (и мне ситуацию с этим приложением, очевидно, не побороть, так как на телефонной симке нет интернета, а на интернетной - сотовой связи). Пока про это не спрашиваю, шеф пользуется иногда сервисом SMS-рассылки, пока только вручную, но говорит, что осуществить это программно, из какого-либо скрипта не должно составить проблемы. Да и по-любому, вопросы на эту тему нужно создавать в другом разделе. Меня же интересует другое. Полученный смс-код должен вызвать к жизни только ту установку, из которой была отправлена команда к серверу выслать SMS на указанный номер. Соответственно, должна быть возможность как-то уникально идентифицировать устройство, сопоставив ему какой-то ключ приемлимой длины. И это не должно барахлить и на эмуляторах (либо как-то вычислять, что это эмулятор и препятствовать такой активации). Далее, использование ключа дает следующие преимущества: мы можем вести историю по клиентам на сервере, различая их по этому ключу, мы можем блокировать каких-либо клиентов, которые заваливают службу заказами, за которые потом не хотят вести ответственности, в том числе и предотвращать возможные атаки против нашей фирмы. Итак, как такое сделать? Добавлено Пока вижу только один вариант: жестко зашивать ключ где-нибудь в ресурсах Android-приложения или даже в искходном коде. При этом для каждой новой закачки приложения с нашего сайта нужно автоматически собирать apk из файлов проекта, например, с помощью ant. Это вполне реально сделать, немного труда и все получится. Но разве можно будет такое каждый раз заново собираемое приложение выкладывать на ресурсы типа Google Play? Есть ли механизм генерации постоянного уникального ключа исходя из свойств самой системы, где установлена универсальная сборка приложения? |
Сообщ.
#2
,
|
|
|
Зачем плодить такие сложные конструкции, если можно просто привязывать к гугл аккаунту, как делает Play Market?
|
Сообщ.
#3
,
|
|
|
Я еще ничего не плодил, кстати. Про привязку к гугл-аккаунту не очень понял. Ну да, телефон, наверно, привязан. Но Вы тогда снова говорите о необходимости выкладывать приложение только на Google Play. Ну и наконец, что само-то приложение возьмет от того, что оно работает на устройстве, которое ассоциируетсся с аккаунтом Google?
|
Сообщ.
#4
,
|
|
|
Цитата Homez @ Но Вы тогда снова говорите о необходимости выкладывать приложение только на Google Play. Это самый идеальный вариант, хотя я понимаю, что в вашем случае он может быть неприменим, так как не факт, что в России можно получать деньги за Андроид-приложения в Play Market. Но можно ведь по крайней мере унаследовать принцип распространения приложений от гугла - то есть привязывать не к устройству, а к аккаунту. Ну а дальше можно, например, проверять онлайн при запуске, действительно ли данный аккаунт имеет право на использование программы, или хранить уникальный активационный ключ в профиле. К телефону привязывать неразумно. Ведь человек может его потерять, продать, поменяться с кем-то, или просто выбросить/положить на полку и купить новый. И что, нужно будет заново покупать все программы? Никто такой программой пользоваться не будет. |
Сообщ.
#5
,
|
|
|
Цитата [S]mike @ Это самый идеальный вариант, хотя я понимаю, что в вашем случае он может быть неприменим, так как не факт, что в России можно получать деньги за Андроид-приложения в Play Market. Приложение бесплатное! Цитата [S]mike @ Но можно ведь по крайней мере унаследовать принцип распространения приложений от гугла - то есть привязывать не к устройству, а к аккаунту. Ну а дальше можно, например, проверять онлайн при запуске, действительно ли данный аккаунт имеет право на использование программы, или хранить уникальный активационный ключ в профиле. И как привязывать к аккаунту? Добавлено А, ну про активационный ключ я понял. Только среди 5 рассмотренных мной приложений такси я не видел ни одного такого, где использовался уникальный активационный ключ. В паре тех, которые требовали активации ключом, полученным в SMS-сообщении, ключ был всего из четырех цифр. Очевидно, что он работал не один, а вкупе с каким-то значением, формируемым автоматически на конкретном девайсе. Но я не утверждаю, что это есть гут - тут получается, что действительно не будет работать на другом девайсе. Но тогда нужно формировать уникальный активационный ключ при любом запросе на активацию на сервере, и пользователь должен будет ввести уже не менее 8 цифр, наверно. Может быть, это и не составит большой проблемы. Поговорю с шефом. |
Сообщ.
#6
,
|
|
|
Цитата Homez @ Приложение бесплатное! Ну, тем более. Чтобы зарегистрироваться самым правильным будет привязка к гугл аккаунту. Как и регистрация вообще везде производится - по имейлу. Цитата Homez @ И как привязывать к аккаунту? Это зависит от многих факторов, например, как вы вообще будете регистрировать. Класс для работы с аккаунтом: http://developer.android.com/reference/and...untManager.html Добавлено А вот еще немного о том, как работать с аккаунтом http://stackoverflow.com/questions/2245545...ame-via-android |
Сообщ.
#7
,
|
|
|
Что-то не думаю, что хорошая идея всех прямо так на гугл сажать.
Добавлено Но хотя, надо подумать... |
Сообщ.
#8
,
|
|
|
Цитата Homez @ Что-то не думаю, что хорошая идея всех прямо так на гугл сажать. Так сажаешь не ты, а гугл А ты только используешь предлагаемый им функционал. |
Сообщ.
#9
,
|
|
|
ну а чем лучше такого способа, когда просто для каждого нового пользователя генерируем на сервере свой уникальный ключ, скажем, из 8 цифр. Пользователь получает его по SMS и вводит один раз. Далее программа во всех обращениях к серверу использует этот ключ.
В аналогичных программах для заказа такси везде была активация по SMS. В тех, в которых SMS было входящим, в нем приходил ключ. Видимо, не просто так все это было сделано в стольких программах (5 штук смотрел). И нигде не было авторизации по какому-то там логину и паролю. |
Сообщ.
#10
,
|
|
|
Цитата Homez @ И нигде не было авторизации по какому-то там логину и паролю. Эммм, а причем тут логин и пароль? Я имел ввиду для привязки использовать гугл аккаунт, а не телефон. Логин и пароль у пользователя вводятся в менеджере аккаунтом, то есть телефон по идее должен быть залогинен в гугл (иначе многие программы будет невозможно использовать, в том числе и Маркет). |
Сообщ.
#11
,
|
|
|
Если только для телефона, то можно заюзать:
Цитата TelephonyManager manager = (TelephonyManager) mContext .getSystemService(Context.TELEPHONY_SERVICE); String imei = manager.getDeviceId(); Но если таблетка, то фокус не сработает. И отсюда вывод номер 2: мак адрес вайфайного адаптера рулит и разруливает, только надо парочку трюков сделать магических типа таких как включить и выключить вайфай если мак = null. |
Сообщ.
#12
,
|
|
|
Сэргэй Кляуз
Привязка к железяке не есть гут здесь. Я думаю о возможности пользователя работать с одним ключом на разных девайсах. Цитата [S]mike @ А где я тут говорил про привязку телефона?Эммм, а причем тут логин и пароль? Я имел ввиду для привязки использовать гугл аккаунт, а не телефон. Логин и пароль у пользователя вводятся в менеджере аккаунтом, то есть телефон по идее должен быть залогинен в гугл (иначе многие программы будет невозможно использовать, в том числе и Маркет). Ну а как Android позволяет пользоваться учеткой гугл? Каждый раз требуется подтверждение пользователя на доступ к этим данным? Или его достаточно дать один раз? |
Сообщ.
#13
,
|
|
|
Цитата Homez @ Ну а как Android позволяет пользоваться учеткой гугл? Каждый раз требуется подтверждение пользователя на доступ к этим данным? Или его достаточно дать один раз? Не получится у тебя, так как шаред юзер айди не тот. Но вот свой эккаунт создать ты можешь, а там уже - логин, пароль и все дела. |
Сообщ.
#14
,
|
|
|
Цитата Сэргэй Кляуз @ Не получится у тебя, так как шаред юзер айди не тот. Но вот свой эккаунт создать ты можешь, а там уже - логин, пароль и все дела. Ничего не понял из Вашего сообщения. Поясните. |
Сообщ.
#15
,
|
|
|
Цитата Homez @ Ничего не понял из Вашего сообщения. Поясните. Рассказываю, пока опять не забанили 1) У тебя есть на телефоне гугл эккаунт. Но прочитать логин homez@gmail.com ты не можешь со своей апы, потому что она у тебя подписана другим ключем и shared user id свойства в манифесте нет 2) Ты можешь создать свой эккаунт, назвать его как то и юзер будет там хранить логин и пароль. |
Сообщ.
#16
,
|
|
|
мда, тогда и прелести в этом не вижу никакой.
|
Сообщ.
#17
,
|
|
|
Ага, но вот это:
Цитата Пока вижу только один вариант: жестко зашивать ключ где-нибудь в ресурсах Android-приложения или даже в искходном коде. При этом для каждой новой закачки приложения с нашего сайта нужно автоматически собирать apk из файлов проекта, например, с помощью ant. Это вполне реально сделать, немного труда и все получится. Но разве можно будет такое каждый раз заново собираемое приложение выкладывать на ресурсы типа Google Play? полная лажа Добавлено Да, еще вариаент: качаете софтинку, при старте она ломится в интернеты и качает какой то СВОЙ кусок данных. Добавьте логин перед скачиванием и вуаля. |
Сообщ.
#18
,
|
|
|
Цитата Сэргэй Кляуз @ Но прочитать логин homez@gmail.com ты не можешь со своей апы А классы AccountManager & Account на что? |
Сообщ.
#19
,
|
|
|
Цитата Сэргэй Кляуз @ полная лажа Я и не утверждаю, что это хороший вариант. Просто первое, что пришло в голову. Цитата Сэргэй Кляуз @ качаете софтинку, при старте она ломится в интернеты и качает какой то СВОЙ кусок данных. Добавьте логин перед скачиванием и вуаля. Какой кусок данных, с чем? Логин - это регистрация или авторизация? |
Сообщ.
#20
,
|
|
|
Решили сделать с шефом так. При первом запуске приложение отправляет на сервер запрос, по которому на указанный номер клиенту высылается 4-значный числовой код, формируемый сервером случайны образом, он же запоминается в базе вместе с номером телефона этого клиента. Клиент вводит этот код один раз, далее программа работает с сервером, отсылая в качестве ключа телефонный номер, на который был выслан SMS, а в качестве пароля выступает этот же номер, прошедший криптование с помощью того 4-цифрового кода, который клиент получил по SMS и ввел. SMS-регистрация нужна для привязки клиента к номеру, чтобы по нему можно было всегда к нему обратиться, например, для решения внештатных ситуаций. И SMS-рассылка, опять-таки, например, накануне ДР клиента, с предложением прокатиться на такси в этот день с БАЛЬШУЩЕЙ скидкой.
|