SlideShare ist ein Scribd-Unternehmen logo
1 von 57
Cloud
          활용 교육
• baas.io 서비스


                고강태
                010-8269-3535
                james@thinkbee.kr
                @gtko
                http://goo.gl/9V3H6
                http://www.facebook.com/gangtai.goh
                                                                • VERSION 1.0
                                                      • Release Date : 2013.2
baas.io 소개


    1. baas.io 서비스
    2. baas.io 이용
    3. baas.io SDK 이용
    4. Back End 이용



2
1. baas.io 서비스


    01. baas.io 란 ?




3
01. baas.io 란 ?

    baas.io 서비스




4
baas.io 서비스                      Baasio 서비스

    클라우드 서버에서 앱 서비스를 위한 공간을 제공하고 여러 기
    능을 이용할 수 있는 Open API 를 준비해준다 .

    개발자는 RestFull 기반의 Open API 를 호출하기만 하면
    서버 공간에 자신만의 백엔드 서비스를 손쉽게 구축할 수 있다
    .
    https://api.baas.io/<user_id>/<app_name>




5
백엔드 서비스                     Baasio 서비스

    모바일 앱 개발자의 서버측 기능을 제공 , 백엔드 기능 .

    -   사용자 관리
    -   파일 업 / 다운로드
    -   위치 기반 로그
    -   Push 메시지 송 / 수신
    -   고객센터 등의 기능




6
2. baas.io 이용

    01.baas.io 서비스 가입
    02. My Page
    03. 백엔드 앱 목록
    04. 백엔드 앱 추가




7
baas.io 서비스 가입                 baas.io 이용

    앱을 개발하기 전에 baas.io 에서 가입 후 개발에 필요한
    SDK 를 다운받으셔야 합니다 . MyPage 에서 앱을 위한
    Data 저장소와 초기 데이터를 저장할 수 있습니다 .




8
My Page                       baas.io 이용

    백엔드 앱을 관리하고 상태를 살펴 볼 수 있다 .




9
백엔드 앱 목록                baas.io 이용

 백엔드 앱 목록에 두 가지 샘플 앱이 있다 .
  - SandBox
  - HelloWorld




10
백엔드 앱 추가                baas.io 이용

 백엔드 앱 목록에 두 가지 샘플 앱이 있다 .




11
3. baas.io SDK 이용

     01. baas.io Android SDK
     02. SDK 다운로드와 설치




12
01. baas.io Android SDK


     baas.io Android SDK
     SDK 구성
     SDK for Android




13
baas.io Android SDK                              baas.io SDK

     baas.io Android client SDK 는 다음과 같이 구성되어 있다
     .

     •Sample Project
     •https://github.com/baasio/baas.io-sample-android
     •StartUp Project
     •https://github.com/baasio/baas.io-startup-android
     •SDK Project
     •https://github.com/baasio/baas.io-sdk-android
     •Help Center UI Library Project & Sample
     •https://github.com/baasio/baas.io-helpcenter-android


14
baas.io Android SDK                          baas.io SDK

 baas.io Client SDK for Android 는 Android OS 2.2 이상 ,
 4.2.x 이하를 지원합니다 . baasio 라이브러리는

 1) 주 라이브러리 baasio 용 API 라이브러리 프로젝트
 2) 다양한 외부 라이브러리로 구성되어 함께 사용하고 있
 습니다 .
 •gcm.jar
 •spring-android-core-1.0.0.RELEASE.jar
 •spring-android-rest-template-1.0.0.RELEASE.jar
 •jackson-core-asl-1.9.1.jar
 •jackson-mapper-asl-1.9.1.jar
 •slf4j-android-1.6.1-RC1.jar


15
baas.io library project   baas.io SDK

안드로이드 라이브러리 프로젝트로 구성되어 있다 .
 - git 으로 체크아웃해서 사용한다 .




16
02. 다운로드와 설치


     Git 플러그인 설치




17
Git 플러그인 설치                        baas.io SDK

 baasio SDK 는 git 으로 제공됩니다 . 이용하기 위해서는
 eclipse 에서 egit 혹은 jgit 플러그인이 설치되어 있어
 야 합니다 .

 Eclipse Plugin 설치
 1) Eclipse Marketplace 에서 git 으로 검색후 egit 설
 치
 2) Software update site 에서 설치

 여기서는 Help menu -> Install New Software 로 설치 진
 행.



18
egit plugin 설치
플러그인을 설치후 eclipse 를 재시동 한다 .




19
Git view 추가
이클립스 퍼스펙티브에 Git Repositories view 를 추가한
다.
 - Windows menu -> Show View -> Other ...




20
SDK git 주소                            baas.io SDK

 baasio SDK form anroid 의 라이브러리는 아래 github 에서
 체크아웃 할 수 있다 .
 https://github.com/baasio/baas.io-sdk-android 에서
 git 주소를 복사한다 .




21
baasio git 주소                             baas.io SDK

 git repositories view 에서 Clone a Git repository 를 선택하
 면 복사한 git 주소가 입력된다 .




22
import library project   baas.io SDK

다운받은 소스는 로컬 git 저장소에 위치하는데 , 여기에는
Baasio 안드로이드 프로젝트가 구성되어 있다 .
이클립스에서 import 해온다 .


* 단 , library project 이니
copy 하지 않는다 .




23
BaasioAndroid library project
                                 baas.io SDK

import 한 프로젝트는 안드로이드 라이브러리 프로젝트로 구
성되어 있다 . 속성에서 is Library 속성을 확인한다 .




