2017-07-10 9 views
0

私の要件は、私のアンドロイドアプリケーション内では初めてとその後のGoogleの記号を区別することです。初めてのユーザーのGoogleログインでは、ユーザーをプロフィール画面にリダイレクトして、連絡先の詳細に関する追加情報を記入します。彼の最初のGoogleログイン後、すべての後続のGoogleログイン、プロファイルの詳細をもう一度記入することなく、ユーザーをホーム画面に直接誘導したい。私はバックエンドにFirebaseを使用します。私はいくつかのスタックオーバーフローの質問に続き、以下のリンクを提供してきました。の共有設定は、サインイン

リンク1: Correct code location to check Firebase if a user has been created already?

リンク2: How to differentiate between first time google Sign-In and successive google sign-In in an android application?

私は私が行方不明ですかを把握できなかった、単純なバグ、と私の要件を達成することができました。初めてのGoogleログインはプロフィール画面に向けられ、その後のリクエストはホーム画面にリダイレクトされます。しかし、私が試したことは、ユーザーがアプリを閉じるまで起こるだけです。ユーザーがアプリケーションを閉じてもう一度開くと、ユーザーはプロファイル画面にリダイレクトされますが、これは発生しません。ユーザーがGoogleにログインしてプロフィールに登録すると、以降のすべてのリクエストはホーム画面に移動する必要があります。

私のバグ:。ユーザーはアプリを閉じ、ユーザーがGoogleの記号をプロファイル画面にリダイレクトされるここで、再度、再度開いたら、私は

SignInActivity.java

SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(SignInActivity.this); 
if (firebaseAuth.getCurrentUser() != null) { 
    if (!sharedPreferences.contains(String.valueOf(Preferences.FIRST_LAUNCH))) { 
     Intent contactDetailsIntent = new Intent(SignInActivity.this, ContactDetailsActivity.class); 
     startActivity(contactDetailsIntent); 
     sharedPreferences.edit().putBoolean(String.valueOf(Preferences.FIRST_LAUNCH), true).commit(); 
    } else { 
     Intent loginIntent = new Intent(SignInActivity.this,MainMenuActivity.class); 
     startActivity(loginIntent); 
     finish(); 
    } 
} 
を試してきたものです

ここに私の好みのクラスです。

public class Preferences { 

    public static final boolean FIRST_LAUNCH = false; 
    public static final String NAME = "fullName"; 
    public static final String EMAIL = "email"; 
    public static final String USERID = "userId"; 
    public static final String USER_TYPE = "userType"; 

} 

問題の原因を特定できません。何か助けがあります

答えて

0

Firebase 9.0.0- How to see if user is logged in with AuthStateListener 電子メール認証に使用しましたが、firebseのユーザーアカウントにリンクされているため、私はそれを考えていません重要です。また、onCreateメソッドに入れることをお勧めします。

、ユーザーがデバイスにログインした回数をチェックfirebaseデータベースを使用します。

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); 
UserID = user.getUid(); 

次に、その一意のIDを持つユーザーが存在するかどうかを確認するためにデータベースをチェックします。 IDをデータベースに格納しない場合は、子「timesLoggedIn」などを作成し、値0を与えます。存在する場合は、「timesLoggedIn」を増やします。