Hay alguna diferencia entre guardar data en firebase desde un componente hijo y hacerla desde un componente padre?

En mi código puedo caragar datos en firebase desde el componente padre, pero hago el mismo procedimiento desde un componente hijo y no funciona. Debo incluir ‘$ emit’ o algo así? No encuentro documentación al respecto y no encuentro el por qué no funciona.

tengo problema para generar una notificacion de tema con firebase en android studio

tengo problema para generar un mensaje de tema me estoy guiando de el documento den github de google link, ya lo suscribo pero nocuando le doy al boton que genera la notificacion me lanza un mensaje, pero no entiendo que debo hacer, copie y pegue y esta exactamente como esta en el link (las 3 clases exactamente igual), pero no entiendo ese mensaje, creo que debo ingresar la clave del servidor pero no se en donde debo hacerlo, alguna sgerencia para solucionar esto gracias. mensaje de respuesta

y otra duda que tengo es ¿cuales son las variables para cambiar el titulo y el mensaje de la notificacion?

puedo usar una sola realtime database de firebase con varias aplicaciones android?

Voy a empezar un proyecto que consta de 3 apps las mismas están relacionadas entre si , es decir necesitan acceder a los mismos datos, he buscado en la documentación de firebase y no pude encontrar si puedo conectar estas tres app y quiza una pagina web a la misma base de datos en firebase o como hacerlo

¿Como editar dos o más nodos a la vez en Firebase (Android Studio)?

Estoy haciendo un pequeño proyecto, el caso es que creo un nuevo Post, al momento de crear un Post los datos que le envio a la Base de datos se guardan en diferentes nodos utilizando updateChildren(), los datos se envian a “posts” y “user-posts”

introducir la descripción de la imagen aquí

Y en el codigo Java tengo (NewPostActivity)