24
4.Back end 이용


     01. 백엔드 - sandbox
     02. 샘플 Startup project 소개
     03. 데이터엔터티 BassioEntity
     04. GCM Push 이용




25
01. 백엔드 -sandbox


     백엔드 목록 사용
     sandbox 상세 정보




26
백엔드 목록 사용                   sandbox

 백엔드 앱 목록에는 사용중인 baasio 앱을 볼 수 있다 .
 그리고 새로운 앱을 생성할 수 있다 .
 여기서는 샘플 앱인 sandbox 를 사용해서 샘플을 이용해
 보겠다 .




27
sandbox 앱 상세 정보                sandbox

 앱의 기본정보와 데이터브라우저 , 콘솔 , 푸시 관리등 제
 공.




               baas.io ID 와
               Application ID 를 사
               용하게 된다 .




28
백엔드 설정 항목                 sandbox



        앱 이름과 아이콘

        기본 정보 , API 상태 현황

        데이터 사용 정의

        PUSH 서비스 (GCM) 사용 등록

        API console




29
데이터브라우저                                sandbox

key-value 형태의 데이터를 추가하고 사용할 수 있다 .
 - 사용자 , 롤 , 그룹 , 파일 , 장치 등 실제 데이터 관리 .




 이어서 안드로이드 baasio Startup project 를 통해 사용해
 보자 .
30
02.baas.io Startup App


     startup 프로젝트 import 하기
     startup 프로젝트 제공
     AndroidManifest 살펴보기
     백엔드 -sandbox 정보 확인
     BaasioConfig.java
     데이터엔터티 BaasioEntity class

31
baas.io startup project                      Startup App.

 github 로 제공하는 baasio 샘플 프로젝트로 , 새로운
 baasio 앱을 만드는데 필요한 기본 앱 프로젝트 파일 제공
 .
   - https://github.com/baasio/baas.io-startup-android




            BaasioStartupProje
             ct 로 copy 해서               BaasioAndrodi
                 import              library 프로젝트를
                                          추가한다 .
32
startup 프로젝트 제공              Startup App.

 제공되는 Startup 프로젝트는
 - AndroidMenifest.xml 설정
 - Push 서비스를 위한 GCM 모듈이 이미 구현되어 적용 .
 - baas.io 에 가입된 정보 (BaasioConfig.java)
 - 관련 라이브러리

 등을 포함해서 개발자가 손쉽게 baasio 백엔드를 이용한
 앱 개발을 할 수 있다 .




33
AndroidManifest 살펴보기                                               Startup App.

 manifest 에 GCM 관련 퍼미션
     <manifest xmlns:android="http://schemas.android.com/apk/res/android" …
       <uses-sdk
           android:minSdkVersion="8"
           android:targetSdkVersion="17" />

       <uses-permission android:name="android.permission.INTERNET" />

       <permission
             android:name="com.kth.baasio.startup.permission.C2D_MESSAGE"
             android:protectionLevel="signature" />
       <uses-permission
           android:name="com.kth.baasio.startup.permission.C2D_MESSAGE" />
       <uses-permission
           android:name="com.google.android.c2dm.permission.RECEIVE" />
        <uses-permission android:name="android.permission.GET_ACCOUNTS" />
       <uses-permission android:name="android.permission.WAKE_LOCK" />
       <uses-permission
           android:name="android.permission.USE_CREDENTIALS" />

         …

34
AndroidManifest 살펴보기                                    Startup App.

 manifest 에 GCM 리시버 추가
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    …
 <receiver
     android:name=".gcm.GCMRedirectedBroadcastReceiver"
     android:permission="com.google.android.c2dm.permission.SEND" >
        <intent-filter>
        <!-- Receives the actual messages. -->
        <action android:name="com.google.android.c2dm.intent.RECEIVE" />
        <!-- Receives the registration id. -->
        <action
android:name="com.google.android.c2dm.intent.REGISTRATION" />
         <category android:name="com.kth.baasio.sample" />
        </intent-filter>
 </receiver
  …




35
AndroidManifest 살펴보기                                   Startup App.

 manifest 에 GCM 서비스 추가
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  …

     <service android:name=".gcm.GCMIntentService" />

 …




36
백엔드 -sandbox 정보 확인               Startup App.

 baas.io 에 생성된 앱 정보를 확인해서 BaasioConfig.java
 에 입력해 주어야 합니다 .
 백엔드목록에서 sandbox 의 기본정보 화면에 ID 를 확인
 합니다 .


                 baas.io ID
                 Application ID




37
BaasioConfig                                                         Startup App.

 "com.kth.baasio.startup" 위치에 있는 BaasioConfig.java
 을 열어 , BAASIO_URL, BAASIO_ID, APPLICATION_ID 에 백
 엔드의 sandbox 기본정보에 있는 ID 를 입력한다 .
     public class BaasioConfig {

         public static final String BAASIO_URL = "https://api.baas.io";

         // baas.io member ID
         public static final String BAASIO_ID = "779460bb-2437-SDFSFD...";

         // baas.io application ID
         public static final String APPLICATION_ID = "779460bb-2437-1...";

         // GCM(google cloud messaging service) sender ID
         public static final String GCM_SENDER_ID = null;

     }
                                                               샘플 백엔드 sandbox
                                                                 에 정의한 ID

