На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Hsilgos
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> Уникальный ключ для идентификации каждой установки
    Всем привет!

    Кто тут бывает, наверно, уже в курсе, какую программу я сейчас пишу. Разработка продвигается неплохо, через недельку уже буду по моим расчетам завершать. Пока что навешиваю параметры услуг при заказе такси. Но на следующей неделе уже точно буду озабочен следующим вопросом, поэтому тему решил создать заранее.

    Все виденные мной программы конкурентов (5 штук) требуют обязательной SMS-регистрации. Некоторые сами посылают исходящее сообщение. Другие дают какую-то команду серверу, и сообщение приходит на указанный номер. Второе мне видится более приемлимым, так как позволяет использовать программу на устройстве с internet-only-симкой, либо на устройстве вообще без симки, получая код на любой телефон, имеющийся в наличии. Хотя и не каждое приложение. Одно из них как-то осуществило привязку к железу, полученный мной на мой простенький за 1000 р. телефон код на Android-устройстве так и не сработал (и мне ситуацию с этим приложением, очевидно, не побороть, так как на телефонной симке нет интернета, а на интернетной - сотовой связи). Пока про это не спрашиваю, шеф пользуется иногда сервисом SMS-рассылки, пока только вручную, но говорит, что осуществить это программно, из какого-либо скрипта не должно составить проблемы. Да и по-любому, вопросы на эту тему нужно создавать в другом разделе.

    Меня же интересует другое. Полученный смс-код должен вызвать к жизни только ту установку, из которой была отправлена команда к серверу выслать SMS на указанный номер. Соответственно, должна быть возможность как-то уникально идентифицировать устройство, сопоставив ему какой-то ключ приемлимой длины. И это не должно барахлить и на эмуляторах (либо как-то вычислять, что это эмулятор и препятствовать такой активации). Далее, использование ключа дает следующие преимущества: мы можем вести историю по клиентам на сервере, различая их по этому ключу, мы можем блокировать каких-либо клиентов, которые заваливают службу заказами, за которые потом не хотят вести ответственности, в том числе и предотвращать возможные атаки против нашей фирмы.

    Итак, как такое сделать?

    Добавлено
    Пока вижу только один вариант: жестко зашивать ключ где-нибудь в ресурсах Android-приложения или даже в искходном коде. При этом для каждой новой закачки приложения с нашего сайта нужно автоматически собирать apk из файлов проекта, например, с помощью ant. Это вполне реально сделать, немного труда и все получится. Но разве можно будет такое каждый раз заново собираемое приложение выкладывать на ресурсы типа Google Play?

    Есть ли механизм генерации постоянного уникального ключа исходя из свойств самой системы, где установлена универсальная сборка приложения?
      Зачем плодить такие сложные конструкции, если можно просто привязывать к гугл аккаунту, как делает Play Market?
        Я еще ничего не плодил, кстати. Про привязку к гугл-аккаунту не очень понял. Ну да, телефон, наверно, привязан. Но Вы тогда снова говорите о необходимости выкладывать приложение только на Google Play. Ну и наконец, что само-то приложение возьмет от того, что оно работает на устройстве, которое ассоциируетсся с аккаунтом Google?
        Сообщение отредактировано: Homez -
          Цитата Homez @
          Но Вы тогда снова говорите о необходимости выкладывать приложение только на Google Play.

          Это самый идеальный вариант, хотя я понимаю, что в вашем случае он может быть неприменим, так как не факт, что в России можно получать деньги за Андроид-приложения в Play Market.

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

          К телефону привязывать неразумно. Ведь человек может его потерять, продать, поменяться с кем-то, или просто выбросить/положить на полку и купить новый. И что, нужно будет заново покупать все программы? Никто такой программой пользоваться не будет.
          Сообщение отредактировано: [S]mike -
            Цитата [S]mike @
            Это самый идеальный вариант, хотя я понимаю, что в вашем случае он может быть неприменим, так как не факт, что в России можно получать деньги за Андроид-приложения в Play Market.

            Приложение бесплатное!

            Цитата [S]mike @
            Но можно ведь по крайней мере унаследовать принцип распространения приложений от гугла - то есть привязывать не к устройству, а к аккаунту. Ну а дальше можно, например, проверять онлайн при запуске, действительно ли данный аккаунт имеет право на использование программы, или хранить уникальный активационный ключ в профиле.

            И как привязывать к аккаунту?

            Добавлено
            А, ну про активационный ключ я понял. Только среди 5 рассмотренных мной приложений такси я не видел ни одного такого, где использовался уникальный активационный ключ. В паре тех, которые требовали активации ключом, полученным в SMS-сообщении, ключ был всего из четырех цифр. Очевидно, что он работал не один, а вкупе с каким-то значением, формируемым автоматически на конкретном девайсе. Но я не утверждаю, что это есть гут - тут получается, что действительно не будет работать на другом девайсе. Но тогда нужно формировать уникальный активационный ключ при любом запросе на активацию на сервере, и пользователь должен будет ввести уже не менее 8 цифр, наверно. Может быть, это и не составит большой проблемы. Поговорю с шефом.
              Цитата Homez @
              Приложение бесплатное!

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

              Цитата Homez @
              И как привязывать к аккаунту?

              Это зависит от многих факторов, например, как вы вообще будете регистрировать. Класс для работы с аккаунтом: http://developer.android.com/reference/and...untManager.html

              Добавлено
              А вот еще немного о том, как работать с аккаунтом http://stackoverflow.com/questions/2245545...ame-via-android
                Что-то не думаю, что хорошая идея всех прямо так на гугл сажать.

                Добавлено
                Но хотя, надо подумать...
                  Цитата Homez @
                  Что-то не думаю, что хорошая идея всех прямо так на гугл сажать.

                  Так сажаешь не ты, а гугл ;) А ты только используешь предлагаемый им функционал.
                    ну а чем лучше такого способа, когда просто для каждого нового пользователя генерируем на сервере свой уникальный ключ, скажем, из 8 цифр. Пользователь получает его по SMS и вводит один раз. Далее программа во всех обращениях к серверу использует этот ключ.

                    В аналогичных программах для заказа такси везде была активация по SMS. В тех, в которых SMS было входящим, в нем приходил ключ. Видимо, не просто так все это было сделано в стольких программах (5 штук смотрел). И нигде не было авторизации по какому-то там логину и паролю.
                      Цитата Homez @
                      И нигде не было авторизации по какому-то там логину и паролю.

                      Эммм, а причем тут логин и пароль? Я имел ввиду для привязки использовать гугл аккаунт, а не телефон. Логин и пароль у пользователя вводятся в менеджере аккаунтом, то есть телефон по идее должен быть залогинен в гугл (иначе многие программы будет невозможно использовать, в том числе и Маркет).
                        Если только для телефона, то можно заюзать:
                        Цитата
                        TelephonyManager manager = (TelephonyManager) mContext
                        .getSystemService(Context.TELEPHONY_SERVICE);
                        String imei = manager.getDeviceId();

                        Но если таблетка, то фокус не сработает.

                        И отсюда вывод номер 2: мак адрес вайфайного адаптера рулит и разруливает, только надо парочку трюков сделать магических типа таких как включить и выключить вайфай если мак = null.
                          Сэргэй Кляуз
                          Привязка к железяке не есть гут здесь. Я думаю о возможности пользователя работать с одним ключом на разных девайсах.

                          Цитата [S]mike @
                          Эммм, а причем тут логин и пароль? Я имел ввиду для привязки использовать гугл аккаунт, а не телефон. Логин и пароль у пользователя вводятся в менеджере аккаунтом, то есть телефон по идее должен быть залогинен в гугл (иначе многие программы будет невозможно использовать, в том числе и Маркет).
                          А где я тут говорил про привязку телефона?

                          Ну а как Android позволяет пользоваться учеткой гугл? Каждый раз требуется подтверждение пользователя на доступ к этим данным? Или его достаточно дать один раз?
                            Цитата Homez @
                            Ну а как Android позволяет пользоваться учеткой гугл? Каждый раз требуется подтверждение пользователя на доступ к этим данным? Или его достаточно дать один раз?

                            Не получится у тебя, так как шаред юзер айди не тот. Но вот свой эккаунт создать ты можешь, а там уже - логин, пароль и все дела.
                              Цитата Сэргэй Кляуз @
                              Не получится у тебя, так как шаред юзер айди не тот. Но вот свой эккаунт создать ты можешь, а там уже - логин, пароль и все дела.

                              Ничего не понял из Вашего сообщения. Поясните.
                                Цитата Homez @
                                Ничего не понял из Вашего сообщения. Поясните.

                                Рассказываю, пока опять не забанили :)
                                1) У тебя есть на телефоне гугл эккаунт. Но прочитать логин homez@gmail.com ты не можешь со своей апы, потому что она у тебя подписана другим ключем и shared user id свойства в манифесте нет
                                2) Ты можешь создать свой эккаунт, назвать его как то и юзер будет там хранить логин и пароль.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0446 ]   [ 15 queries used ]   [ Generated: 27.04.24, 08:58 GMT ]