Si vous définissez Firebase Analytics simplement en fonction de la référence, ce sera comme suit. quickstart-android
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
//① Définissez une instance Firebase Analytics dans un champ afin qu'elle puisse être utilisée dans toute la classe
private FirebaseAnalytics mFirebaseAnalytics;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//② Définissez l'instance Firebase Analytics au moment de onCreate
mFirebaseAnalytics = FirebaseAnalytics.getInstance(this);
TextView helloWorld = (TextView) findViewById(R.id.hello_world);
helloWorld.setOnClickListener(this);
}
@Override
public void onClick(View view) {
if (view.getId() == R.id.hello_world) {
// ③ 「Hello World!Déclenche le journal des événements lorsque l'utilisateur clique sur le texte
Bundle params = new Bundle();
params.putString("param1", "test");
params.putInt("param2", 100);
params.putDouble("param3", 3.14);
mFirebaseAnalytics.logEvent("event1", params);
}
}
}
Si vous écrivez le code conformément à la référence, comme mentionné ci-dessus, ** l'emplacement de la définition de l'instance Firebase Analytics **, ** l'emplacement du paramètre d'instance **, ** l'emplacement de déclenchement du journal des événements à l'aide de cette instance ** sont différents. .. Cela rend difficile la gestion des instances de Firebase Analytics au sein de chaque classe, et il est difficile d'utiliser Firebase Analytics.
En plus de ce qui précède, la partie de paramétrage à ajouter au journal des événements devient également redondante à mesure que le nombre de paramètres augmente, de sorte que cette partie peut également être définie plus simplement (par exemple, en utilisant une méthode en chaîne). Vouloir.
À l'aide du modèle Singleton, implémentez la classe FirebaseAnalyticsHelper comme suit. Pour le modèle Singleton, voir [Publié sur Wikipedia](https://ja.wikipedia.org/wiki/Singleton_%E3%83%91%E3%82%BF%E3%83%BC%E3%83] J'ai fait référence à% B3).
public class FirebaseAnalyticsHelper {
//① Définissez une instance Firebase Analytics sur le terrain
private FirebaseAnalytics mFirebaseAnalytics;
//② Configurer une instance Firebase Analytics avec "Singleton pattern"
private static FirebaseAnalyticsHelper sInstance;
private FirebaseAnalyticsHelper(Context context){
mFirebaseAnalytics = FirebaseAnalytics.getInstance(context.getApplicationContext());
}
public static synchronized FirebaseAnalyticsHelper getInstance(Context context){
if(sInstance == null){
sInstance = new FirebaseAnalyticsHelper(context);
}
return sInstance;
}
//③ Créez une méthode pour déclencher le journal des événements
public void logEvent(@NonNull final String name, Bundle params) {
mFirebaseAnalytics.logEvent(name, params);
}
public void logEvent(@NonNull final String name) {
mFirebaseAnalytics.logEvent(name, null);
}
}
Si vous appliquez cette classe FirebaseAnalyticsHelper au MainActivity mentionné ci-dessus, il vous suffit d'écrire le code lié à ** FirebaseAnalytics comme indiqué ci-dessous uniquement dans la partie qui déclenche le journal des événements. ** **
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView helloWorld = (TextView) findViewById(R.id.hello_world);
helloWorld.setOnClickListener(this);
}
@Override
public void onClick(View view) {
if (view.getId() == R.id.hello_world) {
//「Hello World!Déclenche le journal des événements lorsque l'utilisateur clique sur le texte
Bundle params = new Bundle();
params.putString("param1", "test");
params.putInt("param2", 100);
params.putDouble("param3", 3.14);
FirebaseAnalyticsHelper.getInstance(this).logEvent("event1", params);
}
}
}
Voici l'exemple de code. hinom77/SimpleFirebaseAnalytics ~ Branch: feature_singleton
Implémentez la classe FirebaseAnalyticsParams à l'aide du modèle Builder comme suit. Concernant le modèle Builder, il existe différents modèles comme dans l'article Modèle de modèle Builder écrit en Java, mais ici ** Effective Java Builder ** est utilisé.
public class FirebaseAnalyticsParams {
//(1) Définir les réglages des paramètres dans "Modèle de générateur"
private Bundle mParams;
private FirebaseAnalyticsParams(Builder builder) {
mParams = builder.params;
}
public static class Builder {
private Bundle params = new Bundle();
public Builder param1(String param1) {
params.putString("param1", param1);
return this;
}
public Builder param2(Integer param2) {
params.putInt("param2", param2);
return this;
}
public Builder param3(Double param3) {
params.putDouble("param3", param3);
return this;
}
public FirebaseAnalyticsParams build() {
return new FirebaseAnalyticsParams(this);
}
}
//(2) Renvoyer la valeur Params sous forme de type Bundle
public Bundle getBundleParams() {
return mParams;
}
}
Lorsqu'il est appliqué au MainActivity mentionné ci-dessus à l'aide de cette classe FirebaseAnalyticsParams, le code de la partie de paramétrage peut être aussi simple qu'une ligne, quel que soit le nombre de variables.
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView helloWorld = (TextView) findViewById(R.id.hello_world);
helloWorld.setOnClickListener(this);
}
@Override
public void onClick(View view) {
if (view.getId() == R.id.hello_world) {
//「Hello World!Déclenche le journal des événements lorsque l'utilisateur clique sur le texte
FirebaseAnalyticsParams params = new FirebaseAnalyticsParams
.Builder().param1("test").param2(100).param3(3.14).build();
FirebaseAnalyticsHelper.getInstance(this).logEvent("event1", params);
}
}
}
Notez que la classe FirebaseAnalyticsHelper doit également être partiellement réécrite en réponse à ce qui précède.
Voici l'exemple de code. hinom77/SimpleFirebaseAnalytics ~ Branch: feature_builder
Recommended Posts