2016-11-12 1 views
0

안드로이드 폰에서 firebase에 기본 키를 보내고 싶습니다. 누가 데이터를 보내 주는지 알 수 있습니다. 그래서 기본적으로 이미지를 서버로 보낼 응용 프로그램을 만들고 있습니다. 누가 나에게 뭔가를 보내고 있는지 확인하고 싶다. 따라서 기본 키가 하나만 필요합니다. 어느 누구도이 일을 도와 줄 수 있습니까? 어떻게 firebase 서버에 고유 한 것을 보낼 수 있습니까?기본베이스 키 1 대를 firebase에 보내고 싶습니다

public void SignUP(View v){ 

     EditText name = (EditText) findViewById(R.id.editTextRegistrationName); 
     EditText contact = (EditText) findViewById(R.id.editTextRegistrationContact); 
     EditText city = (EditText) findViewById(R.id.editTextRegistrationCity); 
     EditText email = (EditText) findViewById(R.id.editTextRegistrationEmail); 
     EditText pass = (EditText) findViewById(R.id.editTextRegistrationPassword); 

     String userName = name.getText().toString(); 
     String userContact = contact.getText().toString(); 
     String userCity = city.getText().toString(); 
     String userEmail = email.getText().toString(); 
     String userPassword = pass.getText().toString(); 

     if(isOnline() == true){ 
      FirebaseDatabase database = FirebaseDatabase.getInstance(); 
      DatabaseReference myRef = database.getReference("Users").push(); 


      DatabaseReference nam = myRef.child("Name"); 
      nam.setValue(userName); 

      DatabaseReference contac = myRef.child("Contact"); 
      contac.setValue(userContact); 

      DatabaseReference cit = myRef.child("City"); 
      cit.setValue(userCity); 

      DatabaseReference emai = myRef.child("Email"); 
      emai.setValue(userEmail); 

      DatabaseReference passwor = myRef.child("Password"); 
      passwor.setValue(userPassword); 

     } 
     else{ 
       bal.addUser(new UserBean(0,userName,userContact,userCity,userEmail,userPassword)); 
       Toast.makeText(this, "Data Save in DB", Toast.LENGTH_SHORT).show(); 
    } 
+0

FIrebaseAuth.getInstance가().에 getCurrent(). getUid()가 –

+0

이 ADDUSER 내부에서 발생하는()? –

+0

실제로 인터넷에 연결되어 있지 않다면 DB에 저장 한 다음 서버에 연결하면 모든 db 데이터를 서버에 보내십시오.이 이유는 무엇입니까? – Alex

답변

0

당신이 사용자의 자동 생성 된 ID는 단순히 FirebaseAuth을 가져오고 몇 줄의 코드로 각 사용자의 고유 ID를 가질 수 싶어 감안할 때 UPDATE

. 데이터가 자동으로 동기화되므로 명시 적으로 서버에 보내는 것에 대해 걱정할 필요가 없습니다. JSON 트리를 빌드 할 때 코드에서 필요할 때마다 user-id를 사용하면됩니다. 데이터에 추가하려는 경우 이미 다른 데이터 요소에 대해 사용하고있는 쉬운 프로세스이기도합니다. 주석에서 언급 한 대부분은 이미 SDK 내에서 작동합니다. 따라서 처음부터 이러한 기능을 재발견 할 필요가 없습니다.

아래 코드는 활동 내에서 인증을 사용하도록 설정하는 데 사용됩니다.

private FirebaseAuth mAuth; 
// ... 
mAuth = FirebaseAuth.getInstance(); 
EmailPasswordActivity.java 

워드 프로세서에서이 간단한 예제

private FirebaseAuth.AuthStateListener mAuthListener; 

// ... 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // ... 
    mAuthListener = new FirebaseAuth.AuthStateListener() { 
     @Override 
     public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 
      FirebaseUser user = firebaseAuth.getCurrentUser(); 
      if (user != null) { 
       // User is signed in 
       Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid()); 
      } else { 
       // User is signed out 
       Log.d(TAG, "onAuthStateChanged:signed_out"); 
      } 
      // ... 
     } 
    }; 
    // ... 
} 

@Override 
public void onStart() { 
    super.onStart(); 
    mAuth.addAuthStateListener(mAuthListener); 
} 

@Override 
public void onStop() { 
    super.onStop(); 
    if (mAuthListener != null) { 
     mAuth.removeAuthStateListener(mAuthListener); 
    } 
} 
EmailPasswordActivity.java 

