2016-05-23 5 views
1

Я работаю над приложением, которое имеет фильтрацию контента на основе страны-пользователя. Насколько я знаю, можно получить страну в iOS через App Store. Есть ли возможность сделать это на Android через Google Play?Android извлекает страну пользователя из учетной записи google

Список решений, которые не являются приемлемыми:

  1. Язык: пользователь может жить во Франции, но есть английский языковой стандарт, так что это не будет работать.
  2. Руководитель телефонной связи: как насчет таблеток? Если пользователь уехал за границу и сменил сим-карту?
  3. IP или геолокация: пользователь может уехать за границу, поэтому нет фильтрации.

У моего приложения есть приложения для покупок, и я могу получить код валюты в ISO 4217. Но это частичное решение, а что же касается еврозоны?

+0

https://developers.google.com/maps/documentation/geocoding/start?csw=1#geocoding-request-and-response-latitudelongitude-lookup –

+0

@IntelliJAmiya Я не могу использовать IP или геолокацию. См. № 3 – costello

+0

Если вы хотите получать информацию из учетной записи Google, сделайте запрос REST в Google, чтобы прочитать их профиль. Одним из полей в профиле является местоположение (я забываю, это город или страна). Аутентификация через OAuth. Это решение не зависит от Android - работает в приложении iOS или в веб-приложении. –

ответ

0

Вы можете использовать веб-службу, которая вернет местоположение на основе IP-адреса пользователя. Вот пример одного из веб-службы:

private class AsyncTaskClass extends AsyncTask<Void, JSONObject, JSONObject> { 

     @Override 
     protected JSONObject doInBackground(Void... params) { 

      OkHttpClient client = new OkHttpClient(); 
      Request request = new Request.Builder() 
        .url("http://ip-api.com/json") 
        .build(); 

      try { 
       Response response = client.newCall(request).execute(); 
       return new JSONObject(response.body().string()); 
      } catch (IOException | JSONException e) { 
       e.printStackTrace(); 
       return null; 
      } 
     } 

     @Override 
     protected void onPostExecute(JSONObject data) { 
      try { 
       Log.i("Country", data.getString("country")); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
+0

Я не могу это использовать, потому что, если пользователь уехал за границу? IP будет отличаться. – costello

+0

Если это так, вы можете попросить пользователя его страну установить приложение и сохранить его в «SharedPreferences» для фильтрации вашего контента. –