2012-01-13 5 views
1

У меня есть приложение, которое создает учетную запись для веб-приложения, которое в основном отправляет и принимает SMS-сообщения из Интернета. Вот как это работает (еще не выпущено, ближе к концу функций первого релиза, которые я запланировал):Как правильно защитить приложение?

Пользователь покупает приложение. Пользователь вводит свое имя, адрес электронной почты и пароль. Учетная запись создается на сервере, и отображается окончательный вид, указывающий пользователю, где можно получить доступ к веб-приложению. Открываются фоновые процессы (C2DM и ContentObserver для SMS).

Все идет хорошо. Андроида часть этого приложения работает безупречно, но я боюсь, что люди делают несколько аккаунтов с одной покупки. Как я могу остановить это? Я не знаю, когда дело доходит до этой темы. Прежде всего, когда отображается конечный вид, пользователь может просто нажать назад, а затем воссоздать другую учетную запись. Как я могу помешать им снова войти в эту форму? Я думаю, что я могу просто установить SharedPreference, но тогда все, что нужно сделать пользователю, чтобы сделать еще одну учетную запись, - это удалить приложение, а затем переустановить его и пропустить другую учетную запись.

Мне нужен способ, поэтому, как только пользователь регистрируется в первый раз, нет возможности, чтобы они могли зарегистрироваться снова на этом конкретном телефоне (или в конкретной учетной записи Google). Есть ли реальный способ добиться этого? Любая помощь приветствуется, я застрял, когда дело доходит до этой темы.

+0

Сохранить файл на SD-карту и проверить его существование – Blundell

+0

@Blundell есть способ, которым я могу идти дальше? Как определенный телефон или идентификатор Google, который всегда остается прежним? Поскольку для покупки приложения пользователь должен купить приложение из учетной записи google, что означает, что учетная запись google связана с процессом. Есть ли способ получить это? – Qasim

ответ

0

Поскольку функция идентификации SIM (getSimSerialNumber) возвращает нуль на устройствах CDMA и * ANDROID_ID * называется то же значение на устройствах CDMA; с добавлением таблеток, которые не имеют ни одного из них, я настоятельно рекомендую реализовать свой собственный уникальный идентификатор в вашей базе данных и сопоставить его с учетной записью пользователя Google.

Однако, поскольку poweruser всегда может сбросить свое хранилище данных приложений и очистить их идентификацию от устройства (таким образом, ваш сеанс приложения на устройстве совершенно новый при запуске приложения), этот подход имеет свои оговорки.

Вы можете проверить это BlogPost для идей о создании вашего уникального идентификатора

http://android-developers.blogspot.com/2011/03/identifying-app-installations.html

0

Я бы сделал проверку на стороне сервера. Каждое устройство имеет уникальный идентификатор. Если вы сохраните это на стороне веб-сервера во время создания учетной записи, вы проверите, была ли уже сделана учетная запись на этом устройстве. Также добавьте ту же проверку для идентификатора Google, на всякий случай.

String android_id = Secure.getString(getBaseContext().getContentResolver(), 
       Secure.ANDROID_ID); 

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

+0

Теперь у меня нет большого опыта работы с приложениями Android после их публикации; это мое первое приложение, поэтому мне было интересно, есть ли список людей, которые купили это приложение или что-то еще? Поэтому я могу проверить себя тоже, если я вижу случайную электронную почту в моей базе данных сервера, но она не входит в список пользователей, которые приобрели это приложение, что-то в этом роде. – Qasim

+0

Извините, у меня тоже нет опыта с этим, в настоящее время я работаю над своим первым приложением, которое будет опубликовано. Это в сочетании с AndroidID может быть хорошей комбинацией, хотя, если это возможно. –

+0

Осторожно ANDROID_ID возвращает null на некоторых устройствах и на другой телефонной трубке одним оператором сети, каждый телефон имеет тот же ANDROID_ID, есть много блога на эту тему http://stackoverflow.com/questions/2785485/is-there-a-unique- android-device-id – Blundell

Смежные вопросы