mAuth.signInWithEmailAndPassword(email, password) 
     .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
      @Override 
      public void onComplete(@NonNull Task<AuthResult> task) { 
       Log.d(TAG, "signInWithEmail:onComplete:" + task.isSuccessful()); 

       // If sign in fails, display a message to the user. If sign in succeeds 
       // the auth state listener will be notified and logic to handle the 
       // signed in user can be handled in the listener. 
       if (!task.isSuccessful()) { 
        Log.w(TAG, "signInWithEmail:failed", task.getException()); 
        Toast.makeText(EmailPasswordActivity.this, R.string.auth_failed, 
          Toast.LENGTH_SHORT).show(); 
       } 

       // ... 
      } 
     }); 
EmailPasswordActivity.java 

이 샘플 코드는 암호를 요구 witho 익명 사용자를 인증하는 방법을 보여줍니다 ... 이메일과 비밀번호를 사용하여 누군가를 인증하는 방법을 보여줍니다.

private FirebaseAuth.AuthStateListener mAuthListener; 

// ... 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // ... 
    mAuthListener = new FirebaseAuth.AuthStateListener() { 
     @Override 
     public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 
      FirebaseUser user = firebaseAuth.getCurrentUser(); 
      if (user != null) { 
       // User is signed in 
       Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid()); 
      } else { 
       // User is signed out 
       Log.d(TAG, "onAuthStateChanged:signed_out"); 
      } 
      // ... 
     } 
    }; 
    // ... 
} 

@Override 
public void onStart() { 
    super.onStart(); 
    mAuth.addAuthStateListener(mAuthListener); 
} 

@Override 
public void onStop() { 
    super.onStop(); 
    if (mAuthListener != null) { 
     mAuth.removeAuthStateListener(mAuthListener); 
    } 
} 
AnonymousAuthActivity.java 

mAuth.signInAnonymously() 
     .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
      @Override 
      public void onComplete(@NonNull Task<AuthResult> task) { 
       Log.d(TAG, "signInAnonymously:onComplete:" + task.isSuccessful()); 

       // If sign in fails, display a message to the user. If sign in succeeds 
       // the auth state listener will be notified and logic to handle the 
       // signed in user can be handled in the listener. 
       if (!task.isSuccessful()) { 
        Log.w(TAG, "signInAnonymously", task.getException()); 
        Toast.makeText(AnonymousAuthActivity.this, "Authentication failed.", 
          Toast.LENGTH_SHORT).show(); 
       } 

       // ... 
      } 
     }); 
AnonymousAuthActivity.java 

(FirebaseAuth Guide)

오프라인 데이터 동기화 활성화 : 당신은 또한 할 수 로컬로 저장 될 데이터 트리의 특정 지점을 강제하려면 (Data offline info)

FirebaseDatabase.getInstance().setPersistenceEnabled(true); 

을 해당 위치를 참조하고 keepSynced 함수를 true로 전달합니다. 헤더의 의견을 나타냅니다

이 위치에 keepSynced:YES를 호출하여/** *

, 해당 위치에 대한 데이터가 자동으로 다운로드되고 *가 동기화를 유지, 청취자가 그 위치에 장착되지 않은 경우에도 . 또한 위치가 * 동기화 상태로 유지되는 동안 영구 디스크 캐시에서 제거되지 않습니다. * * @param keepSynced이 위치를 동기화하려면 YES를 전달하고 동기화를 중지하려면 NO를 전달하십시오. */

ORIGINAL 답변

난 당신이 website에 안드로이드에 대한 샘플 코드를 체크 아웃 할 수 있습니다 생각합니다. 기본적으로 push(). getKey()는 자동 생성 된 id를 반드시 반환해야한다고 생각합니다. 필자가 이것을 버리면 게시 작업이 자동으로 키를 생성합니다.

private void writeNewPost(String userId, String username, String title, String body) { 
    // Create new post at /user-posts/$userid/$postid and at 
    // /posts/$postid simultaneously 
    String key = mDatabase.child("posts").push().getKey(); 
    Post post = new Post(userId, username, title, body); 
    Map<String, Object> postValues = post.toMap(); 

    Map<String, Object> childUpdates = new HashMap<>(); 
    childUpdates.put("/posts/" + key, postValues); 
    childUpdates.put("/user-posts/" + userId + "/" + key, postValues); 

    mDatabase.updateChildren(childUpdates); 
} 
관련 문제