Spanish FIREBASE Integrando a tu APP

Juan Antonio Palacios

Member
Licensed User
Disculpar las molestias pero estoy perdido, utilizando el ejemplo XerpChat al compilar me dice lo siguiente
Error parsing google-services.json:
Error parsing json file. Make sure that the package name is correct.
El nombre en firebase es XerpChat.apk y en el Google-service.json esta asi puesto.
Me podeis ayudar y decirme donde me he colado.

Muchas gracias un novato
 

dar2o3

Active Member
Licensed User
Tienes que poner el mismo nombre que pones en applicationlabel (no recuerdo exactamente, no estoy en el ordenador) que tienes en el main.
 

Juan Antonio Palacios

Member
Licensed User
Tienes que poner el mismo nombre que pones en applicationlabel (no recuerdo exactamente, no estoy en el ordenador) que tienes en el main.
Tiene el mismo nombre lo unico que no tiene es el .apk
Muchas gracias. en json le he quitado el .apk y sigue igual. En el B4a le he puesto el .apk y tampoco. estoy en bucle.
Si se te ocurre algo te lo agradeceria
 

dar2o3

Active Member
Licensed User
Creo que tendrás que volver a crear el proyecto de nuevo con el nombre correcto, elimina en anterior, crea uno nuevo con el nombre correcto y descárgate de nuevo el .json.
 

desof

Well-Known Member
Licensed User
El mensaje que estas obteniendo es que tenes el archivo json correspondiente a otro proyecto. Mira la imagen que te adjunto como tiene que estar configurado.
Estando en B4A con tu proyecto abierto presiona las teclas Ctrl+B y en el dialogo copia el nombre de Pakage que tiene que ser el mismo que coloques en Firebase, una vez hecho esto guardas y descargas el Json en tu proyecto y deberías solucionar eso.

 

dar2o3

Active Member
Licensed User
Hazle caso a Desof, yo estaba diciendo lo contrario, hace tiempo que no toco lo de FireBase y puede que esté confundido con lo del nombre del package.
 

softmicro

Member
Licensed User
Hola a todos. Hoy me inicié en firebase para poder enviarle un mensaje desde un teléfono a otro teléfono u otros ( según una base de datos que tengo y de acuerdo a necesidades específicas). Hasta ahora lo hacia con SMS. Seguí este foro y el de Erel para encontrar un ejemplo práctico y empezar a conocer la forma de realizar estas pruebas. Y cuando llegó el momento de transferir el apk resultante tanto en modo Debug o Release, me da el error:

se ha producido un error al analizar el paquete .

Lo he probado en distintos teléfonos con distintos android (5.1 , 6 y 7) y el problema es común.

En algún momento logré que se instalara en uno de los teléfonos que tengo pero me dio otro error y al buscar en un foro decía que había que habia que sacarle del manifiesto todo lo que está en este foro para agregarle (ya que tengo la version de B4A 8.0) y poner lo que sugiere Erel para esta version que son líneas
CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)
CreateResourceFromFile(Macro, FirebaseAnalytics.Firebase)
CreateResourceFromFile(Macro, FirebaseNotifications.FirebaseNotifications)
CreateResourceFromFile(Macro, FirebaseAnalytics.FirebaseAnalytics)
Lo hice pero al volver a compilar y enviar el APK volvió otras vez el mensaje de error en el paquete.
A alguien que ha probado este ejemplo le ha pasado esto?
Vi el tutorial en video de Erel y el demuestra que puede transferir y generar notificaciones desde una aplicación B4J , cambiando los textos y "llegando" al telefono tal cual.
Necesitan que copie el programa que tengo actualmente en el foro para controlar si tengo algun error de ingreso?
Agradezco si alguien me da una mano para arrancar en el tema.
 

desof

Well-Known Member
Licensed User
Has cambiado el nombre del Paquete o dejaste el que estaba por defecto (b4a.example) ?
 

softmicro

Member
Licensed User
Mantengo el nombre del paquete porque tiene que coincidir con el que declaré cuando solicite las claves en Firebase. Lo extraño fue que un ve logro instalar pero no logré volver a "conectarme" después de modificar el manifiesto.
 

desof

Well-Known Member
Licensed User
La verdad es que estoy un poco olvidado de B$A por que hace muchisimo que no le meto manos.
Intenta traducir tu prgunta al ingles y ponla ahi es mas provable que te ayuden rapidamente.
 

softmicro

