Rails 코드를 쓸 줄 모르는 Android 앱 개발자가 Firebase를 사용하여 채팅 앱을 만듭니다.

17372 단어 AndroidFirebase
어젯밤 Google IO 2016에서 Firebase의 대폭 기능 확장이 발표되었다.
Rails 코드를 쓸 줄 모르는 Android 앱 개발자가 nifty cloud mobile backend로 채팅 앱을 만듭니다. 때 니프티 클라우드 이동 백엔드의 가장 큰 단점은 "실시간 DB를 사용할 수 없습니다!"이렇게 되면 Firebase에서 볼 수 있을 것 같아서 실제로 어떤 건지 만져보기로 했어요.

응용 프로그램 만들기



괜찮은 페이지 같아요.부터 "GET STARTED FOR FREE"까지

새 응용 프로그램.

애플리케이션 및 Firebase 연결



구글을 이용해 쉽게 로그인하고 싶어서 SHA-1 산열을 등록했다.
먼저 Android Studio에서 KeyStore를 만듭니다.


SHA-1
$ keytool -exportcert -list -v -alias fuga -keystore fugafuga.jks 
キーストアのパスワードを入力してください:  
別名: fuga
作成日: 2016/05/19
エントリ・タイプ: PrivateKeyEntry
証明書チェーンの長さ: 1
証明書[1]:
所有者: CN=Yusuke Iwaki, OU=Development, O=CrowdWorks, L=Shibuya, ST=Tokyo, C=JP
発行者: CN=Yusuke Iwaki, OU=Development, O=CrowdWorks, L=Shibuya, ST=Tokyo, C=JP
シリアル番号: 12df6f13
有効期間の開始日: Thu May 19 12:25:23 JST 2016終了日: Mon May 13 12:25:23 JST 2041
証明書のフィンガプリント:
     MD5:  C3:BC:08:68:E1******ひみつ******:0F:00:7B
     SHA1: 4B:15:15:A8:F3******ひみつ******:0B:6C:84:A7
     SHA256: 8C:36:D2:C1:35******ひみつ******:9F:86:80
     署名アルゴリズム名: SHA256withRSA
     バージョン: 3

拡張: 

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 01 DE E2******ひみつ******8.=z .P.>
0010: DF 62******ひみつ******
]
]

SHA1의 부분을 Firebase에 넣으세요.

깜짝 놀랄만한 상세한 설명이 있을 거예요.

응용 프로그램에 Firebase 추가


