Notificaciones de empuje basadas en ubicación para Android

¿Hay de todos modos en el envío de una ubicación basada en la notificación de empuje para dispositivos Android con el uso de un servicio de terceros de notificación push, tales como Parse? Me gustaría enviar notificación push a mis usuarios sin la molestia de recibir una notificación que no se relaciona con ese usuario específico porque no están en un área determinada. Además, podría obtener la ubicación de los usuarios sobre la base de un intervalo de tiempo, pero lo haría de una manera diferente, entonces, si es posible.

Sí, esto es totalmente posible, siempre y cuando esté interpretando correctamente lo que usted está pidiendo.

Para lograr esto, enviaría la notificación push de GCM a todos sus usuarios (a menos que tuviera una forma, de lado del servidor de filtrar algunos de ellos). Luego, en su aplicación, en lugar de simplemente crear una notificación y pasarla al gestor de notificaciones, primero debería utilizar LocationManager (o la API de LocationServices más reciente) para determinar si el usuario se encuentra en la ubicación correcta primero y luego descartar el GCM Notificación si no lo son.

Tendrá que cuidar de varias cosas para hacer esto:

  • Su AndroidManifest.xml requerirá varios cambios de permisos, tanto para los cambios de GCM como para el acceso a la ubicación:

    <!-- Needed for processing notifications --> <permission android:name="com.myappname.permission.C2D_MESSAGE" android:protectionLevel="signature" /> <uses-permission android:name="com.myappname.permission.C2D_MESSAGE" /> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> <!-- Needed for Location --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
  • También necesitará configurar un receptor de notificación en la sección <application> del manifiesto:

     <receiver android:name="com.myappname.NotificationReceiver" android:permission="com.google.android.c2dm.permission.SEND"> <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <category android:name="com.myappname" /> </intent-filter> <intent-filter> <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> <category android:name="com.myappname" /> </intent-filter> </receiver> 
  • Además, necesitará escribir su clase NotificationReceiver java y anular la función onReceive :

     public class NotificationReceiver extends BroadcastReceiver { public void onReceive(final Context context, final Intent intent) { if ("com.google.android.c2dm.intent.REGISTRATION".equals(intent.getAction())) { handleRegistration(context, intent); // you'll have to write this function } else if ("com.google.android.c2dm.intent.RECEIVE".equals(intent.getAction())) { // the handle message function will need to check the user's current location using the location API you choose, and then create the proper Notification if necessary. handleMessage(context, intent); } } 
  • No se encontraron clases de API selectiva de Google Play Services
  • Creación de un objeto de ubicación de Android
  • Android: requestLocationUpdates actualiza la ubicación como máximo cada 45 segundos
  • Cómo comprobar si las coordenadas de una ubicación caen a otra ubicación coordenadas de radio en android
  • Cómo obtener la ubicación del usuario Android
  • Android: ¿Una forma sencilla de hacer una geofence?
  • ¿Cómo encontrar la ubicación del usuario usando la torre celular?
  • ¿Existe una manera de obtener la ubicación de "inicio" y "trabajo" del usuario a través de una API de Google?
  • No se puede encontrar la ubicación actual dentro del fragmento
  • Cómo implementar onConnectionFailed () y onDisconnected () para un servicio de ubicación
  • ¿Es posible saber mi ubicación vino de gps o glonass?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.