Member
Licensed User
Este es todo el programa...
#Region Project Attributes
#ApplicationLabel: Example push
#VersionCode: 1
#VersionName:
'SupportedOrientations possible values: unspecified, landscape or portrait.
#SupportedOrientations: unspecified
#CanInstallToExternalStorage: False
#End Region

#Region Activity Attributes
#FullScreen: False
#IncludeTitle: True
#End Region

#BridgeLogger:True

Sub Process_Globals
#BridgeLogger:True
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.
End Sub

Sub Globals
'These global variables will be redeclared each time the activity is created.
'These variables can only be accessed from this module.
End Sub

Sub Activity_Create(FirstTime As Boolean)
End Sub

Sub Activity_Resume
End Sub

Sub Activity_Pause (UserClosed As Boolean)
End Sub

Private Sub SendMessage(Topic As String, Title As String, Body As String)
Dim Job As HttpJob
Job.Initialize("fcm", Me)
Dim m As Map = CreateMap("to": $"/topics/${Topic}"$)
Dim data As Map = CreateMap("title": Title, "body": Body)
m.Put("data", data)
Dim jg As JSONGenerator
jg.Initialize(m)
Job.PostString("https://fcm.googleapis.com/fcm/send", jg.ToString)
Job.GetRequest.SetContentType("application/json;charset=UTF-8")
Job.GetRequest.SetHeader("Authorization", "key=" & "xxxxxxBcFJ6pqTjXF8mUyj3PNZy4eKqsPBjRslQ")
End Sub

Sub JobDone(job As HttpJob)
Log(job)
If job.Success Then
Log(job.GetString)
End If
job.Release
End Sub

______________________________________________
STARTER
#Region Service Attributes
#StartAtBoot: False
#ExcludeFromLibrary: True
#End Region


Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.

End Sub

Sub Service_Create
'This is the program entry point.
'This is a good place to load resources that are not specific to a single activity.
CallSubDelayed(Firebasemessaging, "SubscribeToTopics")
End Sub

Sub Service_Start (StartingIntent As Intent)
End Sub

Sub Service_TaskRemoved
'This event will be raised when the user removes the app from the recent apps list.
End Sub

'Return true to allow the OS default exceptions handler to handle the uncaught exception.
Sub Application_Error (Error As Exception, StackTrace As String) As Boolean
Return True
End Sub

Sub Service_Destroy
End Sub
______________________________


servicio Firebasemessaging

#Region Service Attributes
#StartAtBoot: False
#End Region

Sub Process_Globals
Private fm As FirebaseMessaging
End Sub

Sub Service_Create
Try
fm.Initialize("fm")
Catch
Log(LastException) 'puse esto porque me daba error de inicialización de fm (hasta que saqué lo del manifiesto para versiones previas al B4A 8.0
End Try

End Sub

Public Sub SubscribeToTopics
fm.SubscribeToTopic("general") 'you can subscribe to more topics
End Sub

Sub Service_Start (StartingIntent As Intent)
If StartingIntent.IsInitialized Then fm.HandleIntent(StartingIntent)
Sleep(0)
Service.StopAutomaticForeground 'remove if not using B4A v8+.
End Sub

Sub fm_MessageArrived (Message As RemoteMessage)
Log("Message arrived")
Log($"Message data: ${Message.GetData}"$)
Dim n As Notification
n.Initialize
n.Icon = "icon"
n.SetInfo(Message.GetData.Get("title"), Message.GetData.Get("body"), Main)
n.Notify(1)
End Sub

Sub Service_Destroy
End Sub


__________________________________
manifiest
AddManifestText(
<uses-sdk android:minSdkVersion="5" android:targetSdkVersion="28"/>
<supports-screens android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:anyDensity="true"/>)
SetApplicationAttribute(android:icon, "@drawable/icon")
SetApplicationAttribute(android:label, "$LABEL$")
CreateResourceFromFile(Macro, Themes.DarkTheme)
'End of default text.

'#### NEW MANIFEST FIREBASE FOR B4A V8
CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)
CreateResourceFromFile(Macro, FirebaseAnalytics.Firebase)
CreateResourceFromFile(Macro, FirebaseNotifications.FirebaseNotifications)
CreateResourceFromFile(Macro, FirebaseAnalytics.FirebaseAnalytics)
'''''CreateResourceFromFile(Macro, FirebaseAuth.FirebaseAuth)
CreateResourceFromFile("google-services", "google-services.json")
______________

Lo que no veo es donde poner el valor del KEY de esta aplicación que solo aparece en la función SendMessage(Topic As String, Title As String, Body As String)
que no uso en ningún momento ya que solo espero recibir una notificación que me envía el servidor (B4J)
 
Top