https://firebase.google.com/docs/android/setup#add_the_sdk 에서 보듯이 이번
  • firebase-core
  • firebase-database
  • firebase-auth
  • 에서 설명한 대로 해당 매개변수의 값을 수정합니다.
    내장
    diff --git a/app/build.gradle b/app/build.gradle
    index 1e130c6..097e3b1 100644
    --- a/app/build.gradle
    +++ b/app/build.gradle
    @@ -23,4 +23,10 @@ dependencies {
         compile fileTree(dir: 'libs', include: ['*.jar'])
         testCompile 'junit:junit:4.12'
         compile 'com.android.support:appcompat-v7:23.4.0'
    -}
    \ No newline at end of file
    +
    +    compile 'com.google.firebase:firebase-core:9.0.0'
    +    compile 'com.google.firebase:firebase-database:9.0.0'
    +    compile 'com.google.firebase:firebase-auth:9.0.0'
    +    compile 'com.google.android.gms:play-services-auth:9.0.0'
    +}
    +apply plugin: 'com.google.gms.google-services'
    \ No newline at end of file
    diff --git a/build.gradle b/build.gradle
    index 58f1f1b..fa5c600 100644
    --- a/build.gradle
    +++ b/build.gradle
    @@ -9,6 +9,7 @@ buildscript {
    
             // NOTE: Do not place your application dependencies here; they belong
             // in the individual module build.gradle files
    +        classpath 'com.google.gms:google-services:3.0.0'
         }
     }
    
    
    

    로그인 주위 만들기


    이전, 유용니프티 구름의 모바일 백엔드 테스트 프로그램이 제작되었을 때의 그.
    Google OAuth를 하느라 역시 귀찮아졌어요.

    먼저 Firebase 옆에 Email 인증을 엽니다.
    지난번에 만든 것을 유용하여 만들면
    회원 로그인/로그인/로그아웃
    등록 후 다음 순간 사용자가 Firebase 콘솔에 나타납니다!

    이 부근은 니프티운과 거의 같은 사용감이다.
    하지만 디테일을 말하자면 Promise 문법으로 회원 로그인의 답조를 쓸 수 있어 역시.니프티운보다 더 인기가 많아요.
    로그인 코드 예
    FirebaseAuth.getInstance().signInWithEmailAndPassword(email, password).continueWith(new Continuation<AuthResult, Object>() {
        @Override
        public Object then(@NonNull Task<AuthResult> task) throws Exception {
            if (!task.isSuccessful()) {
                Log.e("FugaFugaWorks", "error", task.getException());
            }
            return null;
        }
    });
    

    메시지 전송 및 수신


    드디어 기대되는 리얼타임 DB가 왔네요.
    Meteor를 사용해도 놀라운 대상 DB.상세한 상황은 이해하기 쉽다.
    구토를 하든 데이터베이스에 넣든 모두 느슨하게 느껴진다

    모델 정의


    Message
    public class Message {
        public String author;
        public String content;
    
        public Message(String author, String content) {
            this.author = author;
            this.content = content;
        }
    }
    
    포조 느낌으로.알맞다

    메시지 보내기 (데이터베이스에 데이터 삽입)


    데이터베이스 삽입
        private DatabaseReference getMessageRef() {
            FirebaseDatabase database = FirebaseDatabase.getInstance();
            return database.getReference(MESSAGE_STORE); // MESSAGE_STORE = "message"
        }
    
        private void sendMessage(String content) {
            FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
    
            getMessageRef().push().setValue(new Message(user.getUid(), content)).continueWith(new Continuation<Void, Object>() {
                @Override
                public Object then(@NonNull Task<Void> task) throws Exception {
                    if (!task.isSuccessful()) {
                        Log.e("FugaFugaWorks","error", task.getException());
                        return null;
                    }
    
                    ((TextView) findViewById(R.id.txt_content)).setText("");
                    return null;
                }
            });
        }
    
    포인트는 쓰고 나면 특별한 DB가 없는 리셋이다.실시간 DB의 혜택으로 DB에 들어가는 다음 순간 변경 알림이 내려져 보기가 업데이트되기 때문이다.

    메시지 표시 (데이터베이스에서 로드)


    '로드'라고 하면 한 장면이 강한 인상을 남기지만 Firebase의 생각은'단지 DB의 데이터 모델을 보기에 비추는 것'일 것이다.
    이 일대의 보도
    명단을 어떻게 보여줄까--귀찮은 고민거리잖아!
    정말 감사합니다.
    ListAdapter
            mAdapter = new FirebaseListAdapter<Message>(this, Message.class, android.R.layout.simple_list_item_1, getMessageRef()) {
                @Override
                protected void populateView(View v, Message model, int position) {
                    ((TextView) v).setText(model.author+": "+model.content);
                }
            };
            ListView listview = (ListView) findViewById(R.id.listview);
            listview.setAdapter(mAdapter);
    
    CRUD를 전혀 돌볼 필요가 없어서 정말 좋아요.

    실제 메시지 보내기


    Firebase-ui라는 하위 항목은 Firebase를 표시하는 어댑터를 제공합니다
    그리고 바로 (그리고 실시간!)Firebase 웹 콘솔에 반영 ↓

    그리고 다음 순간에.

    화면에도 반영된다고 합니다.

    총결산


    아주 간단하게 채팅 앱을 만들었어요.
    아마 GCM일 거예요. (아휴, FCM?)사용하면 푸시 알림도 간단하게 배달됩니다.

    실시간 DB를 터치해보니 Meteor를 처음 봤을 때처럼 감동적이고 상당히 마비되었다.

    ... 라고 말하다


    샘플 있어요!!ww

    좋은 웹페이지 즐겨찾기