Flurry上没有跟踪Android setGender参数

时间:2018-02-08 18:48:12

标签: android flurry

  1. 问题:
  2. 方法setAge和setUserId工作在会话信息中的Flurry Event Logs部分正确记录但不记录setGender方法

    1. 配置
    2. Gradle - 项目:

      // Top-level build file where you can add configuration options common to all sub-projects/modules.
      
                  buildscript {
                      repositories {
                          jcenter()
                      }
                      dependencies {
                          classpath 'com.android.tools.build:gradle:3.0.1'
                          classpath 'com.google.gms:google-services:3.1.0'
                          classpath 'com.android.tools.build:gradle:3.0.1'
      
      
                          // NOTE: Do not place your application dependencies here; they belong
                          // in the individual module build.gradle files
                      }
                  }
      
                  allprojects {
                      repositories {
                          jcenter()
      
                          maven {
                              url "https://maven.google.com"
                          }
                          google()
                      }
                  }
      
                  task clean(type: Delete) {
                      delete rootProject.buildDir
                  }
      

      Gradle - 模块应用

      apply plugin: 'com.android.application'
      
                  android {
                      compileSdkVersion 25
      
                      defaultConfig {
                          applicationId "com.xunxujianjin.flashchatnewfirebase"
                          minSdkVersion 16
                          targetSdkVersion 25
                          versionCode 1
                          versionName "1.0"
                      }
                      buildTypes {
                          release {
                              minifyEnabled false
                              proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
                          }
                      }
                  }
      
                  dependencies {
                      compile fileTree(dir: 'libs', include: ['*.jar'])
                      testCompile 'junit:junit:4.12'
                      compile 'com.android.support:appcompat-v7:25.4.0'
                      compile 'com.android.support:design:25.4.0'
                      compile 'com.google.firebase:firebase-database:11.8.0'
                      compile 'com.google.firebase:firebase-auth:11.8.0'
                      compile 'com.flurry.android:ads:8.2.0'
                      compile 'com.flurry.android:analytics:8.2.0'
                  }
      
                  apply plugin: 'com.google.gms.google-services'
      
      1. LoginActivity(登陆活动):

        package com.xunxujianjin.flashchatnewfirebase;

                import android.content.Intent;
                import android.content.SharedPreferences;
                import android.os.Bundle;
                import android.support.annotation.NonNull;
                import android.support.v7.app.AlertDialog;
                import android.support.v7.app.AppCompatActivity;
                import android.text.TextUtils;
                import android.util.Log;
                import android.view.KeyEvent;
                import android.view.View;
                import android.view.inputmethod.EditorInfo;
                import android.widget.AutoCompleteTextView;
                import android.widget.EditText;
                import android.widget.TextView;
                import android.widget.Toast;
        
                import com.flurry.android.Constants;
                import com.flurry.android.FlurryAgent;
                import com.flurry.android.ads.FlurryGender;
                import com.google.android.gms.tasks.OnCompleteListener;
                import com.google.android.gms.tasks.Task;
                import com.google.firebase.auth.AuthResult;
                import com.google.firebase.auth.FirebaseAuth;
        
                import java.util.Random;
        
        
                public class LoginActivity extends AppCompatActivity {
        
                    // constants
                    final String FLURRY_API_KEY = "xxx";
                    public static final String PREFS_NAME = "UserProfile";
                    public static final Byte MALE = 1;
                //    public static final String USER_ID = "user id number";
        
                    // TODO: Add member variables here:
                    private FirebaseAuth mAuth;
                    // UI references.
                    private AutoCompleteTextView mEmailView;
                    private EditText mPasswordView;
        
                    @Override
                    protected void onCreate(Bundle savedInstanceState) {
                        super.onCreate(savedInstanceState);
                        setContentView(R.layout.activity_login);
        
                        FlurryAgent.setAge(65);
                        FlurryAgent.setGender(Constants.FEMALE);
                        FlurryAgent.setGender(MALE);
                        FlurryAgent.setGender((byte) FlurryGender.MALE.getCode());
        
                // the different attempts to log gender:
        
                        Log.d("JBDEBUG", "setgender input is byte MALE: "+MALE);
                        Log.d("JBDEBUG", "setgender Constants.FEMALE is: "+Constants.FEMALE);
                        Log.d("JBDEBUG", "setgender Flurry Gender with getcode: "+(byte)FlurryGender.MALE.getCode());
        
                        new FlurryAgent.Builder()
                                .withLogEnabled(true)
                                .withCaptureUncaughtExceptions(true)
                                .withLogLevel(Log.VERBOSE)
                                .build(this, FLURRY_API_KEY);
        
        
                        checkForExistingUserID();
                        Log.d("display user id: ", " user id: "+read_userID());
        
                        mEmailView = (AutoCompleteTextView) findViewById(R.id.login_email);
                        mPasswordView = (EditText) findViewById(R.id.login_password);
        
                        mPasswordView.setOnEditorActionListener(new TextView.OnEditorActionListener() {
                            @Override
                            public boolean onEditorAction(TextView textView, int id, KeyEvent keyEvent) {
                                if (id == R.id.login || id == EditorInfo.IME_NULL) {
                                    attemptLogin();
                                    return true;
                                }
                                return false;
                            }
                        });
        
                        // TODO: Grab an instance of FirebaseAuth
                        mAuth = FirebaseAuth.getInstance();
                    }
        
                    // Executed when Sign in button pressed
                    public void signInExistingUser(View v) {
                        // TODO: Call attemptLogin() here
                        attemptLogin();
                    }
        
                    // Executed when Register button pressed
                    public void registerNewUser(View v) {
                        Intent intent = new Intent(this, com.xunxujianjin.flashchatnewfirebase.RegisterActivity.class);
                        finish();
                        startActivity(intent);
                    }
        
                    // TODO: Complete the attemptLogin() method
                    private void attemptLogin() {
                        String email = mEmailView.getText().toString();
                        String password = mPasswordView.getText().toString();
        
                        if (email.equals("") || password.equals("")) return;
                        Toast.makeText(this, "Login in progress", Toast.LENGTH_SHORT).show();
        
                        mAuth.signInWithEmailAndPassword(email, password).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                            @Override
                            public void onComplete(@NonNull Task<AuthResult> task) {
                                Log.d("FlashChat", "Sign in with Email() on Complete " + task.isSuccessful());
        
                                if (!task.isSuccessful()) {
                                    Log.d("FlashChat", "Problem signing in " + task.getException());
                                    showErrorDialog("someming mas mwong");
                                } else {
                                    Intent intent = new Intent(LoginActivity.this, MainChatActivity.class);
                                    FlurryAgent.logEvent("user_log_in");
                                    Log.d("flurry", "pos 5 login successful");
                                    finish();
                                    startActivity(intent);
                                }
                            }
                        });
                    }
        
                    String read_userID() {
                        SharedPreferences prefs = getSharedPreferences(PREFS_NAME, 0);
                        String uID = prefs.getString("user_id",null);
                        return uID;
                    }
        
                    String generateNumber() {
        
                        SharedPreferences prefs = getSharedPreferences(PREFS_NAME, 0);
        
                        // generate random number for user id
                        Random randomNumberGenerator = new Random();
                        int randomNumber = randomNumberGenerator.nextInt(1000);
                        String stringedNum = Integer.toString(randomNumber);
        
                        Long tsLong = System.currentTimeMillis();
                        String ts = tsLong.toString()+stringedNum;
                        Log.d("generateID", "generated num is: "+ts);
        
                        // write this random number as a value associated with user id key in client shared preferences
                        prefs.edit().putString("user_id", ts).apply();
                        Log.d("generateID Shared pref", "generated num in shared pref is: "+prefs.getString("user_id",null));
        
                        return ts;
                    }
        
                    public void checkForExistingUserID(){
        
        
                        String retrievedUserID = read_userID();
                        SharedPreferences prefs = getSharedPreferences(PREFS_NAME, 0);
        
                        // Check for an existing user id if not created, create it into shared pref and report it to flurry
                        if (TextUtils.isEmpty(retrievedUserID)) {
                        FlurryAgent.setUserId(generateNumber());
                        Log.d("login test", "user with no user id and whose got one: "+prefs.getString("user_id",null));
        
                    } else {
                        FlurryAgent.setUserId(retrievedUserID);
                        Log.d("login test", "existing user_id in base declared to flurry: "+retrievedUserID);
                    }
        
                    }
        
                    // TODO: Use FirebaseAuth to sign in with email & password
                    // TODO: Show error on screen with an alert dialog
                    private void showErrorDialog(String message) {
                        new AlertDialog.Builder(this)
                                .setTitle("Oh oh")
                                .setMessage(message)
                                .setPositiveButton(android.R.string.ok, null)
                                .setIcon(android.R.drawable.ic_dialog_alert)
                                .show();
                    }
                }
        
      2. 其他尝试记录性别+ startOnSession和stopOnSession的活动

        package com.xunxujianjin.flashchatnewfirebase;

                import android.content.Intent;
                import android.content.SharedPreferences;
                import android.os.Bundle;
                import android.support.v7.app.AppCompatActivity;
                import android.util.Log;
                import android.view.KeyEvent;
                import android.view.View;
                import android.widget.EditText;
                import android.widget.ImageButton;
                import android.widget.ListView;
                import android.widget.TextView;
        
                // import android.content.Intent;
                // import android.view.KeyEvent;
                // import android.widget.Button;
        
        
                import com.flurry.android.Constants;
                import com.flurry.android.FlurryAgent;
                import com.flurry.android.FlurryAgentListener;
                import com.flurry.android.ads.FlurryGender;
                import com.google.firebase.database.DatabaseReference;
                import com.google.firebase.database.FirebaseDatabase;
        
                public class MainChatActivity extends AppCompatActivity {
        
                    // TODO: Add member variables here:
                    private String mDisplayName;
                    private ListView mChatListView;
                    private EditText mInputText;
                    private ImageButton mSendButton;
                    private DatabaseReference mDatabaseReference;
                    private ChatListAdapter mAdapter;
                    public static final String PREFS_NAME = "UserProfile";
                    private static final Byte MALE = 1;
                    private static final Byte FEMALE = 0;
        
        
        
                    @Override
                    protected void onCreate(Bundle savedInstanceState) {
                        super.onCreate(savedInstanceState);
                        setContentView(R.layout.activity_main_chat);
        
                        // TODO: Set up the display name and get the Firebase reference
                        setupDisplayName();
                        mDatabaseReference = FirebaseDatabase.getInstance().getReference();
        
                        // Link the Views in the layout to the Java code
                        mInputText = (EditText) findViewById(R.id.messageInput);
                        mSendButton = (ImageButton) findViewById(R.id.sendButton);
                        mChatListView = (ListView) findViewById(R.id.chat_list_view);
        
                        // TODO: Send the message when the "enter" button is pressed
                        mInputText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
                            @Override
                            public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) {
                                String name = mInputText.getText().toString();
                                sendMessage();
                                return true;
                            }
                        });
        
                        // TODO: Add an OnClickListener to the sendButton to send a message
                        mSendButton.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View view) {
                                sendMessage();
                            }
                        });
        
                        // TODO: Retrieve the display name from the Shared Preferences
                    }
        
                        private void sendMessage(){
                            Log.d("FlashChat", "I sent something top merci ");
                            String input = mInputText.getText().toString();
                            if (!input.equals("")){
                                InstantMessage chat = new InstantMessage(input, mDisplayName);
                                mDatabaseReference.child("messages").push().setValue(chat);
                                mInputText.setText("");
                                FlurryAgent.logEvent("message sent");
                                Log.d("flurry", "pos 3 withing function 
        
      3. //另一次尝试记录Gender她在同一活动中没有成功:

        message sent event activated + set gender");
                                    FlurryAgent.setGender(Constants.FEMALE);
                                    FlurryAgent.setGender(FEMALE);
                                    FlurryAgent.setGender((byte) FlurryGender.MALE.getCode());
                            }
                        }
        
                            private void setupDisplayName(){
                                SharedPreferences prefs = getSharedPreferences(RegisterActivity.CHAT_PREFS, MODE_PRIVATE);
                                mDisplayName = prefs.getString(RegisterActivity.DISPLAY_NAME_KEY, null);
                                if (mDisplayName == null) mDisplayName = "Anonymous";
                            }
        
                        // TODO: Grab the text the user typed in and push the message to Firebase
        
        
                        // TODO: Override the onStart() lifecycle method. Setup the adapter here.
                        @Override
                        public void onStart(){
                                super.onStart();
                                mAdapter = new ChatListAdapter(this, mDatabaseReference, mDisplayName);
                                mChatListView.setAdapter(mAdapter);
                            FlurryAgent.onStartSession(getApplicationContext());
                            Log.d("JBDEBUG", "onStartSession on mainchat activity");
                        }
        
                        @Override
                        public void onStop() {
                            super.onStop();
        
                            // TODO: Remove the Firebase event listener on the adapter.
                        mAdapter.cleanup();
        
        
                            FlurryAgent.onEndSession(getApplicationContext());
                            Log.d("jbstop", "onEndSession");
                            SharedPreferences prefs = getSharedPreferences(PREFS_NAME, 0);
                            prefs.edit().putString("user_id", "").apply();
                            Log.d("jbstop","user id: "+prefs.getString("erased user_id",null));
                            Log.d("jbstop","supposed to be stopped state in mainchat activity");
                        }
                    }
        

        我想进一步调试并了解Flurry或客户端哪一方面存在问题。提前感谢您的指导,

1 个答案:

答案 0 :(得分:0)

您需要设置如下所示的性别: -

FlurryAgent.setGender(FlurryGender.FEMALE);