38
Baasio initialize                                                 Startup App.

 "com.kth.baasio.startup" 위치에 있는
 BaasioApplication.java 은 BaasioConfig 에서 정의한
 BAASIO_URL, BAASIO_ID, APPLICATION_ID 를 이용해 초기
 화 한다 .
     public class BaasioApplication extends Application {

         AsyncTask mGCMRegisterTask;

         @Override
         public void onCreate() {
             super.onCreate();
             Baas.io().init(this,
                     BaasioConfig.BAASIO_URL,
                     BaasioConfig.BAASIO_ID,
                     BaasioConfig.APPLICATION_ID);
                                                                Push 를 위한 GCM
             mGCMRegisterTask = Baas.io().setGcmEnabled(this, null,
                                     new BaasioDeviceCallback() { .. } );
         }


39
Baasio terminate                                  Startup App.

 액티비티 종료시 연결을 해제해 준다 .
public class BaasioApplication extends Application {

      ...

      @Override
      public void onTerminate() {
          if (mGCMRegisterTask != null) {
              mGCMRegisterTask.cancel(true);
          }

            Baas.io().uninit(this);
            super.onTerminate();
      }
}




40
03. 데이터엔터티 BassioEntity


     데이터엔터티란 ?
     BaasioEntity class
     MainActivity 적용




41
데이터엔터티란 ?                  BassioEntity

엔터티란 baas.io 에 저장되는 모든 데이터 . 기본 속성 두
가지 .
- uuid: 엔터티에서 유일한 식별 값 .
- Entity type: users, roles,
  groups, files, devices ...




42
데이터 엔터티                       BassioEntity

 액티비티 MainActivity.java 에서는 두 개의 버튼으로
 - baasio 에 새로운 엔터티 ( 데이터 ) 를 추가하고
 - BaasioEntity class 에서 데이터 엔터티 제공 .




43
엔터티 생성                                                           Startup App.

 레이아웃에 있는 ‘ Bassio 시작하기 ’ 버튼을 클릭하면
 BaasioEntity ( 데이터 ) 생성
     public void onClick(View v) {
        BaasioEntity entity = new BaasioEntity("greeting");
        entity.setProperty("greeting", getString(R.string.success_baasio)
                          + "nn 생성시간 :"+ System.currentTimeMillis());
        entity.saveInBackground(new BaasioCallback<BaasioEntity>() {
          public void onResponse(BaasioEntity response) {
             if (response != null) {
                tvBaasio.setText(R.string.success_baasio);
                savedUuid = response.getUuid();
                Toast.makeText(MainActivity.this, " 성공하였습니다 .",
                                        Toast.LENGTH_LONG).show();
             }
          }
          public void onException(BaasioException e) {
             Log.e("baas.io", e.toString());
             Toast.makeText(MainActivity.this, " 실패하였습니다 .",
                               Toast.LENGTH_LONG).show();
          }
        });

44
엔터티 확인                                                             Startup App.

 MainActivity.java 에서는 두 개의 버튼으로
 - 추가된 값의 생성 일자를 확인
     public void onClick(View v) {
        if (savedUuid != null) {
           BaasioEntity entity = new BaasioEntity("greeting");
           entity.setUuid(savedUuid);
           entity.getInBackground(new BaasioCallback<BaasioEntity>() {
               @Override
               public void onResponse(BaasioEntity response) {
                  if (response != null) {
                      String result = response.
                                      getProperty("greeting").getTextValue();
                      tvBaasio.setText(result);
                      Toast.makeText(MainActivity.this, " 성공하였습니다 .",
     Toast.LENGTH_LONG).show();
                  }
               }
               public void onException(BaasioException e) {
                    Log.e("baas.io", e.toString());
                    Toast.makeText(MainActivity.this, " 실패하였습니다 .",
                                                Toast.LENGTH_LONG).show();
                              }
45                        });
                      }
04.baas.io Push


     GCM 소개




46
GCM 소개                                  GCM Push

 GCM 에서 발급받은 API Key 를 입력해 준다 .
 -
         https://code.google.com/apis/console/




 새로운 프로젝트를 추가한다 .




47
GCM 활성화                                                    GCM Push

 1) 새로운 Google API project 생
    Google API console 페이지에서 Services 선택
 2) Google Cloud Messaging 을 ‘ On’
 3) API Access 에서 API Key 얻기
 서비스 약관 동의




     https://code.google.com/apis/console/#project:4815162342

48
GCM 새 프로젝트        GCM Push

 1. 새로운 프로젝트를 추가한다 .




49
Sender ID                   GCM Push

 2. 새로 추가된 프로젝트의 주소의 맨 뒷자리 숫자가
   sender ID 이다 .
 이 ID 를 BaasisConfig.java 에 입력한다 .




50
GCM for android 'ON'                        GCM Push

 Services 목록중 Google Cloud Message for Android
 스의치를 'on' 으로 한다 .




51
New Key                             GCM Push

 API key 얻기
 - Google API console 페이지에서 API Access 를 선택
 하고 'Create New Server key…' 를 실행한다 .




52
API Key           GCM Push

 API key 얻기
 - create 버튼을 실행한다 .




53
BaasioConfig                                                         Startup App.

 GCM Sendter ID 를 BaasioConfig 에 등록한다 .


     public class BaasioConfig {

         public static final String BAASIO_URL = "https://api.baas.io";

         // baas.io member ID
         public static final String BAASIO_ID = "779460bb-2437-SDFSFD...";

         // baas.io application ID
         public static final String APPLICATION_ID = "779460bb-2437-1...";

         // GCM(google cloud messaging service) sender ID
         public static final String GCM_SENDER_ID = “234456778...”;

     }



                                                                 GCM Sender ID
54
백엔드 설정 푸시 관리                   GCM Push

 백엔드 설정에서 Google API Key 를 등록한다 .




