Spanish FIREBASE Integrando a tu APP

vbmundo

Well-Known Member
Licensed User
Esta será una traducción del POST original de EREL
https://www.b4x.com/android/forum/threads/integrating-firebase-services.67692/#content

E intentaré adicionar mas info que pueda hacer falta, de la cual espero que entre todos podamos aportar info y experiencias.

Primero

QUE ES FIREBASE ?

FireBase es un servicio pensado 100 % para Aplicaciones Móviles, fue adquirida recientemente por GOOGLE y nos brinda herramientas gratuitas (y otras que no) para un manejo superior de nuestras Apps en cuanto a Analytics - Análisis de Descargas y Compras (similar a Google Analytics), servicios de Base de Datos (para alojar datos de nuestras APPs) el cual es gratuito con limitaciones, Storage y mucho más (ver imágenes siguientes)

Fire1.jpg

Fire2.jpg

Fire3.jpg


QUE VERSION DE B4A NECESITO PARA INTEGRAR FIREBASE ?

Solo es posible utilizar FIREBASE en B4A versión 6.0 o superior

COMO INTEGRAR FIREBASE ?

1. Abrir el ANDROID SDK MANAGER y actualizar a las últimas versiones de :
  • Android Support Repository
  • Google Repository
SS-2016-06-12_18.21.19.png


2. Regístrese en Firebase y cree un nuevo proyecto
ver https://firebase.google.com/docs/
(procure que el nombre de su proyecto coincida con el nombre de su APP)

3. Descargue el archivo google-services.json y colocarlo en la carpeta de su Aplicación (donde usted tiene el archivo fuente .b4a)

4. Pegue los fragmentos de código (que se incluyen a continuación) en su Manifiest Editor , dependiendo de los servicios que usted quiera activar.

5. Siga las instrucciones específicas de cada librería

Una versión reciente de Google Play Service debería ser instalada en el dispositivo movil.
La versión mínima que requieren la mayoría de las funciones es 2.3 (API 9)
Usted puede testear si Google Play Services está disponible con FirebaseAnalytics.IsGooglePlayServicesAvailable

FRAGMENTOS DE CODIGO PARA EL MANIFIEST EDITOR ?

Procure copiar los códigos con los comentarios y sin modificar nada.

Siempre requerido para usar Google Play Services o Firebase:

B4X:
'************ Google Play Services Base ************
AddApplicationText(
   <activity android:name="com.google.android.gms.common.api.GoogleApiActivity"
  android:theme="@android:style/Theme.Translucent.NoTitleBar"
  android:exported="false"/>
    <meta-data
  android:name="com.google.android.gms.version"
  android:value="@integer/google_play_services_version" />
)
'************ Google Play Services Base (end) ************

Siempre requerido para usar Firebase:

B4X:
'************ Firebase Base ************
CreateResourceFromFile("google-services", "google-services.json")
AddPermission(android.permission.ACCESS_NETWORK_STATE)
AddPermission(android.permission.INTERNET)
AddPermission(android.permission.WAKE_LOCK)
AddPermission(com.google.android.c2dm.permission.RECEIVE)
AddPermission(${applicationId}.permission.C2D_MESSAGE)
AddManifestText( <permission android:name="${applicationId}.permission.C2D_MESSAGE"
  android:protectionLevel="signature" />)
AddApplicationText(
<receiver
  android:name="com.google.android.gms.measurement.AppMeasurementReceiver"
  android:enabled="true">
  <intent-filter>
  <action android:name="com.google.android.gms.measurement.UPLOAD"/>
  </intent-filter>
  </receiver>

  <service
  android:name="com.google.android.gms.measurement.AppMeasurementService"
  android:enabled="true"
  android:exported="false"/>
   <provider
  android:authorities="${applicationId}.firebaseinitprovider"
  android:name="com.google.firebase.provider.FirebaseInitProvider"
  android:exported="false"
  android:initOrder="100" />
    <receiver
  android:name="com.google.android.gms.measurement.AppMeasurementReceiver"
  android:enabled="true">
  <intent-filter>
  <action android:name="com.google.android.gms.measurement.UPLOAD"/>
  </intent-filter>
  </receiver>

  <service
  android:name="com.google.android.gms.measurement.AppMeasurementService"
  android:enabled="true"
  android:exported="false"/>
   <receiver
  android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver"
  android:exported="true"
  android:permission="com.google.android.c2dm.permission.SEND" >
  <intent-filter>
  <action android:name="com.google.android.c2dm.intent.RECEIVE" />
  <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
  <category android:name="${applicationId}" />
  </intent-filter>
  </receiver>
    <receiver
  android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver"
  android:exported="false" />


  <service
  android:name="com.google.firebase.iid.FirebaseInstanceIdService"
  android:exported="true">
  <intent-filter android:priority="-500">
  <action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
  </intent-filter>
  </service>
)
'************ Firebase Base (end) ************