private void newPost(String userId, String username, String title, String body, String phone, String email, String categoria) {     // Crear nueva publicación en /user-posts/$  userid/$  postid y en     // /posts/$  postid simultaneamente     String key = dtbLocation.child("posts").push().getKey();      Post post = new Post(userId, username, title, body, email, phone, categoria);     Map<String, Object> postValues = post.toMap();      Map<String, Object> childUpdates = new HashMap<>();     childUpdates.put("/posts/" + key + "/" , postValues);     childUpdates.put("/user-posts/" + userId + "/" + key, postValues);      dtbLocation.updateChildren(childUpdates).addOnSuccessListener(new OnSuccessListener<Void>() {         @Override         public void onSuccess(Void aVoid) {             Toast.makeText(EditPostActivity.this, "Los datos se guardaron en la BD", Toast.LENGTH_LONG).show();         }     });  } 

Mi duda es como implemento el updateChildren() para editar los datos en los distintos nodos, tengo conocimiento de como editar (sobrescribir) los datos con el setValue(), pero con respecto a updateChildren() no tengo tanto conocimiento

¿Alguien sabe que signinifica: Deferring to Google Analytics for Firebase for event data collection. https://goo.gl/J1sWQy?

Estoy intentando añadir publicidad en el main activity de a una aplicación que usa autocompletado de google places, no se si sea por eso que cuando quiero visualizar el banner de publicidad no puedo visualizarlos y en la consolo de Run App visualizo esto:

introducir la descripción de la imagen aquí

Este es el contenido del archivo gradle de mi aplicación:

apply plugin: 'com.android.application' apply plugin: 'realm-android' apply plugin: 'com.google.gms.google-services'  android {     compileSdkVersion 28     defaultConfig {         applicationId "com.propiedades.inmo.inmoob"         minSdkVersion 22         targetSdkVersion 28         versionCode 1         versionName "1.0"         multiDexEnabled true         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"     }     buildTypes {         release {             minifyEnabled false             proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'         }     }     flavorDimensions 'default'     productFlavors {         free {             dimension = 'default'             applicationId = 'com.propiedades.inmo.inmoob.free'             buildConfigField "int", "numeroFotos", "3"         }         premiun {             dimension = 'default'             applicationId = 'com.propiedades.inmo.inmoob'             buildConfigField "int", "numeroFotos", "7"         }     } }  dependencies {     implementation fileTree(dir: 'libs', include: ['*.jar'])     //noinspection GradleCompatible     implementation 'androidx.appcompat:appcompat:1.1.0-rc01'     //implementation 'com.android.support:design:28.0.0'     implementation 'com.google.android.material:material:1.1.0-alpha09'     implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta2'     implementation 'androidx.recyclerview:recyclerview:1.1.0-beta03'     implementation 'androidx.cardview:cardview:1.0.0'     implementation 'com.google.android.libraries.places:places:1.0.0'     implementation 'com.karumi:dexter:5.0.0'     implementation 'androidx.legacy:legacy-support-v4:1.0.0'     implementation 'com.jaredrummler:material-spinner:1.3.1'     implementation 'com.google.android.material:material:1.1.0-alpha09'     implementation 'com.android.support:support-v4:28.0.0'     //implementation 'com.google.firebase:firebase-database:19.0.0'     //implementation 'com.google.firebase:firebase-messaging:20.0.0'     testImplementation 'junit:junit:4.13-beta-3'     androidTestImplementation 'androidx.test:runner:1.3.0-alpha02'     androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0-alpha02'     implementation 'com.squareup.picasso:picasso:2.71828'     implementation 'com.github.bumptech.glide:glide:4.9.0'     implementation 'com.droidninja:filepicker:1.0.0'     implementation 'com.github.nguyenhoanglam:ImagePicker:1.3.3'     implementation 'com.ns-developer:tagcloudview:0.1.0'     implementation 'com.google.firebase:firebase-analytics:17.1.0'     implementation 'com.google.android.gms:play-services-ads:17.1.1' } 

Ahi estoy implementando todas las librerias de firebase y de google places, pero no entiendo porque no puedo el adview en este main activity:

public class MainActivity extends AppCompatActivity {     private SectionAdapter mSectionsAdapter;     private ViewPager mViewPager;     TabLayout tabLayout;     private SearchView searchView;      private int[] tabIcons = {R.drawable.list,android.R.drawable.ic_menu_add,R.drawable.ic_menu,R.drawable.ic_house};      @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);          mSectionsAdapter = new SectionAdapter(getSupportFragmentManager());          //CODIGO BANNER         AdView adView = findViewById(R.id.adView);         AdRequest adRequest2 = new AdRequest.Builder()                 .setRequestAgent("android_studio:ad_template").build();         adView.loadAd(adRequest2);         //FIN CODIGO BANNER          if (BuildConfig.FLAVOR.equals("free")){             //getResources().getString(R.string.app_name).equals("Inmoob free");         }else{}          mViewPager = findViewById(R.id.container);         setupViewPager(mViewPager);          tabLayout = findViewById(R.id.tabs);         tabLayout.setupWithViewPager(mViewPager);         setupTabIcons();          searchView = findViewById(R.id.search);         SearchManager searchManager = (SearchManager) getSystemService(SEARCH_SERVICE);         searchView.setSearchableInfo(searchManager.getSearchableInfo(new ComponentName(this, SearchResultActivity.class)));         searchView.setQueryHint(getResources().getString(R.string.title_busqueda));          startService(new Intent(this,Notificacion.class));          Toast.makeText(MainActivity.this, Locale.getDefault().toString(),Toast.LENGTH_SHORT).show();     }      private void setupTabIcons() {         tabLayout.getTabAt(0).setIcon(tabIcons[0]);         tabLayout.getTabAt(1).setIcon(tabIcons[1]);         tabLayout.getTabAt(2).setIcon(tabIcons[2]);         tabLayout.getTabAt(3).setIcon(tabIcons[3]);     }      private void setupViewPager(ViewPager mViewPager) {         SectionAdapter adapter = new SectionAdapter(getSupportFragmentManager());         adapter.addFragment(new ListaInmuebles(),getResources().getString(R.string.title_fragment_lista));         adapter.addFragment(new AgregarInmueble(),getResources().getString(R.string.title_fragment_agregar));         adapter.addFragment(new MenuFragment(),getResources().getString(R.string.title_fragment_menu));         adapter.addFragment(new FragmentRentas (),getResources().getString(R.string.title_fragment_rentas));         mViewPager.setAdapter(adapter);     } } 

Y este es el xml donde estoy colocando el adview:

<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:app="http://schemas.android.com/apk/res-auto"     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"     android:layout_height="match_parent"     tools:context=".MainActivity">       <com.google.android.gms.ads.AdView         android:id="@+id/adView"         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:layout_alignParentBottom="true"         android:layout_centerHorizontal="true"         android:layout_gravity="bottom|center"         app:adSize="BANNER"         app:adUnitId="@string/bannerIdAdmob"         tools:ignore="MissingConstraints"         tools:layout_editor_absoluteX="0dp"         tools:layout_editor_absoluteY="605dp"></com.google.android.gms.ads.AdView>      <Button         android:layout_width="wrap_content"         android:layout_height="wrap_content"         app:layout_constraintBottom_toBottomOf="parent"         app:layout_constraintLeft_toLeftOf="parent"         app:layout_constraintRight_toRightOf="parent"         app:layout_constraintTop_toTopOf="parent"         android:text="ir anuncio"         android:onClick="anuncio"/>  </android.support.constraint.ConstraintLayout> 

Tambien coloque mi id de admob en el manifest:

<application         android:allowBackup="true"         android:appComponentFactory="@string/app_name"         android:icon="@mipmap/ic_launcher"         android:label="@string/app_name"         android:roundIcon="@mipmap/ic_launcher_round"         android:supportsRtl="true"         android:theme="@style/AppTheme"         tools:ignore="ManifestResource"         tools:replace="android:appComponentFactory">         <meta-data             android:name="com.google.android.gms.ads.APPLICATION_ID"             android:value="ca-app-pub-7520855201804586~8380792986"/>         <meta-data android:name="firebase_analytics_collection_deactivated" android:value="true" />          <meta-data android:name="google_analytics_adid_collection_enabled" android:value="false" />          <activity             android:name=".activities.SearchResultActivity"             android:label="@string/app_name"             android:parentActivityName=".MainActivity"             android:theme="@style/Theme.AppCompat.Light.DarkActionBar">             <intent-filter>                 <action android:name="android.intent.action.SEARCH" />             </intent-filter>             <meta-data                 android:name="android.app.searchable"                 android:resource="@xml/searchable" />              <meta-data                 android:name="android.support.PARENT_ACTIVITY"                 android:value=".MainActivity" />         </activity>         <activity             android:name=".activities.DetallesActivity"             android:parentActivityName=".MainActivity"             android:theme="@style/Theme.AppCompat.Light.DarkActionBar">             <meta-data                 android:name="android.support.PARENT_ACTIVITY"                 android:value="com.propiedades.inmo.inmoob.MainActivity" />         </activity>         <activity             android:name=".activities.AddInmuebleActivity"             android:parentActivityName=".MainActivity"             android:theme="@style/Theme.AppCompat.Light.DarkActionBar">             <meta-data                 android:name="android.support.PARENT_ACTIVITY"                 android:value="com.propiedades.inmo.inmoob.MainActivity" />         </activity>         <activity android:name=".MainActivity">             <intent-filter>                 <action android:name="android.intent.action.MAIN" />                  <action android:name="android.intent.action.SEND" />                 <category android:name="android.intent.category.DEFAULT" />                  <category android:name="android.intent.category.LAUNCHER" />             </intent-filter>              <intent-filter>                 <action android:name="android.intent.action.VIEW" />                  <category android:name="android.intent.category.DEFAULT" />                 <category android:name="android.intent.category.BROWSABLE" />                  <data                     android:host="www.recipe-app.com"                     android:pathPattern="/recipe"                     android:scheme="http" />             </intent-filter>             <meta-data                 android:name="android.service.chooser.chooser_target_service"                 android:value=".TargetService" />              <meta-data                 android:name="android.app.default_searchable"                 android:value=".SearchResultActivity" />         </activity>          <meta-data             android:name="com.google.android.geo.API_KEY"             android:value="AIzaSyD4d6qonVoGLbcEAd42xzQF2mfh9nKrw68" />         <service             android:name=".Notificacion"             android:enabled="true"             android:exported="true" />          <service             android:name=".TargetServices"             android:label="Seleccione"             android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE">             <intent-filter>                 <action android:name="android.service.chooser.ChooserTargetService" />             </intent-filter>         </service>     </application> 

Y el id del banner de anuncio lo coloque en el strings.xml:

<string name="bannerIdAdmob" translatable="false">ca-app-pub-7520855201804586/9502302963</string> 

Pero aun asi el banner con el anuncio no aparece en mi aplicación, quiero saber porque, que conflicto tengo o que problema tiene mi codigo.

firebase no responde en VUE-CLI APP

no se que ocurre, pero no puedo interactuar con firebase desde mi app VUE-CLI.

He intentado hacerlo usando cdn de vue, y cdn de firebase en un fichero simple index.html y ahí si me ha funcionado por lo que entiendo que los datos de conexión no son.

Dejo los códigos implicado con la esperanza de que alguien me abra los ojos.

Un saludo.

usuarios.vue

 methods:{      cargarPersonas(){          firebase.database().ref("grupos/usuarios").set({           usuario:"Juna",           contraseña:"aaaabbbb"}); }} 

main.js

// The Vue build version to load with the `import` command // (runtime-only or standalone) has been set in webpack.base.conf with an alias. import Vue from 'vue' import App from './App' import router from './router' import 'bootstrap'; import 'bootstrap/dist/css/bootstrap.min.css'; import axios from 'axios'; import firebase from 'firebase';   const firebaseConfig = {   apiKey: "****",   authDomain: "****",   databaseURL: "****",   projectId: "****",   storageBucket: "****",   messagingSenderId: "****",   appId: "****" }; // Initialize Firebase firebase.initializeApp(firebaseConfig); var db=firebase.database();     Vue.config.productionTip = false  Vue.prototype.$  http = axios;  /* eslint-disable no-new */ new Vue({   el: '#app',   router,   axios,   components: { App },   template: '<App/>' }) 

Cómo subir una imagen a Firebase Storae con Android Storage?


Esto lo hice con un tutorial del 2016

tal vez haya cambiado la configuración de Android Studio, sin embargo no encuentro nuevos videos sobre esto, si conoces de un canal con tutoriales actualizados te agradecería que me lo dejes en la descripción

private Button mButton; private FirebaseAuth mAuth; private TextView nombre; private DatabaseReference mDatabase; private ImageView jeje; private StorageReference mstorage; private FloatingActionButton uplstorage; private static final int Gallery_Intent = 2;   @Override protected void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.activity_pantallaprincipal);      mAuth = FirebaseAuth.getInstance();     mDatabase = FirebaseDatabase.getInstance().getReference();     mstorage = FirebaseStorage.getInstance().getReference().child("bucket");      uplstorage = (FloatingActionButton) findViewById(R.id.efe);     mButton = (Button) findViewById(R.id.Cerrarsei);     nombre = (TextView) findViewById(R.id.Name);     jeje = (ImageView) findViewById(R.id.mtb); 

//Esta parte solo era para poner la imagen con borde circular

    Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.usuario);     RoundedBitmapDrawable roundedBitmapDrawable = RoundedBitmapDrawableFactory.create(getResources(), bitmap);     roundedBitmapDrawable.setCircular(true);     jeje.setImageDrawable(roundedBitmapDrawable); 

//esta parte es para seleccionar la foto en la galeria

    uplstorage.setOnClickListener(new View.OnClickListener() {         @Override         public void onClick(View view) {             Intent intent = new Intent(Intent.ACTION_PICK);             intent.setType("image/*");             startActivityForResult(intent,Gallery_Intent);         }     }); 

//Esta es para cerrar sesión

    mButton.setOnClickListener(new View.OnClickListener() {         @Override         public void onClick(View view) {             mAuth.signOut();             startActivity(new Intent(Pantallaprincipal.this, Inicio.class));             finish();         }     });      getUserInfo(); } 