55
백엔드 설정 푸시 발송     GCM Push

 메시지를 작성해서 발송해 본다 .




56
감사합니다 .

기본적인 사항을 살펴보셨으니 H3
컨퍼런스 발표자료중 앱 만들기를 따
라서 해보시면 좀 더 응용된 앱을 개
발하실 수 있을 것 입니다 .

-  http://www.slideshare.net/kthcorp/b1-baasio-
sdk20121030v105

Weitere ähnliche Inhalte

Ähnlich wie 안드로이드에서 Baasio 서비스 이용하기

[Koss Con 2016] CloudBread Tutorial PT
[Koss Con 2016] CloudBread Tutorial PT[Koss Con 2016] CloudBread Tutorial PT
[Koss Con 2016] CloudBread Tutorial PT윤석 홍
 
IBM Bluemix handson lab_DevOps_Target_Deploy_configutation_java_petclinic_v1.0
IBM Bluemix handson lab_DevOps_Target_Deploy_configutation_java_petclinic_v1.0IBM Bluemix handson lab_DevOps_Target_Deploy_configutation_java_petclinic_v1.0
IBM Bluemix handson lab_DevOps_Target_Deploy_configutation_java_petclinic_v1.0Beomsik Kyle Kim
 
Appview 소개
Appview 소개Appview 소개
Appview 소개logeo
 
Cms All 091104
Cms All 091104Cms All 091104
Cms All 091104wiim
 
공간정보아카데미 - Day1 오픈소스개발 일반
공간정보아카데미 - Day1 오픈소스개발 일반공간정보아카데미 - Day1 오픈소스개발 일반
공간정보아카데미 - Day1 오픈소스개발 일반BJ Jang
 
Internship backend
Internship backendInternship backend
Internship backendYein Sim
 
AWS Meetup 프리젠테이션.pdf
AWS Meetup 프리젠테이션.pdfAWS Meetup 프리젠테이션.pdf
AWS Meetup 프리젠테이션.pdfAlexLee226686
 
Unity Auto Build iOS
Unity Auto Build iOSUnity Auto Build iOS
Unity Auto Build iOSGiseok Lee
 
Sencha touch2-sdk-tools-window
Sencha touch2-sdk-tools-windowSencha touch2-sdk-tools-window
Sencha touch2-sdk-tools-windowByoung Do Ahn
 
[오픈소스컨설팅] OpenShift PaaS Platform How-to
[오픈소스컨설팅] OpenShift PaaS Platform How-to[오픈소스컨설팅] OpenShift PaaS Platform How-to
[오픈소스컨설팅] OpenShift PaaS Platform How-toJi-Woong Choi
 
AManaging Kong API Gateway with Terraform
AManaging Kong API Gateway with TerraformAManaging Kong API Gateway with Terraform
AManaging Kong API Gateway with TerraformByungjin Park
 
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트Dae Kim
 
1.Create Project Sunshine - 시온고등학교 안드로이드 스터디
1.Create Project Sunshine - 시온고등학교 안드로이드 스터디1.Create Project Sunshine - 시온고등학교 안드로이드 스터디
1.Create Project Sunshine - 시온고등학교 안드로이드 스터디Youngbin Han
 
Bug sense 분석
Bug sense 분석Bug sense 분석
Bug sense 분석logdog
 
안드로이드 개발자에 필요한 오픈소스이야기
안드로이드 개발자에 필요한 오픈소스이야기안드로이드 개발자에 필요한 오픈소스이야기
안드로이드 개발자에 필요한 오픈소스이야기YoungSu Son
 
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트Ji-Woong Choi
 
[AWS Dev Day] 앱 현대화 | 코드 기반 인프라(IaC)를 활용한 현대 애플리케이션 개발 가속화, 우리도 할 수 있어요 - 김필중...
[AWS Dev Day] 앱 현대화 | 코드 기반 인프라(IaC)를 활용한 현대 애플리케이션 개발 가속화, 우리도 할 수 있어요 - 김필중...[AWS Dev Day] 앱 현대화 | 코드 기반 인프라(IaC)를 활용한 현대 애플리케이션 개발 가속화, 우리도 할 수 있어요 - 김필중...
[AWS Dev Day] 앱 현대화 | 코드 기반 인프라(IaC)를 활용한 현대 애플리케이션 개발 가속화, 우리도 할 수 있어요 - 김필중...Amazon Web Services Korea
 
consumer_driven_contract with spring cloud contract at spring camp 2018
consumer_driven_contract with spring cloud contract at spring camp 2018consumer_driven_contract with spring cloud contract at spring camp 2018
consumer_driven_contract with spring cloud contract at spring camp 2018minseok kim
 

Ähnlich wie 안드로이드에서 Baasio 서비스 이용하기 (20)

[Koss Con 2016] CloudBread Tutorial PT
[Koss Con 2016] CloudBread Tutorial PT[Koss Con 2016] CloudBread Tutorial PT
[Koss Con 2016] CloudBread Tutorial PT
 
IBM Bluemix handson lab_DevOps_Target_Deploy_configutation_java_petclinic_v1.0
IBM Bluemix handson lab_DevOps_Target_Deploy_configutation_java_petclinic_v1.0IBM Bluemix handson lab_DevOps_Target_Deploy_configutation_java_petclinic_v1.0
IBM Bluemix handson lab_DevOps_Target_Deploy_configutation_java_petclinic_v1.0
 
Appview 소개
Appview 소개Appview 소개
Appview 소개
 
Cms All 091104
Cms All 091104Cms All 091104
Cms All 091104
 
