-
Notifications
You must be signed in to change notification settings - Fork 1
Home
baas.io Android SDK๋ฅผ ์ฝ๊ฒ ์ด์ฉํ์ฌ ์ฑ์ ๊ฐ๋ฐํ์ค ์ ์๋๋ก, Startup ํ๋ก์ ํธ๋ฅผ ์ ๊ณตํด๋๋ฆฌ๊ณ ์์ต๋๋ค.
Startup ํ๋ก์ ํธ๋ AndroidMenifest.xml ์ค์ ๋ฐ Push ์๋น์ค๋ฅผ ์ํ GCM ๋ชจ๋์ด ์ด๋ฏธ ๊ตฌํ๋์ด ์ ์ฉ๋์ด ์์ต๋๋ค.
๋ค๋ง, baas.io์ ๊ฐ์ ๋ ์ ๋ณด๋ค์ ์ง์ ์์ ํด ์ฃผ์ ์ผํฉ๋๋ค.(BaasioConfig.java)
- baas.io์ ๊ฐ์ ์ด ํ์ํฉ๋๋ค. baas.io ๊ฐ์ ํ์ด์ง์์ ๊ฐ์ ํ์ค ์ ์์ต๋๋ค.
- Android ADT ๋ฐ SDK๋ฅผ ํญ์ ์ต์ ์ผ๋ก ์ ์งํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค. ๊ฐ๋ฐํด์ "Get the Android SDK"๋ฅผ ํ์ธํ์๊ธฐ ๋ฐ๋๋๋ค.
- Text file encoding ๋ฐฉ๋ฒ์ด UTF-8 ๊ธฐ์ค์ผ๋ก ๊ฐ๋ฐ๋์ด ์์ต๋๋ค. ์ฌ์ฉํ์๋ ๊ฐ๋ฐํด์ Text file encoding ์ค์ ์ด UTF-8๋ก ๋์ด ์๋์ง ํ์ธํฉ๋๋ค.
๊ณ ๊ฐ์ผํฐ๋ ์คํ ์์ค๋ก ์ ๊ณต๋ฉ๋๋ค. clone์ ๋ฐ์ผ์๊ฑฐ๋ fork๋ฅผ ํ์ ์ ์์ ๋กญ๊ฒ ์ด์ฉํ์ค ์ ์์ต๋๋ค.
git clone https://github.com/baasio/baas.io-startup-android.git
์๋์ ๋งํฌ์์ zipํ์ผ์ ๋ค์ด๋ก๋ ๋ฐ์ ์ํ์๋ ์์น์ ์์ถํด์ ํฉ๋๋ค.
https://github.com/baasio/baas.io-startup-android/archive/master.zip
-
"File-Import"๋ฅผ ์ ํํฉ๋๋ค.
-
Import ๋ค์ด์ผ๋ก๊ทธ์์ "General-Existing Projects into Workspace"๋ฅผ ์ ํํ๊ณ "Next"๋ฒํผ์ ์ ํํฉ๋๋ค.
-
๋ค์ Improt ๋ค์ด์ผ๋ก๊ทธ ํ๋ฉด์์ "Select root directory"์ "Browse"๋ฒํผ์ ๋๋ฌ ๋ค์ด๋ก๋ ๋ฐ์ ํด๋๋ฅผ ์ ํํ๊ณ , "Projects:"์์ BaasioStartupProject๋ฅผ ํ๋ก์ ํธ๋ฅผ ์ ํํ๊ณ "Finish"๋ฅผ ์ ํํฉ๋๋ค.
-
baas.io ์ฌ์ดํธ์ ์ ์ํ์ฌ ๋ก๊ทธ์ธํฉ๋๋ค.
-
My Page์ Apps ๋ชฉ๋ก์์ sandbox๋ฅผ ์ ํํ๋ฉด ์๋์ ๊ฐ์ด ๊ธฐ๋ณธ ์ ๋ณด ํ๋ฉด์ด ๋ํ๋ฉ๋๋ค.
-
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 ์ค์ ๊ธฐ๋ณธ
Push ๊ธฐ๋ฅํ์ธ์ด ํ์ ์์ผ์๋ฉด ์ด ๋ถ๋ถ์ ๊ฑด๋๋ฐ์ ๋ ๋ฉ๋๋ค.
Push ๊ธฐ๋ฅ์ ํ์ธํ์๊ธฐ ์ํด์๋ GCM ๊ด๋ จ ์ค์ ์ด ํ์ํฉ๋๋ค. ์ด๋ Google API Key์ Sender ID๊ฐ ํ์ํ๋ฉฐ, ๋ฐ๊ธ ๋ฐ๋ ๋ฐฉ๋ฒ์ ์๋ ๋งํฌ์ ์ฝ๊ฒ ์ค๋ช ๋์ด ์์ผ๋ ๊ผญ ํ์ธ ๋ฐ๋๋๋ค.
์ด ๊ฐ์ด๋์์๋ Google API Key์ Sender ID๋ฅผ ์๊ณ ๊ณ์๋ ๊ฒ์ ๊ฐ์ ํ๊ฒ ์ต๋๋ค.
baas.io์ด๋ > My page > ๋ฐฑ์๋์ฑ์ ์ ํ > ์ค์ > ํธ์ฌ์ธ์ฆ์ ๊ด๋ฆฌ์ Google API Key๋ฅผ ๋ฑ๋กํฉ๋๋ค.
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";
}
์ด์ ๋ชจ๋ ์ค๋น๊ฐ ์๋ฃ๋์ต๋๋ค. BaasioStartupProject๋ฅผ "Project-Clean..."ํ์ฌ Clean Buildํ์๊ณ , BaasioStartupProject๋ฅผ ์คํํ์๋ฉด ๋ฉ๋๋ค.
-
Startup ํ๋ก์ ํธ๋ ์คํํ๋ฉด "baas.io ์์ํ๊ธฐ"๋ฒํผ๊ณผ "ํ์ธํ๊ธฐ"๋ฒํผ์ด ์์ต๋๋ค.
-
"baas.io ์์ํ๊ธฐ" ๋ฒํผ์ ๋๋ฅด์๋ฉด, ๊ธฐ๋ณธ์ ์ธ ์ปค์คํ Entity๋ฅผ ํ๋ ์์ฑํ์ฌ baas.io๋ก ์ ์ฅํฉ๋๋ค.
-
"ํ์ธํ๊ธฐ" ๋ฒํผ์ ๋๋ฅด์๋ฉด, "baas.io ์์ํ๊ธฐ" ๋ฒํผ์ ๋๋ฌ ์์ฑํ ์ปค์คํ Entity์ ๊ฐ์ ๊ฐ์ง๊ณ ์ ํ๋ฉด์ ๋ณด์ฌ์ค๋๋ค.
-
์ด๋ฅผ ํตํ์ฌ ์ ์์ ์ผ๋ก ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๊ณ ์์์ ํ์ธํ์ค ์ ์์ต๋๋ค.
-
APPLICATION_ID์PUT_YOUR_SANDBOX_APPLICATION_ID์ ์ค์ ํ์ "sandbox" ๋ฐฑ์๋์ฑ์ ํ์๊ฐ์ ์์ด๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋ ํ ์คํธ์ฉ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ค. ํ ์คํธ๋ฅผ ์๋ฃํ์๋ฉด ์ค์ ๋ฐฑ์๋์ฑ์ ์์ฑํ์ ์ ์์ ํ์๊ณ ์ฌ์ฉํ์๊ธฐ ๋ฐ๋๋๋ค.
โป ์ ์๋์๋์?
- <CHECK!!> ์ธํฐ๋ท์ด ์ฐ๊ฒฐ๋์ด ์๋์ง ํ์ธํด์ฃผ์ธ์.
- <CHECK!!> AndroidMenifest.xml์ INTERNET ํผ๋ฏธ์ ์ ๋น ๋จ๋ฆฌ์ง ์์ผ์ จ๋์?
- <CHECK!!> ADT 22 ๋ถํฐ๋ Android Private Libraries๊ฐ Build Path์ ํฌํจ๋์ด ์์ด์ผํฉ๋๋ค. Properties > Java Build Path > Order and Export์ "Android Private Libraries"๋ฅผ ์ฒดํฌํด์ฃผ์๊ณ , "Project-Clean..."ํ์ฌ Clean Build ํด์ฃผ์๊ธฐ ๋ฐ๋๋๋ค.
- <CHECK!!>
APPLICATION_ID์PUT_YOUR_SANDBOX_APPLICATION_ID๊ฐ sandbox ๋ฐฑ์๋์ฑ์ UUID๋ก ์ค์ ๋์ด ์๋์ง ํ์ธํด์ฃผ์ธ์.
baas.io์ด๋ > My page > ๋ฐฑ์๋์ฑ์ ์ ํ > ํธ์๊ด๋ฆฌ > ํธ์๋ฐ์ก์์ ๋ด์ฉ์ ์ ๋ ฅํ๊ณ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ณด์ธ์.
ํ ์คํธ ํ์ค ๋์๋ Google Play๊ฐ ์ค์น๋ ์ค์ ์๋๋ก์ด๋ ๋จ๋ง์์ ํ ์คํธ ๋ฐ๋๋๋ค. ํนํ, ์๋ฎฌ๋ ์ดํฐ๋ ๋ฉ์์ง๋ฅผ ๋ฐ์ ์ ์์ต๋๋ค.
ํ ์คํธํ์๋ ๋จ๋ง๋ก ๋ฉ์์ง๊ฐ ๋์ฐฉํ์ จ๋์? ์ถํ๋๋ฆฝ๋๋ค.!!!
โป ์ ์๋์๋์? Push๊ฐ ์ ์ ์ค์ ๋์๋์ง ํ์ธํ์ธ์.
Push๋ฅผ ํ์ฑํ๋ฅผ ํ์๋ฉด, ์ ์์ ์ผ๋ก ๋์์ํค๊ธฐ ์ํด ์๋ ์ฒดํฌ๋ฆฌ์คํธ๋ฅผ ํ์ธ ๋ฐ๋๋๋ค.
- <CHECK!!> Google Play๊ฐ ์ค์น๋ ์ค์ ์๋๋ก์ด๋ ๋จ๋ง์์ ํ ์คํธํ์ ์ผํฉ๋๋ค.
- baas.io ์ฌ์ดํธ ์ด๋
- ๋ก๊ทธ์ธ > My page ์ด๋> Application ์ ํ
- ์ค์ > ํธ์์ธ์ฆ์ ๊ด๋ฆฌ
- <CHECK!!> Android API KEY ๋ฑ๋ก๋์๋์ง ํ์ธ
- <CHECK!!> ํธ์ ์ฌ์ฉ ์ค์ ์ด ์ฌ์ฉํจ์ธ์ง ํ์ธ
- ๋ฐ์ดํฐ๋ธ๋ผ์ฐ์ > Role ์ ํ > guest ์ ํ > Permission ํญ ์ ํ
- <CHECK!!>"/devices" Create ์ฒดํฌ๋จ ํ์ธ(v0.8.1 ์ด์ ๋ฒ์ ์ "/pushes/devices")
- <CHECK!!>"/devices/*" Update, Delete ์ฒดํฌ๋จ ํ์ธ(v0.8.1 ์ด์ ๋ฒ์ ์ "/pushes/devices/*")
- ๋ฐ์ดํฐ๋ธ๋ผ์ฐ์ > Role ์ ํ > default ์ ํ > Permission ํญ ์ ํ
- <CHECK!!>์ค์ ๋ Role์ด "/device" Create์ "/devices/*" Update, Delete๋ฅผ ํฌํจํ๊ณ ์๋์ง ํ์ธ(v0.8.1 ์ด์ ๋ฒ์ ์ "/pushes/devices", "/pushes/devices/*")
- <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๊ด๋ จ๋ถ๋ถ์ ์ญํ ๊ณผ ๊ถํ์ ์ฐธ๊ณ ๋ฐ๋๋๋ค.
์ด์ ๋ชจ๋ ์ค์ ์ด ๋๋ฌ์ต๋๋ค. ์ข๋ ์ธ์ธํ๊ฒ ์์๋ณด๊ณ ์ถ์ผ์๋ค๋ฉด ์๋ ๋งํฌ๋ฅผ ํ์ธ๋ฐ๋๋๋ค.
- Android SDK
- Help Center UI Library (Wiki)
- Sample Project (Wiki)
- Startup Project (Wiki)