Notificationes / FCM (Firebase Cloud Messaging) / push messages

B4X:
'************ Firebase Notifications ************
AddApplicationText(
    <service
  android:name="com.google.firebase.messaging.FirebaseMessagingService"
  android:exported="true">
  <intent-filter android:priority="-500">
  <action android:name="com.google.firebase.MESSAGING_EVENT" />
  </intent-filter>
  </service>
   <service android:name="anywheresoftware.b4a.objects.FirebaseNotificationsService">
     <intent-filter>
  <action android:name="com.google.firebase.MESSAGING_EVENT"/>
     </intent-filter>
   </service>
)
'************ Firebase Notifications (end)************

Analytics y crash reports:

B4X:
'************ Firebase Analytics ************
AddApplicationText(
  <receiver
  android:name="com.google.android.gms.measurement.AppMeasurementReceiver"
  android:enabled="true">
  <intent-filter>
  <action android:name="com.google.android.gms.measurement.UPLOAD"/>
  </intent-filter>
  </receiver>

  <service
  android:name="com.google.android.gms.measurement.AppMeasurementService"
  android:enabled="true"
  android:exported="false"/>

  <service android:name="com.google.firebase.crash.internal.service.FirebaseCrashReceiverService"
  android:process=":background_crash"/>

  <service android:name="com.google.firebase.crash.internal.service.FirebaseCrashSenderService"
  android:process=":background_crash"/>
)
'************ Firebase Analytics (end) ************

Ads (AdMob)

B4X:
'************ Firebase Ads ************
AddApplicationText(<activity android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
android:theme="@android:style/Theme.Translucent" />
<activity android:name="com.google.android.gms.ads.purchase.InAppPurchaseActivity"
android:theme="@style/Theme.IAPTheme"/>
)'************ Firebase Ads (end) ************

Auth

B4X:
'************ Firebase Auth ************
AddApplicationText(
<activity android:name="com.google.android.gms.auth.api.signin.internal.SignInHubActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:excludeFromRecents="true"
android:exported="false" />

<service
android:name="com.google.android.gms.auth.api.signin.RevocationBoundService"
android:exported="true"
android:permission="com.google.android.gms.auth.api.signin.permission.REVOCATION_NOTIFICATION" />
)'************ Firebase Auth (end) ************

Foro de Soporte en Ingles
https://www.b4x.com/android/forum/forums/android-questions.26/





 
Last edited:

bgsoft

Well-Known Member
Licensed User
Longtime User
Buen trabajo Pablo

Saludos
 

Descartex

Well-Known Member
Licensed User
Longtime User
Magnifico trabajo, enhorabuena!!
 

Descartex

Well-Known Member
Licensed User
Longtime User
Creo q no hay moderador designado,
Escríbele un PM a @Erel.
Un saludo.
 

JordiCP

Expert
Licensed User
Longtime User
Muchas gracias por el aporte! Hace tiempo que tengo pendiente mirarme el tema

En cuanto a chinchetas, creo que tiene la suficiente importancia para estar visible. Aunque estaría bien racionalizar el uso de las mismas para evitar tener toda la primera página del foro español "achinchetada";) (o tener un subforo de tutoriales y temas achinchetables, eso estaría bien)
 

dar2o3

Active Member
Licensed User
Longtime User
Como va a nombrar @Erel a un moderador, la persona en cuestión debería estar de acuerdo, además todos conocemos las "normas de buenas maneras" que deberíamos seguir (hay un hilo para eso y las normas las hemos puesto entre todos.)
Ahora, si queremos un moderador responsable, yo tengo claro a quien propondría. (aunque no sé, si a esa persona le interesaría "el cargo".)
 