공간정보아카데미 - Day1 오픈소스개발 일반
공간정보아카데미 - Day1 오픈소스개발 일반공간정보아카데미 - Day1 오픈소스개발 일반
공간정보아카데미 - Day1 오픈소스개발 일반
 
Portfolio
PortfolioPortfolio
Portfolio
 
Internship backend
Internship backendInternship backend
Internship backend
 
AWS Meetup 프리젠테이션.pdf
AWS Meetup 프리젠테이션.pdfAWS Meetup 프리젠테이션.pdf
AWS Meetup 프리젠테이션.pdf
 
Unity Auto Build iOS
Unity Auto Build iOSUnity Auto Build iOS
Unity Auto Build iOS
 
Sencha touch2-sdk-tools-window
Sencha touch2-sdk-tools-windowSencha touch2-sdk-tools-window
Sencha touch2-sdk-tools-window
 
[오픈소스컨설팅] OpenShift PaaS Platform How-to
[오픈소스컨설팅] OpenShift PaaS Platform How-to[오픈소스컨설팅] OpenShift PaaS Platform How-to
[오픈소스컨설팅] OpenShift PaaS Platform How-to
 
AManaging Kong API Gateway with Terraform
AManaging Kong API Gateway with TerraformAManaging Kong API Gateway with Terraform
AManaging Kong API Gateway with Terraform
 
AWS DevDay 실습 가이드 - 서버리스
AWS DevDay 실습 가이드 - 서버리스AWS DevDay 실습 가이드 - 서버리스
AWS DevDay 실습 가이드 - 서버리스
 
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
 
1.Create Project Sunshine - 시온고등학교 안드로이드 스터디
1.Create Project Sunshine - 시온고등학교 안드로이드 스터디1.Create Project Sunshine - 시온고등학교 안드로이드 스터디
1.Create Project Sunshine - 시온고등학교 안드로이드 스터디
 
Bug sense 분석
Bug sense 분석Bug sense 분석
Bug sense 분석
 
안드로이드 개발자에 필요한 오픈소스이야기
안드로이드 개발자에 필요한 오픈소스이야기안드로이드 개발자에 필요한 오픈소스이야기
안드로이드 개발자에 필요한 오픈소스이야기
 
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
 
[AWS Dev Day] 앱 현대화 | 코드 기반 인프라(IaC)를 활용한 현대 애플리케이션 개발 가속화, 우리도 할 수 있어요 - 김필중...
[AWS Dev Day] 앱 현대화 | 코드 기반 인프라(IaC)를 활용한 현대 애플리케이션 개발 가속화, 우리도 할 수 있어요 - 김필중...[AWS Dev Day] 앱 현대화 | 코드 기반 인프라(IaC)를 활용한 현대 애플리케이션 개발 가속화, 우리도 할 수 있어요 - 김필중...
[AWS Dev Day] 앱 현대화 | 코드 기반 인프라(IaC)를 활용한 현대 애플리케이션 개발 가속화, 우리도 할 수 있어요 - 김필중...
 
consumer_driven_contract with spring cloud contract at spring camp 2018
consumer_driven_contract with spring cloud contract at spring camp 2018consumer_driven_contract with spring cloud contract at spring camp 2018
consumer_driven_contract with spring cloud contract at spring camp 2018
 

Mehr von 고포릿 default

신경망 첫걸음 - 한빛미디어 요약
신경망 첫걸음 - 한빛미디어 요약신경망 첫걸음 - 한빛미디어 요약
신경망 첫걸음 - 한빛미디어 요약고포릿 default
 
비트교육센터-AWS활용 1주차: ssh authorized_keys
비트교육센터-AWS활용 1주차: ssh authorized_keys비트교육센터-AWS활용 1주차: ssh authorized_keys
비트교육센터-AWS활용 1주차: ssh authorized_keys고포릿 default
 
비트교육센터-AWS활용 1주차: EC2, S3, Elastic Beanstalks 사용
비트교육센터-AWS활용 1주차: EC2, S3, Elastic Beanstalks 사용비트교육센터-AWS활용 1주차: EC2, S3, Elastic Beanstalks 사용
비트교육센터-AWS활용 1주차: EC2, S3, Elastic Beanstalks 사용고포릿 default
 
Raspberry Pi GPIO Programming with Python
Raspberry Pi GPIO Programming with PythonRaspberry Pi GPIO Programming with Python
Raspberry Pi GPIO Programming with Python고포릿 default
 
앱 클라우드 서비스 개발
앱 클라우드 서비스 개발앱 클라우드 서비스 개발
앱 클라우드 서비스 개발고포릿 default
 

Mehr von 고포릿 default (7)

신경망 첫걸음 - 한빛미디어 요약
신경망 첫걸음 - 한빛미디어 요약신경망 첫걸음 - 한빛미디어 요약
신경망 첫걸음 - 한빛미디어 요약
 
비트교육센터-AWS활용 1주차: ssh authorized_keys
비트교육센터-AWS활용 1주차: ssh authorized_keys비트교육센터-AWS활용 1주차: ssh authorized_keys
비트교육센터-AWS활용 1주차: ssh authorized_keys
 
비트교육센터-AWS활용 1주차: EC2, S3, Elastic Beanstalks 사용
비트교육센터-AWS활용 1주차: EC2, S3, Elastic Beanstalks 사용비트교육센터-AWS활용 1주차: EC2, S3, Elastic Beanstalks 사용
비트교육센터-AWS활용 1주차: EC2, S3, Elastic Beanstalks 사용
 
