How can I design a magical weapon that grants an advantage against fire-base creatures without using water and choking effects?

The party I am DM’ing is going for an adventure to the Elemental Plane of Fire. I want to design a magical weapon that can grant an advantage against fire-based creatures. I see that Fire Elementals have Water Susceptibility (Cold Damage) but I have already house-ruled that elemental planes can not include magical effects of elements from other elemental planes, but just the spells that have elements of the current plane can be cast (as the plane purely consists of element of itself). For example, in the Elemental Plane of Air, not only Earth-based spells but all the spells are impeded, except air-based ones.

After I realized that I can’t use a magical weapon that has cold damage due to my house-rule, I wanted to give the weapon a "heavy smoke" effect to choke the fire, as I thought that fire can not live without oxygen. But this option conflicts with my house-rule, also I saw that the fire-based creatures any other fire source in the Elemental Plane of Fire don’t need air to live.

Now I have no idea how can I design a magical weapon that gives an advantage against fire-based creatures without cold damage and choking the fire via leaving without oxygen is not an option. I can not cancel my house-ruling because of the sake of my setting. I am open to any house ruling ideas beside the official ruling.

TLDR: as in title, how can I design a magical weapon that grants an advantage against fire-base creatures without using water and choking effects?

If the question shows up to be opinion-based, please accept my apologies.

is it possible for a user to get the firebase auth token from a released app?

Under the constraints that the user only has access to a release (signed) build of the android app and doesn’t know the signing key. No rooted phone either. The token isn’t sent through insecure channels (like http). User only uses default https certificates. The token is not exposed in any way through the user interface.

I am almost sure it is impossible (or at least very very hard), but I want to be sure asking you guys

Reuse Firebase Token for other authentication purporses

I’m building an app where the users should have restricted access to certain api-services. I use gRPC as API. Right now I’m asking the user’s mobile number, send him an SMS with a code which he has to verify. If it’s the same, the backend generates an UUID which will be sent to the user and safed in a local database on the mobile phone. The user is then able to authenticate itself on the backend by just sending the UUID.

While I’m in that process I noticed that the Firebase Token also never changes so I have two unique id’s which are saved in the database.

Is it safe to skip the generation of an extra UUID and verify the user by it’s Firebase Token/UID, only? The client could send the verification code with the Firebase Token and if the Firebase Token is correct, the backend will save this token to the database. The client can then authorize itself with that token. Or do I miss a point here?

Freelancer has access to Firebase Database. What should I do?

Back in November, I put up a $ 100 bounty on a freelancer website for anybody who could debug a bug I had found in my app I was developing and couldn’t squash. It turns out the freelancer was in no position to work for me. He had lied about being Danish (he was actually from northeastern China and had such a poor internet connection, he could barely run my app). Furthermore, his English was far worse than any freelancer I had worked with previously, you cannot even hold a conversation with him.

Anyways, I want to redact my $ 100 that I staged up for him, but I’m afraid of him vandalizing my database as an act of retaliation. He has cloned my project from Github, including the GoogleService-Info.plist file that would allow him to make changes to my backend.

My project is still in Beta, but is slated to go public next month. Should I just generate a new GoogleService-Info.plist file and force all current beta users to update their version (the previous version will be unusable) or should I just go with it and hope the freelancer doesn’t destroy everything I have?

PS: Sorry, this may not be the correct StackExchange site for this question. I am a seasoned Stack Overflow user and know it wouldn’t be appropriate there. If somebody points me to a better site, I will gladly move the question.

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.