//Aquí supuestamente se podía subir la foto al Storage

@Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {     super.onActivityResult(requestCode, resultCode, data);      if(requestCode == Gallery_Intent && resultCode == RESULT_OK){         Uri uri = data.getData();         StorageReference filePath = mstorage.child("bucket").child(uri.getLastPathSegment());         filePath.putFile(uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {             @Override             public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {                 Toast.makeText(Pantallaprincipal.this, "Cargado exitosamente",Toast.LENGTH_SHORT).show();             }         });      } } 

//Esta parte es solo para identificar el nombre del usuario con la Database

private void getUserInfo() {      String id = mAuth.getCurrentUser().getUid();     mDatabase.child("User").child(id).addValueEventListener(new ValueEventListener() {         @Override         public void onDataChange(@NonNull DataSnapshot dataSnapshot) {             if (dataSnapshot.exists()) {                 String name = dataSnapshot.child("nombre").getValue().toString();                  nombre.setText(name);             }          }          @Override         public void onCancelled(@NonNull DatabaseError databaseError) {          }     }); } 

}

No sé qué estaré haciendo mal, pueden corregir mi codigo?

Enviar notificación push firebase cloud messaging

quiero enviar una notificación cuando se haga un cambio en la base datos. La quiero mandar a todos los dispositivos. Ya vi algunos ejemplos pero no entendi bien como hacerlo, logré poder leer la base de datos. Paso qué es lo que tengo.

const functions = require('firebase-functions'); const admin = require('firebase-admin'); admin.initializeApp();  // // Create and Deploy Your First Cloud Functions // // https://firebase.google.com/docs/functions/write-firebase-functions // // exports.helloWorld = functions.https.onRequest((request, response) => { //  response.send("Hello from Firebase!"); // }); exports.newMessage = functions.firestore.document('/Usuarios/{user}/Parejas/{match}/Chat/Mensajes').onWrite((change,context)=>{     //Aca quiero enviar la notificación });