Raspberry Pi GPIO Programming with Python
Raspberry Pi GPIO Programming with PythonRaspberry Pi GPIO Programming with Python
Raspberry Pi GPIO Programming with Python
 
Raspberry Pi Basic Usage
Raspberry Pi Basic UsageRaspberry Pi Basic Usage
Raspberry Pi Basic Usage
 
BigData, Hadoop과 Node.js
BigData, Hadoop과 Node.jsBigData, Hadoop과 Node.js
BigData, Hadoop과 Node.js
 
앱 클라우드 서비스 개발
앱 클라우드 서비스 개발앱 클라우드 서비스 개발
앱 클라우드 서비스 개발
 

안드로이드에서 Baasio 서비스 이용하기

  • 1. Cloud 활용 교육 • baas.io 서비스 고강태 010-8269-3535 james@thinkbee.kr @gtko http://goo.gl/9V3H6 http://www.facebook.com/gangtai.goh • VERSION 1.0 • Release Date : 2013.2
  • 2. baas.io 소개 1. baas.io 서비스 2. baas.io 이용 3. baas.io SDK 이용 4. Back End 이용 2
  • 3. 1. baas.io 서비스 01. baas.io 란 ? 3
  • 4. 01. baas.io 란 ? baas.io 서비스 4
  • 5. baas.io 서비스 Baasio 서비스 클라우드 서버에서 앱 서비스를 위한 공간을 제공하고 여러 기 능을 이용할 수 있는 Open API 를 준비해준다 . 개발자는 RestFull 기반의 Open API 를 호출하기만 하면 서버 공간에 자신만의 백엔드 서비스를 손쉽게 구축할 수 있다 . https://api.baas.io/<user_id>/<app_name> 5
  • 6. 백엔드 서비스 Baasio 서비스 모바일 앱 개발자의 서버측 기능을 제공 , 백엔드 기능 . - 사용자 관리 - 파일 업 / 다운로드 - 위치 기반 로그 - Push 메시지 송 / 수신 - 고객센터 등의 기능 6
  • 7. 2. baas.io 이용 01.baas.io 서비스 가입 02. My Page 03. 백엔드 앱 목록 04. 백엔드 앱 추가 7
  • 8. baas.io 서비스 가입 baas.io 이용 앱을 개발하기 전에 baas.io 에서 가입 후 개발에 필요한 SDK 를 다운받으셔야 합니다 . MyPage 에서 앱을 위한 Data 저장소와 초기 데이터를 저장할 수 있습니다 . 8
  • 9. My Page baas.io 이용 백엔드 앱을 관리하고 상태를 살펴 볼 수 있다 . 9
  • 10. 백엔드 앱 목록 baas.io 이용 백엔드 앱 목록에 두 가지 샘플 앱이 있다 . - SandBox - HelloWorld 10
  • 11. 백엔드 앱 추가 baas.io 이용 백엔드 앱 목록에 두 가지 샘플 앱이 있다 . 11
  • 12. 3. baas.io SDK 이용 01. baas.io Android SDK 02. SDK 다운로드와 설치 12
  • 13. 01. baas.io Android SDK baas.io Android SDK SDK 구성 SDK for Android 13
  • 14. baas.io Android SDK baas.io SDK baas.io Android client SDK 는 다음과 같이 구성되어 있다 . •Sample Project •https://github.com/baasio/baas.io-sample-android •StartUp Project •https://github.com/baasio/baas.io-startup-android •SDK Project •https://github.com/baasio/baas.io-sdk-android •Help Center UI Library Project & Sample •https://github.com/baasio/baas.io-helpcenter-android 14
  • 15. baas.io Android SDK baas.io SDK baas.io Client SDK for Android 는 Android OS 2.2 이상 , 4.2.x 이하를 지원합니다 . baasio 라이브러리는 1) 주 라이브러리 baasio 용 API 라이브러리 프로젝트 2) 다양한 외부 라이브러리로 구성되어 함께 사용하고 있 습니다 . •gcm.jar •spring-android-core-1.0.0.RELEASE.jar •spring-android-rest-template-1.0.0.RELEASE.jar •jackson-core-asl-1.9.1.jar •jackson-mapper-asl-1.9.1.jar •slf4j-android-1.6.1-RC1.jar 15
  • 16. baas.io library project baas.io SDK 안드로이드 라이브러리 프로젝트로 구성되어 있다 . - git 으로 체크아웃해서 사용한다 . 16
  • 17. 02. 다운로드와 설치 Git 플러그인 설치 17
  • 18. Git 플러그인 설치 baas.io SDK baasio SDK 는 git 으로 제공됩니다 . 이용하기 위해서는 eclipse 에서 egit 혹은 jgit 플러그인이 설치되어 있어 야 합니다 . Eclipse Plugin 설치 1) Eclipse Marketplace 에서 git 으로 검색후 egit 설 치 2) Software update site 에서 설치 여기서는 Help menu -> Install New Software 로 설치 진 행. 18
  • 19. egit plugin 설치 플러그인을 설치후 eclipse 를 재시동 한다 . 19
  • 20. Git view 추가 이클립스 퍼스펙티브에 Git Repositories view 를 추가한 다. - Windows menu -> Show View -> Other ... 20
  • 21. SDK git 주소 baas.io SDK baasio SDK form anroid 의 라이브러리는 아래 github 에서 체크아웃 할 수 있다 . https://github.com/baasio/baas.io-sdk-android 에서 git 주소를 복사한다 . 21
  • 22. baasio git 주소 baas.io SDK git repositories view 에서 Clone a Git repository 를 선택하 면 복사한 git 주소가 입력된다 . 22
  • 23. import library project baas.io SDK 다운받은 소스는 로컬 git 저장소에 위치하는데 , 여기에는 Baasio 안드로이드 프로젝트가 구성되어 있다 . 이클립스에서 import 해온다 . * 단 , library project 이니 copy 하지 않는다 . 23
  • 24. BaasioAndroid library project baas.io SDK import 한 프로젝트는 안드로이드 라이브러리 프로젝트로 구 성되어 있다 . 속성에서 is Library 속성을 확인한다 . 24
  • 25. 4.Back end 이용 01. 백엔드 - sandbox 02. 샘플 Startup project 소개 03. 데이터엔터티 BassioEntity 04. GCM Push 이용 25
  • 26. 01. 백엔드 -sandbox 백엔드 목록 사용 sandbox 상세 정보 26
  • 27. 백엔드 목록 사용 sandbox 백엔드 앱 목록에는 사용중인 baasio 앱을 볼 수 있다 . 그리고 새로운 앱을 생성할 수 있다 . 여기서는 샘플 앱인 sandbox 를 사용해서 샘플을 이용해 보겠다 . 27
  • 28. sandbox 앱 상세 정보 sandbox 앱의 기본정보와 데이터브라우저 , 콘솔 , 푸시 관리등 제 공. baas.io ID 와 Application ID 를 사 용하게 된다 . 28
  • 29. 백엔드 설정 항목 sandbox 앱 이름과 아이콘 기본 정보 , API 상태 현황 데이터 사용 정의 PUSH 서비스 (GCM) 사용 등록 API console 29
  • 30. 데이터브라우저 sandbox key-value 형태의 데이터를 추가하고 사용할 수 있다 . - 사용자 , 롤 , 그룹 , 파일 , 장치 등 실제 데이터 관리 . 이어서 안드로이드 baasio Startup project 를 통해 사용해 보자 . 30
  • 31. 02.baas.io Startup App startup 프로젝트 import 하기 startup 프로젝트 제공 AndroidManifest 살펴보기 백엔드 -sandbox 정보 확인 BaasioConfig.java 데이터엔터티 BaasioEntity class 31
  • 32. baas.io startup project Startup App. github 로 제공하는 baasio 샘플 프로젝트로 , 새로운 baasio 앱을 만드는데 필요한 기본 앱 프로젝트 파일 제공 . - https://github.com/baasio/baas.io-startup-android BaasioStartupProje ct 로 copy 해서 BaasioAndrodi import library 프로젝트를 추가한다 . 32
  • 33. startup 프로젝트 제공 Startup App. 제공되는 Startup 프로젝트는 - AndroidMenifest.xml 설정 - Push 서비스를 위한 GCM 모듈이 이미 구현되어 적용 . - baas.io 에 가입된 정보 (BaasioConfig.java) - 관련 라이브러리 등을 포함해서 개발자가 손쉽게 baasio 백엔드를 이용한 앱 개발을 할 수 있다 . 33
  • 34. AndroidManifest 살펴보기 Startup App. manifest 에 GCM 관련 퍼미션 <manifest xmlns:android="http://schemas.android.com/apk/res/android" … <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <uses-permission android:name="android.permission.INTERNET" /> <permission android:name="com.kth.baasio.startup.permission.C2D_MESSAGE" android:protectionLevel="signature" /> <uses-permission android:name="com.kth.baasio.startup.permission.C2D_MESSAGE" /> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.USE_CREDENTIALS" /> … 34
  • 35. AndroidManifest 살펴보기 Startup App. manifest 에 GCM 리시버 추가 <manifest xmlns:android="http://schemas.android.com/apk/res/android" … <receiver android:name=".gcm.GCMRedirectedBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND" > <intent-filter> <!-- Receives the actual messages. --> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <!-- Receives the registration id. --> <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> <category android:name="com.kth.baasio.sample" /> </intent-filter> </receiver … 35
  • 36. AndroidManifest 살펴보기 Startup App. manifest 에 GCM 서비스 추가 <manifest xmlns:android="http://schemas.android.com/apk/res/android" … <service android:name=".gcm.GCMIntentService" /> … 36
  • 37. 백엔드 -sandbox 정보 확인 Startup App. baas.io 에 생성된 앱 정보를 확인해서 BaasioConfig.java 에 입력해 주어야 합니다 . 백엔드목록에서 sandbox 의 기본정보 화면에 ID 를 확인 합니다 . baas.io ID Application ID 37
  • 38. BaasioConfig Startup App. "com.kth.baasio.startup" 위치에 있는 BaasioConfig.java 을 열어 , BAASIO_URL, BAASIO_ID, APPLICATION_ID 에 백 엔드의 sandbox 기본정보에 있는 ID 를 입력한다 . public class BaasioConfig { public static final String BAASIO_URL = "https://api.baas.io"; // baas.io member ID public static final String BAASIO_ID = "779460bb-2437-SDFSFD..."; // baas.io application ID public static final String APPLICATION_ID = "779460bb-2437-1..."; // GCM(google cloud messaging service) sender ID public static final String GCM_SENDER_ID = null; } 샘플 백엔드 sandbox 에 정의한 ID 38
  • 39. Baasio initialize Startup App. "com.kth.baasio.startup" 위치에 있는 BaasioApplication.java 은 BaasioConfig 에서 정의한 BAASIO_URL, BAASIO_ID, APPLICATION_ID 를 이용해 초기 화 한다 . public class BaasioApplication extends Application { AsyncTask mGCMRegisterTask; @Override public void onCreate() { super.onCreate(); Baas.io().init(this, BaasioConfig.BAASIO_URL, BaasioConfig.BAASIO_ID, BaasioConfig.APPLICATION_ID); Push 를 위한 GCM mGCMRegisterTask = Baas.io().setGcmEnabled(this, null, new BaasioDeviceCallback() { .. } ); } 39
  • 40. Baasio terminate Startup App. 액티비티 종료시 연결을 해제해 준다 . public class BaasioApplication extends Application { ... @Override public void onTerminate() { if (mGCMRegisterTask != null) { mGCMRegisterTask.cancel(true); } Baas.io().uninit(this); super.onTerminate(); } } 40
  • 41. 03. 데이터엔터티 BassioEntity 데이터엔터티란 ? BaasioEntity class MainActivity 적용 41
  • 42. 데이터엔터티란 ? BassioEntity 엔터티란 baas.io 에 저장되는 모든 데이터 . 기본 속성 두 가지 . - uuid: 엔터티에서 유일한 식별 값 . - Entity type: users, roles, groups, files, devices ... 42
  • 43. 데이터 엔터티 BassioEntity 액티비티 MainActivity.java 에서는 두 개의 버튼으로 - baasio 에 새로운 엔터티 ( 데이터 ) 를 추가하고 - BaasioEntity class 에서 데이터 엔터티 제공 . 43
  • 44. 엔터티 생성 Startup App. 레이아웃에 있는 ‘ Bassio 시작하기 ’ 버튼을 클릭하면 BaasioEntity ( 데이터 ) 생성 public void onClick(View v) { BaasioEntity entity = new BaasioEntity("greeting"); entity.setProperty("greeting", getString(R.string.success_baasio) + "nn 생성시간 :"+ System.currentTimeMillis()); entity.saveInBackground(new BaasioCallback<BaasioEntity>() { public void onResponse(BaasioEntity response) { if (response != null) { tvBaasio.setText(R.string.success_baasio); savedUuid = response.getUuid(); Toast.makeText(MainActivity.this, " 성공하였습니다 .", Toast.LENGTH_LONG).show(); } } public void onException(BaasioException e) { Log.e("baas.io", e.toString()); Toast.makeText(MainActivity.this, " 실패하였습니다 .", Toast.LENGTH_LONG).show(); } }); 44
  • 45. 엔터티 확인 Startup App. MainActivity.java 에서는 두 개의 버튼으로 - 추가된 값의 생성 일자를 확인 public void onClick(View v) { if (savedUuid != null) { BaasioEntity entity = new BaasioEntity("greeting"); entity.setUuid(savedUuid); entity.getInBackground(new BaasioCallback<BaasioEntity>() { @Override public void onResponse(BaasioEntity response) { if (response != null) { String result = response. getProperty("greeting").getTextValue(); tvBaasio.setText(result); Toast.makeText(MainActivity.this, " 성공하였습니다 .", Toast.LENGTH_LONG).show(); } } public void onException(BaasioException e) { Log.e("baas.io", e.toString()); Toast.makeText(MainActivity.this, " 실패하였습니다 .", Toast.LENGTH_LONG).show(); } 45 }); }
  • 46. 04.baas.io Push GCM 소개 46
  • 47. GCM 소개 GCM Push GCM 에서 발급받은 API Key 를 입력해 준다 . - https://code.google.com/apis/console/ 새로운 프로젝트를 추가한다 . 47
  • 48. GCM 활성화 GCM Push 1) 새로운 Google API project 생 Google API console 페이지에서 Services 선택 2) Google Cloud Messaging 을 ‘ On’ 3) API Access 에서 API Key 얻기 서비스 약관 동의 https://code.google.com/apis/console/#project:4815162342 48
  • 49. GCM 새 프로젝트 GCM Push 1. 새로운 프로젝트를 추가한다 . 49
  • 50. Sender ID GCM Push 2. 새로 추가된 프로젝트의 주소의 맨 뒷자리 숫자가 sender ID 이다 . 이 ID 를 BaasisConfig.java 에 입력한다 . 50
  • 51. GCM for android 'ON' GCM Push Services 목록중 Google Cloud Message for Android 스의치를 'on' 으로 한다 . 51
  • 52. New Key GCM Push API key 얻기 - Google API console 페이지에서 API Access 를 선택 하고 'Create New Server key…' 를 실행한다 . 52
  • 53. API Key GCM Push API key 얻기 - create 버튼을 실행한다 . 53
  • 54. BaasioConfig Startup App. GCM Sendter ID 를 BaasioConfig 에 등록한다 . public class BaasioConfig { public static final String BAASIO_URL = "https://api.baas.io"; // baas.io member ID public static final String BAASIO_ID = "779460bb-2437-SDFSFD..."; // baas.io application ID public static final String APPLICATION_ID = "779460bb-2437-1..."; // GCM(google cloud messaging service) sender ID public static final String GCM_SENDER_ID = “234456778...”; } GCM Sender ID 54
  • 55. 백엔드 설정 푸시 관리 GCM Push 백엔드 설정에서 Google API Key 를 등록한다 . 55
  • 56. 백엔드 설정 푸시 발송 GCM Push 메시지를 작성해서 발송해 본다 . 56
  • 57. 감사합니다 . 기본적인 사항을 살펴보셨으니 H3 컨퍼런스 발표자료중 앱 만들기를 따 라서 해보시면 좀 더 응용된 앱을 개 발하실 수 있을 것 입니다 . - http://www.slideshare.net/kthcorp/b1-baasio- sdk20121030v105