Comprobar mediante programación Play Store para actualizaciones de la aplicación

He puesto mi aplicación en Google Play Store. Ha sido instalado por muchos de los clientes de mi empresa. Entiendo el mecanismo de cómo se pretende actualizar la aplicación.

Los usuarios deben comprobar la casilla de verificación de actualización automática en la aplicación Playstore para cada aplicación que deseen actualizar automáticamente. Sin embargo, algunos usuarios lo han desmarcado o no lo han comprobado en primer lugar.

La aplicación que he escrito es para la industria de la atención y es utilizada por los cuidadores para llevar a domicilio. Algunos de nuestros clientes tienen 1200 cuidadores. Tendrían que llamar a todos los cuidadores a la oficina para actualizar los teléfonos individualmente. Esto es obviamente inaceptable.

¿Hay alguna manera de comprobar mediante programación si hay una versión actualizada de mi aplicación en Play Store?

¿Puedo tener código que se ejecuta cada vez que el usuario inicia la aplicación que comprueba la Play Store? Si hay una versión actualizada, entonces el usuario podría ser dirigido a la tienda. Esto significa que no es esencial que se compruebe la actualización automática.

Gracias por adelantado

Mate

No hay ninguna API oficial de Google (que yo sepa) que soporte esto.

Debe tener en cuenta para obtener un número de versión de una API.

En lugar de conectarse con API externas o páginas web (como Google Play Store). Existe el riesgo de que algo cambie en la API o en la página web, por lo que debería considerar si el código de versión de la aplicación actual está por debajo del número de versión que recibe de su propia API.

Solo recuerda que si actualizas tu aplicación, necesitas cambiar la versión en tu propia API con el número de versión de la aplicación.

Yo recomendaria.

Haga un archivo en su propio sitio web o API, con el nummer de la versión. (Eventualmente hacer un cronjob y hacer la actualización de la versión automática, y enviar una notificación cuando algo salió mal)

Debe obtener este valor en la página de Google Play Store.

<div class="content" itemprop="softwareVersion"> 1.2.5 </div> 

Consulta tu aplicación si la versión utilizada en el móvil está por debajo del número de versión que aparece en tu propio api / sitio.

Mostrar indicación de que necesita actualizar

Cosas que puedes hacer

Número de versión en la propia API

Pros:

  • No tiene que actualizar la aplicación cuando algo salió mal con la actualización de la versión.

Contras:

  • API puede estar fuera de línea
  • La página web de Play Store podría cambiar para que su versión 'ripper' no funcione más.

Número de versión en la página web Google Play Store

Pros:

  • No necesita una API

Contras:

  • Tienes que actualizar la aplicación cuando se cambia algo.
  • La página web de Play Store podría cambiar para que su versión 'ripper' no funcione más.

Incluya JSoup en su archivo build.gradle de aplicaciones:

 dependencies { compile 'org.jsoup:jsoup:1.8.3' } 

Y obtener la versión actual como:

 currentVersion = getPackageManager().getPackageInfo(getPackageName(), 0).versionName; 

