Skip to content
Brad edited this page Jul 18, 2013 · 12 revisions

baas.io Android SDK를 쉽게 이용하여 앱을 개발하실 수 있도록, Startup 프로젝트를 제공해드리고 있습니다.

Startup 프로젝트는 AndroidMenifest.xml 설정 및 Push 서비스를 위한 GCM 모듈이 이미 구현되어 적용되어 있습니다.

다만, baas.io에 가입된 정보들은 직접 수정해 주셔야합니다.(BaasioConfig.java)

※ Startup Project 가이드를 보기 전에...

  • baas.io에 가입이 필요합니다. baas.io 가입 페이지에서 가입하실 수 있습니다.
  • Android ADT 및 SDK를 항상 최신으로 유지하는 것을 권장합니다. 개발툴은 "Get the Android SDK"를 확인하시기 바랍니다.
  • Text file encoding 방법이 UTF-8 기준으로 개발되어 있습니다. 사용하시는 개발툴의 Text file encoding 설정이 UTF-8로 되어 있는지 확인합니다.

프로젝트 실행하기

Step 1. 소스 다운로드하기

방법1: git clone

고객센터는 오픈 소스로 제공됩니다. clone을 받으시거나 fork를 하셔서 자유롭게 이용하실 수 있습니다.

git clone https://github.com/baasio/baas.io-startup-android.git

방법2: 압축(Zip) 파일 다운로드

아래의 링크에서 zip파일을 다운로드 받아 원하시는 위치에 압축해제 합니다.

https://github.com/baasio/baas.io-startup-android/archive/master.zip

Step 2. 프로젝트 Import하기

  1. "File-Import"를 선택합니다.

    <Import>

  2. Import 다이얼로그에서 "General-Existing Projects into Workspace"를 선택하고 "Next"버튼을 선택합니다.

    <Existing Projects into Workspace>

  3. 다음 Improt 다이얼로그 화면에서 "Select root directory"의 "Browse"버튼을 눌러 다운로드 받은 폴더를 선택하고, "Projects:"에서 BaasioStartupProject를 프로젝트를 선택하고 "Finish"를 선택합니다.

    <Import BaasioStartupProject>

Step 3. BaasioConfig.java 수정하기

  1. baas.io 사이트에 접속하여 로그인합니다.

  2. My Page의 Apps 목록에서 sandbox를 선택하면 아래와 같이 기본 정보 화면이 나타납니다.

    <기본정보>

  3. BaasioStartupProject의 "com.kth.baasio.startup" 위치에 있는 BaasioConfig.java을 열어, PUT_YOUR_BAASIO_MEMBER_ID 부분을 baas.io ID로 바꿉니다. 위 기본정보 화면의 baas.io ID에 표시된 UUID 형태의 값을 넣어주시면 됩니다.(email 주소가 아닙니다.)

    PUT_YOUR_SANDBOX_APPLICATION_ID 부분을 baas.io에 이미 생성되어 있는 'sandbox' 백엔드앱의 아이디로 바꿉니다. 위 화면의 Appliation ID에 표시된 UUID 형태의 값을 넣어주시면 됩니다.

     // BaasioConfig.java
     package com.kth.baasio.startup;
    
     public class BaasioConfig {
         public static final String BAASIO_URL = "https://api.baas.io";
     
         // baas.io member ID
         public static final String BAASIO_ID = "PUT_YOUR_BAASIO_MEMBER_ID";
     
         // baas.io application ID
         public static final String APPLICATION_ID = "PUT_YOUR_SANDBOX_APPLICATION_ID";
     
         // GCM(google cloud messaging service) sender ID
         public static final String GCM_SENDER_ID = null;	
     
     }
    

    ※ sandbox 백엔드앱의 Application ID로 하는 이유

    • baas.io에 가입하시면 "sandbox"라는 백엔드앱이 기본으로 생성되어 있습니다.
    • "sandbox"앱은 모든 권한이 풀려있어 가입/로그인한 회원이 아니어도 데이터를 저장할 수 있습니다.
    • 만약 PUT_YOUR_SANDBOX_APPLICATION_ID부분에 생성하신 애플리케이션의 ID를 넣으시고 동작을 시키면, 권한오류가 나면서 저장되지 않습니다.
    • 생성하신 애플리케이션의 ID로 동작되도록 하려면, baas.io의 데이터브라우저에서 Role을 설정하여 권한을 풀어줘야합니다.
    • 권한을 풀어주는 방법은 아래와 같습니다. 1. My page > Apps에서 앱 선택 > 데이터브라우저 > roles 에서 name: guest를 선택 2. ROLES Entity 조회창에서 Permission 탭 선택 > 입력창에 "/greetings/*" 입력 > read, create, update, delete 체크박스 선택 > Path 추가 선택
    • Role에 관련된 자료는 아래 링크를 참고 바랍니다. - 역할과 권한 - baas.io 에서 User Role 설정 기본

Step 4. Push 기능 활성화 하기

Push 기능확인이 필요 없으시면 이 부분은 건너뛰셔도 됩니다.

Push 기능을 확인하시기 위해서는 GCM 관련 설정이 필요합니다. 이때 Google API Key와 Sender ID가 필요하며, 발급 받는 방법은 아래 링크에 쉽게 설명되어 있으니 꼭 확인 바랍니다.

