포럼
parse api와 웹앱에 관한 질문 받습니다. (android만)
2014.01.07 16:17
추가로 팁도 정리해서 올리려고 합니다.
굼금하신 점들 댓글로 달아주시는데
너무 어렵거나
웹앱에서 멀어지는건 저도 답변을 못드립니다.
추가로 이번에 만든 하이브리드 앱 (이지만 전부 네이티브이고 게시판하나 딸랑 XE랑 연결.... 즉; 걍 네이티브 앱입니다.)
https://play.google.com/store/apps/details?id=com.internetbat.dreammaker
참고로 에러있습니다. (player에 쓰레드 정리를 안해줘서 꼬여버립니다 ㅋㅋㅋㅋ.... 이따집에가서 고칠에정)
어플은 꾸고싶은 꿈을 꾸게 해주는 앱!! 인데 진짜 될지는 저도 몰라요 ㅋㅋ 왠지 되지않을까......
우선 제가 설명 드릴수 잇는것은
- 기본적인 안드로이드 앱을 위한 java
- 웹과는 왜 이런느낌으로 다를까
- 레이아웃에 대해
- 액티비티와 클래스
- webview
등
(특정 기능들은 검색해 주시길 바라요)
API
phonegap
Parse.com
adsense (앱용.. 저도 아직 적용중이긴 하지만..)
제가 답해드릴수있는건 답해드리지만' 코드를 내놓아라 아니면 불태워먹을꺼다' (이거맞나;;) 하는건 가능한 선에서 답해드릴께요...
하지만 이코드는 이해안된다는 답변드릴수있으면 드리겠습니다.
(이러다 반이상 죄송해요 몰라요 ㅠㅠ 이렇게 끝나는건 아니겠져?ㅋㅋㅋ ㅠㅠ)
우선 가장많이 물어볼꺼같아 선답드립니다.
웹뷰와 폰갭의 차이는 폰갭이 웹을 돌리는 데 훨씬 수월합니다.
하지만 하이브리드 앱으로 쓰기에는 웹뷰가 나은점 폰갭이 나은점 다릅니다.
하지만 당신이 오직 웹만 할 수 있었다면 웹뷰 비추입니다. 폰갭으로 쓰시죠.
왠지 필요할꺼 같은 기능들은 다 들어있습니다.
만약 웹뷰를 쓰신다면... 폰갭에는 그냥 포함되어있는 기능들을 (앱에서 웹이 잘돌아가게 하는 기능들) 써보지도 않은 java코드로 일일이 생성해 주어야 합니다.
폰갭으로 띄우는거 다하셔도 이후에도 필요한 기능들은 많습니다. 백키로 앱을 종료한다던가 메뉴키를 이용해 메뉴를 띄운다던가 말이죠. 그리고 폰갭으로해도 activity (일반 native기능) 페이지도 만들고 쓸수도있습니다..
댓글 23
-
Canto
2014.01.07 17:09
-
장포크
2014.01.07 17:28
그렇죠 ㅎㅎ 사실 cordova.js를 불러오고 app.intialize를 선언해주고 써야하는게 맞는거니깐요 ㅎㅎ
그래도 웹뷰로 이거왜 안돼 저거왜안돼 이것저것 불러오다가 멘붕! 보단 빠르게 (도 너무 빠른 몇줄로 물론 최초에 project생성에는 좀 걸리시겟지만..) 웹페이지를 불러오니 만족도감에서는 폰갭이 최고죠!ㅎ
@Canto님 이 나서시면 저는 도망갑니다 ㅎㅎㅎ
-
Canto
2014.01.07 18:25
네 ㅋㅋㅋ 웹뷰는 입맛에 맞게 만들려면 따로 코딩을 통해 알고리즘이라던지 기능을 추가시켜줘야되기 때문에 좀 그렇죠.. ㅎㅎ
요새 Android SDK 툴이 좋아져서 프로젝트도 금방 만들 수 있을꺼에요 ㅎㅎ
초기때의 SDK툴이랑 비교해보면.. 장족의 발전.. ㅋㅋ
ㅎㅎㅎ 저는 웹 앱쪽이나 하이브리드 앱쪽은 깊게 알지는 못해요. 그러니 도망 안가셔도 될듯
저는 전문분야(?)가 모바일을 이용한 음성인식 쪽이라서 ^^;; 굳이 따지면 네이티브 앱쪽??
-
장포크
2014.01.13 09:33
호옹 음성 인식 쪽이라면 고액연봉 아닙니까?ㅋ
-
마래바
2014.01.07 23:00
저도 xe 홈페이지를 안드로이드앱에 연결시킨 웹앱 하나 만든 게 있는데,
거의 전부를 구글링해서 찾아 봤네요..
찾아보면 거의 있기는 한데, 초보자에게는 그것도 어려워서... ^^;;
혹시 나오는 질문 중에 제가 아는 부분 있으면 답변 참가 하겠습니다.
https://play.google.com/store/apps/details?id=com.han.airtravel
헉... 그러고 보니, 여긴 개발자 포럼.... (사용자포럼만 열심히 다니던 제가.. 졸지에.. 개...발.. ㅋㅋ)
-
시니시즘
2014.01.08 01:05
아직도 폰갭이라고 하나요? 코도바로 바뀌지 않았나요? ㅎㅎ
-
Canto
2014.01.08 12:36
어도비가 아파치에 기증(?) 하면서 cordova 로 바뀌긴 했죠.. ㅋㅋㅋ 근데 뭔가 폰갭이 더 입에 익어서(?) ^^::
-
Ju-rie
2014.01.08 12:51
질문입니다...인터넷배틀 가서보니깐 앱을 만드셨던데요
게시판 첨부파일이 앱에서 다운로드가 안되네요....에고..이거 어떻게 해결해야할지 원..ㅠㅠ
혹시 이 문제는 알고 계셨나요~?
-
장포크
2014.01.08 20:59
다운로드 안되는 잇슈는 다른 분께 제작해 드린거에서 받았습니다만...
제가 실험해 보지는 않았습니다만
검색해보니 해당 글을 참조하시면 될꺼같습니다.
http://daddycat.blogspot.kr/2013/03/android-phonegap.html
하지만 위의 글처럼 해결하신다는 말은 모바일 웹페이지는 포기..
혹은 주소창에 get을 넣고 캐싱을 하는 등 을이용해서
어플로 접속시에만 활성화 시켜셔야 합니다.
-
sde
2014.01.08 18:04
제가 parse로 푸시를 할려고하는데 홈페이지(xe)인데요 core에 기본적으로있는 알림기능으로 parse에보네서 안드로이드 앱으로 보넬려고 함니다.
일단 parse에서 안드로이드로 보네는건 구현햇으나 홈페이지에서 parse로 보네는것은 아직 구현못하고있습니다.
이글을 보신다면 좀 도와주세여
-
Canto
2014.01.08 18:52
일단 보내는 건 여러가지 방법이 있을 수 있습니다만..
저는 CURL 을 통해 처리합니다.
http://www.xpressengine.com/index.php?mid=tip&page=2&document_srl=22379488
이쪽을 보시면 xiso님께서 모듈을 통한 방법으로 적어놓으신 글이 있습니다.
저의 경우는 애드온을 통해 처리합니다.
알림 처리 하실 부분에서
$url = 'https://api.parse.com/1/push';
$appId = 'APPID';
$restKey = 'RESTKEY';
$message = "전달될 메시지";
$loadurl = "해당 노티바를 개치시 연결 될 주소";
$push_data = json_encode(array(
"where" => array(
"deviceType" => "android" //디바이스가 안드로이드일 때
),
"expiration_interval" => 86400, //하루 동안 알림이 디바이스에 전송 되지 않으면 해당 알림 폐기
"data" => array(
"alert" => $message,
"url" => $loadurl
)
));
$rest = curl_init();
curl_setopt($rest,CURLOPT_URL,$url);
curl_setopt($rest, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($rest, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($rest,CURLOPT_PORT,443);
curl_setopt($rest,CURLOPT_POST,1);
curl_setopt($rest,CURLOPT_POSTFIELDS,$push_data);
curl_setopt($rest,CURLOPT_HTTPHEADER,
array("X-Parse-Application-Id: " . $appId,
"X-Parse-REST-API-Key: " . $restKey,
"Content-Type: application/json"));
curl_exec($rest);
이런 식으로 하시면 XE에서 parse로 데이터를 보낼 수 있습니다.
-
sde
2014.01.08 18:57
xe에 기본적으로 있는 알림인가여?
-
Canto
2014.01.08 18:58
xe에 기본적으로 있는 알림 이라는 것에 대한 의미를 잘 모르겠습니다.
xe의 알림이라면 쪽지 알림 밖에 없습니다.
-
Canto
2014.01.08 19:00
새글에 대한 알림, 답글에 대한 알림 등을 푸시서버로 보내주실려면
알림센터모듈 혹은 자체제작 모듈 or 애드온 혹은 코어의 수정을 통해 푸시 기능을 만들어 주셔야 합니다.
-
sde
2014.01.08 19:05
흠.... 그뭐냐 뎃글알림이 기본적으로 탑제되어있더군요?
뭐.. 알림센터의 폴더를 찾아봐도없는데;;;
-
sde
2014.01.08 19:46
$url = "해당 노티바를 개치시 연결 될 주소";
요건 어떤건가염???? -
장포크
2014.01.08 20:54
알림센터를 내리신걸로 알고있어요 찾아보시면 딴대서 구하실수 있구요.
지금 $url 변수가 겹쳐있으니
그부분 유의 하시구요.
아무튼 노티에 넣는다는말은 push notification에 넣는 다는 의미입니다. 푸시알람에 url이라는 변수 데이타를 넣겠다는건대 위소스는 $url이 잘 못 두번쓰여있는점 꼭 유의하시구요.
넣는 데이타는 예를 들어 "~~님이 게시물을 작성하였습니다." 라던가 "~~님이 댓글을 작성하였습니다" 라던가의
알림센터나 기타 모듈들에서 뜨자나요?
그러면 그거에 당연히 주소가 있겠죠?
그주소를 넣어주는겁니다.
물론 쿼리처리 되어야겠지요 ㅎ
추가로 앱에서 추가로 저 데이타를 파싱해 와야합니다.
알림부분에는 자동 파싱이 되지만 앱내부에 파싱을 하려면 추가로 앱내부에서 받아주어야 합니다.
제가 회사에 소스가 있으니 요청하시면 올려드릴께요.
-
XE러버
2014.01.08 23:28
앱내부에서 url 파싱하는 소스 좀 부탁드릴게요 ㅠㅠ
-
Canto
2014.01.09 02:26
http://www.xpressengine.com/index.php?mid=freeboard&search_keyword=%EC%95%B1&search_target=title&document_srl=22526418
이쪽에서 이야기하다가 나온 방법입니다.
if(intent.getExtras()!=null){ try { Bundle extra = intent.getExtras(); String data = extra.getString("com.parse.Data"); if(data!=null){ JSONObject json = new JSONObject(data); url = json.getString("url"); } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
Parse 쪽에 보내는
$push_data = json_encode(array(
"where" => array(
"deviceType" => "android" //디바이스가 안드로이드일 때
),
"expiration_interval" => 86400, //하루 동안 알림이 디바이스에 전송 되지 않으면 해당 알림 폐기
"data" => array(
"alert" => $message,
"url" => $loadurl
)
));
이 부분에
"data" => array(
"alert" => $message,
"url" => $loadurl
)
에 들어가있는 내용을
json.getString("변수명");
으로 가져 올 수 있습니다.
예를 들어 위에서 url 이외에도 alert 에 들어가 있는 메시지 내용을 가져오고 싶으면
$변수명 = json.getString("alert");
으로 뽑아 오실 수 있습니다.
주의 하실점은
PushService.setDefaultPushCallback(this,xxxxxxx.class);
에서 지정한 Activity 에서 해당 코드를 이용해야 합니다.
-
장포크
2014.01.13 09:28
전 조금 다르게요 ㅎㅎ;
둘다 내용은 동일하다능/
String url = "file:///android_asset/www/index.html";
Intent intent = getIntent();
try {
Bundle extra = intent.getExtras();
String data = extra.getString("com.parse.Data");
if(data !=null){
JSONObject json = new JSONObject(data);
url = json.getString("url"); // if에서 data가 null이 아니면 url에 data에 담겨온 string을 받아줍니다.
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
super.loadUrl(url);
-
장포크
2014.01.11 17:22
회사에 있어서 (제가 요즘 바빠서 까먹을수도있겟지만..) 월요일에 올려드릴께요 ㅎ -
장포크
2014.01.08 20:55
$url 변수가 겹치옵니다.
-
Canto
2014.01.08 22:42
윽.. 제꺼 소스에서 일반적으로 사용할 때 필요없는 부분 빼고 수정해서 올리다 보니 겹쳐 버렸네요..;;
수정해놨습니다.
안그래도 저도 웹뷰를 이용해서 간단한 XE 앱 만들기 에 대해서 조금 써볼까 고민중이였는데 @장포크 님이 먼저 이렇게 나서주셨군요!!
저도 처음 웹 앱을 만드시는 분들께는 폰갭을 추천합니다.
또한 IOS와 Android 앱 두가지를 다 만드실 분들에게도 폰갭을 추천합니다.
저야 뭐 모바일프로그래밍(안드&IOS) & JAVA개발이 본직(?) 이고 또 폰갭보단 웹뷰를 이용하여 이것저것 추가하는게 손에 익었고..
이것저것 점점 기능 추가를 하기 위한 베이스 앱으로 시작한거기 때문에 웹뷰를 이용하고 있지만..
JAVA나 Android개발에 대해 잘 모르시고 편하게 웹 앱을 만드실 분들께는 폰갭이 최고 입니다.!
사실 원론적인 말을 하자면 폰갭으로 원격지의 HTML을 로드하는 것은 폰갭의 원칙에는 안맞는 일이지만.. ^^;;;;