Y ejecute el siguiente subproceso:

 private class GetVersionCode extends AsyncTask<Void, String, String> { @Override protected String doInBackground(Void... voids) { String newVersion = null; try { newVersion = Jsoup.connect("https://play.google.com/store/apps/details?id=" + MainActivity.this.getPackageName() + "&hl=it") .timeout(30000) .userAgent("Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6") .referrer("http://www.google.com") .get() .select("div[itemprop=softwareVersion]") .first() .ownText(); return newVersion; } catch (Exception e) { return newVersion; } } @Override protected void onPostExecute(String onlineVersion) { super.onPostExecute(onlineVersion); if (onlineVersion != null && !onlineVersion.isEmpty()) { if (Float.valueOf(currentVersion) < Float.valueOf(onlineVersion)) { //show dialog } } Log.d("update", "Current version " + currentVersion + "playstore version " + onlineVersion); } 

Para más detalles visite: http://revisitingandroid.blogspot.in/2016/12/programmatically-check-play-store-for.html

Configure un servidor que exponga una url HTTP que reporte la última versión, luego utilice un AlarmManager para llamar a esa URL y ver si la versión en el dispositivo es la misma que la versión más reciente. Si no es pop-up un mensaje o notificación y enviarlos al mercado para actualizar.

Hay algunos ejemplos de código: ¿Cómo permitir a los usuarios comprobar la versión más reciente de la aplicación desde la aplicación?

No hay API oficial de GooglePlay para hacerlo.

Sin embargo, puede utilizar esta biblioteca no oficial para obtener datos de la versión de la aplicación.

Y, si lo anterior no funciona para usted, siempre puede conectar http a la página de su aplicación (por ejemplo, https://play.google.com/store/apps/details?id=com.shots.android&hl=es ) y Analizar el campo "Versión actual".

Procedente de una aplicación híbrida POV. Este es un ejemplo javascript, tengo un pie de página Actualización disponible en mi menú principal. Si una actualización está disponible (es decir, mi número de versión dentro del archivo de configuración es menor que la versión recuperada, mostrar el pie de página) Esto entonces dirigirá al usuario a la tienda de aplicaciones / play, donde el usuario puede hacer clic en el botón de actualización.

También obtengo los nuevos datos (es decir, Notas de la versión) y los muestro en un modo de inicio de sesión si es la primera vez en esta versión.

En el dispositivo Listo, defina la URL de su tienda

  if (device.platform == 'iOS') storeURL = 'https://itunes.apple.com/lookup?bundleId=BUNDLEID'; else storeURL = 'https://play.google.com/store/apps/details?id=BUNDLEID'; 

El método Update Available se puede ejecutar tantas veces como desee. La mina se ejecuta cada vez que el usuario navega a la pantalla de inicio.

 function isUpdateAvailable() { if (device.platform == 'iOS') { $.ajax(storeURL, { type: "GET", cache: false, dataType: 'json' }).done(function (data) { isUpdateAvailable_iOS(data.results[0]); }).fail(function (jqXHR, textStatus, errorThrown) { commsErrorHandler(jqXHR, textStatus, false); }); } else { $.ajax(storeURL, { type: "GET", cache: false }).done(function (data) { isUpdateAvailable_Android(data); }).fail(function (jqXHR, textStatus, errorThrown) { commsErrorHandler(jqXHR, textStatus, false); }); } } 

IOS Callback: Apple tiene una API, por lo que es muy fácil de obtener

 function isUpdateAvailable_iOS (data) { var storeVersion = data.version; var releaseNotes = data.releaseNotes; // Check store Version Against My App Version ('1.14.3' -> 1143) var _storeV = parseInt(storeVersion.replace(/\./g, '')); var _appV = parseInt(appVersion.substring(1).replace(/\./g, '')); $('#ft-main-menu-btn').off(); if (_storeV > _appV) { // Update Available $('#ft-main-menu-btn').text('Update Available'); $('#ft-main-menu-btn').click(function () { openStore(); }); } else { $('#ft-main-menu-btn').html('&nbsp;'); // Release Notes settings.updateReleaseNotes('v' + storeVersion, releaseNotes); } } 

Callback Android: PlayStore tienes que raspar, como se puede ver la versión es relativamente fácil de agarrar y lo que es nuevo tomar el html en lugar del texto de esta manera puedo utilizar su formato (es decir, nuevas líneas, etc)

 function isUpdateAvailable_Android(data) { var html = $(data); var storeVersion = html.find('div[itemprop=softwareVersion]').text().trim(); var releaseNotes = html.find('.whatsnew')[0].innerHTML; // Check store Version Against My App Version ('1.14.3' -> 1143) var _storeV = parseInt(storeVersion.replace(/\./g, '')); var _appV = parseInt(appVersion.substring(1).replace(/\./g, '')); $('#ft-main-menu-btn').off(); if (_storeV > _appV) { // Update Available $('#ft-main-menu-btn').text('Update Available'); $('#ft-main-menu-btn').click(function () { openStore(); }); } else { $('#ft-main-menu-btn').html('&nbsp;'); // Release Notes settings.updateReleaseNotes('v' + storeVersion, releaseNotes); } } 

La lógica de la tienda abierta es directa, pero para la integridad

 function openStore() { var url = 'https://itunes.apple.com/us/app/appname/idUniqueID'; if (device.platform != 'iOS') url = 'https://play.google.com/store/apps/details?id=appid' window.open(url, '_system') } 

Asegúrese de que Play Store y la tienda de aplicaciones se hayan incluido en la lista blanca:

  <access origin="https://itunes.apple.com"/> <access origin="https://play.google.com"/> 

Hay una biblioteca AppUpdater . Cómo incluir:

  1. Agregue el repositorio a su proyecto build.gradle :
 allprojects { repositories { jcenter() maven { url "https://jitpack.io" } } } 
  1. Agregue la biblioteca a su módulo build.gradle :
 dependencies { compile 'com.github.javiersantos:AppUpdater:2.6.1' } 
  1. Agregue permisos de INTERNET y ACCESS_NETWORK_STATE al Manifest de su aplicación:
 <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
  1. Agregue esto a su actividad:
 AppUpdater appUpdater = new AppUpdater(this); appUpdater.start(); 

Firebase Remote Config podría ser una solución posible y fiable por ahora, ya que google no exponía ninguna api a ella.

Comprobar Documentos de configuración remotos de Firebase

Pasos 1.Crear un proyecto firebase y agregar google_play_service.json a su proyecto

2.Crear claves como "android_latest_version_code" y "android_latest_version_name" en la consola firebase-> Configuración remota

3. Código de Android

  public void initializeFirebase() { if (FirebaseApp.getApps(mContext).isEmpty()) { FirebaseApp.initializeApp(mContext, FirebaseOptions.fromResource(mContext)); } final FirebaseRemoteConfig config = FirebaseRemoteConfig.getInstance(); FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder() .setDeveloperModeEnabled(BuildConfig.DEBUG) .build(); config.setConfigSettings(configSettings); } 

Obtener el nombre y código de la versión actual

 int playStoreVersionCode = FirebaseRemoteConfig.getInstance().getString( "android_latest_version_code"); PackageInfo pInfo = this.getPackageManager().getPackageInfo(getPackageName(), 0); int currentAppVersionCode = pInfo.versionCode; if(playStoreVersionCode>currentAppVersionCode){ //Show update popup or whatever best for you } 

4. Y mantener firebase "android_latest_version_code" y "android_latest_version_name" hasta la fecha con su nombre y código de la versión de producción actual.

La configuración remota de Firebase funciona tanto en Android como en IPhone.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.