Descartex

Well-Known Member
Licensed User
Longtime User
No hay ningún moderador designado en ninguno de los foros, con lo cual, creo q está jodida la cosa para que lo designe en el nuestro.
De todas formas, podemos sugerirle mejoras y divisiones, si las ve coherentes, las hará como en el resto de foros.
Ciertamente, yo he sido moderador en un par de foros y es un "marronazo" cojonudo.
Un saludo.
 

dar2o3

Active Member
Licensed User
Longtime User
Guauuu!!! Hacía tiempo que no veía personas tan activas por el "bien común" de aquí creo que pueden salir grandes cosas!!
 

vbmundo

Well-Known Member
Licensed User
Seguramente ya lo conocen,

Pero quiero recomendarles un servicio complementario a FireBase que nos da unas Stats increibles..

Me refiero a AppAnnie

https://www.appannie.com/dashboard/home/

Donde entre las cosas que me fascinan (y no encuentro en otros servicios) están

  • Poder ver como estamos posicionados en Play Store para los paises que deseemos..algo que actualmente no podemos saber porque nuestro Play Store está solo orientado a nuestro pais de origen.
  • Poder saber cuantas visitas tiene nuestra página de Play Store de la APP... (actualmente con Firebase solo podemos saber cuantas descargas o instalaciones hubo, pero no sabemos cuantas vistas tuvo nuestra APP.. con AppAnnie lo pueden saber, país por país y con un % entre las visitas y las descargas, para medir la efectividad e interés de nuestra APP... (no es lo mismo que solo el 1 % de los que ven nuestra página la instalen, a que el 40 % lo haga)
Y muchísimas cosas más... obviamente mas limitada en su versión GRATUITA (la que yo actualmente tengo) que en su versiones PRO, ofrece una bateria de herramientas invaluables.

Saludos

PD: Borremos todos los POSTs que no tengan que ver con el tema... yo ya iré borrando los mios.. gracias
 

cas6678

Active Member
Licensed User
Longtime User
Hola,

Estoy intentando seguir esta guia, y tanto aqui como en la Erel en ingles veo...

Descargue el archivo google-services.json

...y ahi estoy parado porque no se a que se refiere. De las guias de Firebase entiendo que es un archivo que se genera cuando hacemos un proyecto en Android Studio, pero...no lo queremos hacer en B4A??? Me perdi, alguien me dice por donde seguir? Gracias.
 

vbmundo

Well-Known Member
Licensed User
Hola,

Estoy intentando seguir esta guia, y tanto aqui como en la Erel en ingles veo...

Descargue el archivo google-services.json

...y ahi estoy parado porque no se a que se refiere. De las guias de Firebase entiendo que es un archivo que se genera cuando hacemos un proyecto en Android Studio, pero...no lo queremos hacer en B4A??? Me perdi, alguien me dice por donde seguir? Gracias.

Cuando creas tu perfil en FIREBASE y añades tu APP, ahí mismo verás que te da la oportunidad de descargar el archivo google-services.json específico para tu APP.

No es un archivo genérico... se crea uno por cada APP y dentro tiene info de esa APP.

Lo que no he encontrado, es la forma de hacerlo antes de subir tu APP a Play Store.. aparentemente primero debes publicar tu APP para que desde tu panel de FireBase puedas detectarla.

Saludos
 

cas6678

Active Member
Licensed User
Longtime User
Ok, seguire investigando entonces. Con lo que me has explicacado ya me he quitado alguna duda. Muchas gracias.
 

rscheel

Well-Known Member
Licensed User
Longtime User
Hola,

Estoy intentando seguir esta guia, y tanto aqui como en la Erel en ingles veo...

Descargue el archivo google-services.json

...y ahi estoy parado porque no se a que se refiere. De las guias de Firebase entiendo que es un archivo que se genera cuando hacemos un proyecto en Android Studio, pero...no lo queremos hacer en B4A??? Me perdi, alguien me dice por donde seguir? Gracias.

Para hacer uso de el archivo google-services.json, con colocar este archivo en la carpeta de tu aplicación y agregar el código correspondiente a manifest editor con eso debería bastar para que realices tu aplicación con conexión a firebase y utilizando la librería que desees usar para tu proyecto..

El archivo google-services.json contiene la configuración necesaria para que tu app pueda conectarse con firebase.

Y esto se realiza al momento de estar desarrollando la aplicación, no después de subirla a play store, sea en b4a o en Android Estudio.
 
Last edited:

vbmundo

Well-Known Member
Licensed User
Ok, seguire investigando entonces. Con lo que me has explicacado ya me he quitado alguna duda. Muchas gracias.

Ten encuenta que cuando yo digo "Subir la APP Primero a Play Store" es a efectos de que Firebase la detecte.. una vez que eso ocurre, descargas el archivo google-service.json que Firebase te genera, y colocar dicho archivo en la carpeta donde se encuentra el archivo fuente (.b4a) de tu aplicación.

Una vez hecho esto y adaptado todo tu código con lo necesario, debes recompilar todo nuevamente (ya con el archivo .JSON incluido) y el nuevo APK lo subes a PlayStore como nueva versión.

Lo que no he encontrado, (vuelvo a decirlo) es la forma de que en tu primera versión (cuando aun no has subido nada a Play Store) puedas integrar y tener el archivo google-services.json correspondiente.

Saludos
 

cas6678

Active Member
Licensed User
Longtime User
Bueno, el tema del google-service.json creo que ya esta. Al operar en la consola firebase y abrir un proyecto me lo genero.

Ahora sigo con el tutorial y veo lo del manifest, hecho.

Y ahora para seguir: Donde puedo encontrar ejemplos de codigo usando firebase?

Gracias.
 

vbmundo

Well-Known Member
Licensed User
Hay un código de ejemplo para B4A y un Cliente de B4J para enviar notificaciones a un topic en : https://www.b4x.com/android/forum/t...s-firebase-cloud-messaging-fcm.67716/#content
Me ha parecido bastante sencillo; he modificado el clients B4J para que sea una apliucacion tipo UI con un layout simple; La subiré más tarde (habrás de cambiar la API KEY por la tuya)

Con respecto al Firebase Cloud Messaging déjenme decirles que no es perfecto.. si tienen idea de que por cada mensaje que envíen, el mismo será visto por el 100 % de los usuarios, no es así... la APP tiene que estar abierta o en segundo plano y aun así (porque lo he testeado con mi movil) a veces no te llega el mensaje.

Cada vez que yo envío un mensaje, solo le llega a aproximadamente el 20 % de los usuarios activos. ( o menos ).

Saludos
 

rscheel

Well-Known Member
Licensed User
Longtime User
Ten encuenta que cuando yo digo "Subir la APP Primero a Play Store" es a efectos de que Firebase la detecte.. una vez que eso ocurre, descargas el archivo google-service.json que Firebase te genera, y colocar dicho archivo en la carpeta donde se encuentra el archivo fuente (.b4a) de tu aplicación.

Una vez hecho esto y adaptado todo tu código con lo necesario, debes recompilar todo nuevamente (ya con el archivo .JSON incluido) y el nuevo APK lo subes a PlayStore como nueva versión.

Lo que no he encontrado, (vuelvo a decirlo) es la forma de que en tu primera versión (cuando aun no has subido nada a Play Store) puedas integrar y tener el archivo google-services.json correspondiente.

Saludos

Estimado esta totalmente equivocado, no necesita subir la aplicación a google play para que sea detectada por firebase, solo necesita colocar el nombre del Package en firebase de esa manera ya firebase estará apuntado a su aplicación o también puede colocar el Certificado de firma de depuración SHA-1.
 

vbmundo

Well-Known Member
Licensed User
Estimado esta totalmente equivocado, no necesita subir la aplicación a google play para que sea detectada por firebase, solo necesita colocar el nombre del Package en firebase de esa manera ya firebase estará apuntado a su aplicación o también puede colocar el Certificado de firma de depuración SHA-1.

Perfecto !

Por eso he dicho "Lo que no he encontrado, es la forma de hacerlo antes de subir tu APP a Play Store.." y no fui categórico.

Gracias
 
Top