이 가이드에서는 Google API Key와 Sender ID를 알고 계시는 것을 가정하겠습니다.

1. 백엔드앱의 설정에 Google API Key 등록

baas.io이동 > My page > 백엔드앱을 선택 > 설정 > 푸쉬인증서 관리에 Google API Key를 등록합니다.

<Google API Key 등록>

2. BaasioConfig.java 수정

BaasioConfig.java에 GCM_SENDER_ID를 Google API Key를 발급받을 때 받은 Sender ID(Project ID)로 설정합니다.

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

    // baas.io member ID
    public static final String BAASIO_ID = "PUT_YOUR_BAASIO_MEMBER_ID";

    // baas.io application ID
    public static final String APPLICATION_ID = "PUT_YOUR_APPLICATION_ID";

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

}

Step 5. 빌드하기

이제 모든 준비가 완료됐습니다. BaasioStartupProject를 "Project-Clean..."하여 Clean Build하시고, BaasioStartupProject를 실행하시면 됩니다.


정상 동작 확인 하기

  • Startup 프로젝트는 실행하면 "baas.io 시작하기"버튼과 "확인하기"버튼이 있습니다.

    <실행화면>

  • "baas.io 시작하기" 버튼을 누르시면, 기본적인 커스텀 Entity를 하나 생성하여 baas.io로 저장합니다.

    <시작하기>

  • "확인하기" 버튼을 누르시면, "baas.io 시작하기" 버튼을 눌러 생성한 커스텀 Entity의 값을 가지고와 화면에 보여줍니다.

    <확인하기>

  • 이를 통하여 정상적으로 데이터가 저장되고 있음을 확인하실 수 있습니다.

  • APPLICATION_IDPUT_YOUR_SANDBOX_APPLICATION_ID에 설정하신 "sandbox" 백엔드앱은 회원가입 없이도 데이터를 저장할 수 있는 테스트용 애플리케이션입니다. 테스트를 완료하시면 실제 백엔드앱을 생성하셔서 수정하시고 사용하시기 바랍니다.

※ 잘 안되시나요?

  1. <CHECK!!> 인터넷이 연결되어 있는지 확인해주세요.
  2. <CHECK!!> AndroidMenifest.xml에 INTERNET 퍼미션을 빠뜨리진 않으셨나요?
  3. <CHECK!!> ADT 22 부터는 Android Private Libraries가 Build Path에 포함되어 있어야합니다. Properties > Java Build Path > Order and Export에 "Android Private Libraries"를 체크해주시고, "Project-Clean..."하여 Clean Build 해주시기 바랍니다.
  4. <CHECK!!> APPLICATION_IDPUT_YOUR_SANDBOX_APPLICATION_ID가 sandbox 백엔드앱의 UUID로 설정되어 있는지 확인해주세요.

푸쉬 확인해보기

baas.io이동 > My page > 백엔드앱을 선택 > 푸시관리 > 푸시발송에서 내용을 입력하고 메시지를 보내보세요.

테스트 하실 때에는 Google Play가 설치된 실제 안드로이드 단말에서 테스트 바랍니다. 특히, 에뮬레이터는 메시지를 받을 수 없습니다.

<Push 발송>

테스트하시는 단말로 메시지가 도착하셨나요? 축하드립니다.!!!

※ 잘 안되시나요? Push가 정상 설정되었는지 확인하세요.

Push를 활성화를 하시면, 정상적으로 동작시키기 위해 아래 체크리스트를 확인 바랍니다.

  1. <CHECK!!> Google Play가 설치된 실제 안드로이드 단말에서 테스트하셔야합니다.
  2. baas.io 사이트 이동
  3. 로그인 > My page 이동> Application 선택
  4. 설정 > 푸시인증서 관리
  5. <CHECK!!> Android API KEY 등록되었는지 확인
  6. <CHECK!!> 푸시 사용 설정이 사용함인지 확인
  7. 데이터브라우저 > Role 선택 > guest 선택 > Permission 탭 선택
  8. <CHECK!!>"/devices" Create 체크됨 확인(v0.8.1 이전 버전은 "/pushes/devices")
  9. <CHECK!!>"/devices/*" Update, Delete 체크됨 확인(v0.8.1 이전 버전은 "/pushes/devices/*")
  10. 데이터브라우저 > Role 선택 > default 선택 > Permission 탭 선택
  11. <CHECK!!>설정된 Role이 "/device" Create와 "/devices/*" Update, Delete를 포함하고 있는지 확인(v0.8.1 이전 버전은 "/pushes/devices", "/pushes/devices/*")
  12. <CHECK!!>프로젝트의 AndroidMenifest.xml 파일을 열어 아래와 같이 package 명이 제대로 들어가 있는지 확인합니다.
	<permission
   		android:name="{package명}.permission.C2D_MESSAGE"
        android:protectionLevel="signature" /> 
	...
	<receiver
        android:name="{package명}.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="{package명}" />
        </intent-filter>
    </receiver>
	...
	<service android:name="{package명}.gcm.GCMIntentService" />

<주> Role관련부분은 역할과 권한을 참고 바랍니다.


축하드립니다.!!

이제 모든 설정이 끝났습니다. 좀더 세세하게 알아보고 싶으시다면 아래 링크를 확인바랍니다.

Clone this wiki locally