포럼
XE + Parse 푸시 안드로이드 앱 소스를 공개했습니다.
2014.03.17 23:23
안드로이드 앱도 포함되어있어 다운로드에 올리기는 애매해서 사용자 포럼에 올립니다.
지원하는 기능은
1. 댓글, 대댓글, 쪽지 알림
2. 현재 URL 공유
3. 당겨서 새로고침
4. 푸시 On/Off 설정
5. 파일 첨부
과 같은 기본적인 기능이며
제외된 부분은
1. 파일 다운로드
2. 푸시 알림 클릭시 해당 URL로 이동
3. 특정 게시판 글 등록시 전체 회원 푸시 알림
4. 유튜브 HTML5 동영상 전체화면 재생
5. 파라미터를 통한 앱 식별 처리
입니다.
모듈쪽은 추가적으로 붙인 부분을 제외하다보니 사실상 Xiso님께서 올려주셨던 코드와 거의 같아졌네요. 안드로이드 앱쪽도 사실 별 볼일 없는 소스지만 공개했습니다.
링크는 https://github.com/Gunmania/xe-android-parse-push-essential 입니다.
- [2012/07/12] 웹마스터 팁 푸시알림 "유메시지" 지원 소스 및 그룹 메시지 지원합니다. *13
댓글 50
-
jambox
2014.03.17 23:54
-
뀰귤
2014.03.18 01:56
와.....................................
.
.
정.말.엄.청.난.일.이.벌.어.졌.네.요.....
.
.
XE의 일대 변환기 입니다.
-
고쇼
2014.03.18 07:51
뭔가 좋은 게시물이 써있네용ㅋ
내용 보니 아쉬운게 있어 적어봅니다
1가지가 더 들어가 있었다면 좋을꺼 같습니다
파일 다운로드를 하는 사이트도 있을텐데 추가가 안되어 아숩네요 -
Gunmania
2014.03.18 09:35
Parse, PullToRefresh 라이브러리라면 매뉴얼 내에 다운로드 링크 걸어놨었습니다 -
고쇼
2014.03.18 09:43
그게 아닌거같습니다
제가 말한 첨부파일은
사이트에 첨부파일을 올리면 다운로드 되게 했으면 하는거입니다.
-
Gunmania
2014.03.18 10:33
제외된 기능 부분은 실제로 구현은 했으나 무료 공개버전에서는 제외하고 제작 의뢰를 통해 의뢰시 지원되는 내용들입니다.. -
게로게론
2014.03.18 08:24
앱에서 로그인에 실패하길래 알아보니 mysql 쿼리를 보낼 때 XE 설정에 있는 mysql 계정이 아닌 다른 아이디로 쿼리를 보내고 있더군요...
function triggerAfterLogin(&$obj) { $member_srl = $obj->member_srl; if(!$member_srl) return new Object(); if(!$_SESSION["obid"]) return new Object(); $oDB = &DB::getInstance(); $query = $oDB->_query("UPDATE xe_member set `obid` = '".$_SESSION["obid"]."' where `member_srl` = ".$member_srl); if($query){ unset($_SESSION["obid"]); return new Object(); }else{ return new Object(-1,"단말기 정보를 가져오는데에 실패했습니다."); } }
이렇게 수정하니 잘 동작합니다. 좋은 자료 공유 감사합니다!
-
Gunmania
2014.03.18 09:34
그 부분은 mysqli나 큐브리드 같은 상황 생각해서 xml 쿼리문으로 수정한게 있었는데 테스트를 안해봐서 일단은 Xiso님 코드 그대로 올려두었습니다. 태스트 한 후에 xml 쿼리로 변경 예정입니다 -
고쇼
2014.03.18 15:27
이제 컴퓨터 할 시간이 나서 작업중에 있습니다
PushExample 이걸 불러오니 빨간 느낌표 하나가 뜨더군요
이건 무슨 증상인가요? 파일 추가가 덜 되서 드는 에러인가요?
메뉴얼을 보고 하고 있는데
이클립스 상에서 New -> Others -> Android -> Android Project from Existing Code선택 후 Android/PushExample 선택 후 추가.
1과 같은 방법으로 ActionBar-PullToRefresh-0.9.2/library와 ActionBar-PullToRefresh-0.9.2/extras/actionbarcompat을 각각 추가
1과 같은 방법으로 (안드로이드 SDK 위치)/extras/android/support/v7/appcompat을 추가.
이게 무슨 말인지 이해가 안되네요 메뉴얼을 글로 쓰는것도 좋지만이미지나 영상이 있다면 더 좋을것 같습니다. -
Goos
2014.03.18 18:45
정말정말 감사합니다. 안드로이드쪽은 영 기본이 없어서 손도 못대고 있었는데 Gunmania님의 깃허브 소스로 앞으로 많은 공부를 할 수 있을 것 같습니다.
-
XETheme
2014.03.18 22:19
와우...나눔정신이 꽉 차있으신 분이시네요!
개발/적용까지 꽤 많은 시간과 열정을 들였을텐데요.
너무 감사드립니다.
-
KrteamENT
2014.03.19 07:21
@고쇼 SDK가 설치된 경로에 저 라이브러리를 1번과 같이 추가하라는 뜻이랍니다^^; -
고쇼
2014.03.19 09:08
PushExample 이건 이클립스에 불러왔는데
1과 같은 방법으로 라는게 무슨 뜻인지 이해가 안됩니다
ActionBar-PullToRefresh-0.9.2/library와 ActionBar-PullToRefresh-0.9.2/extras/actionbarcompat을 각각 추가
1과 같은 방법으로 (안드로이드 SDK 위치)/extras/android/support/v7/appcompat을 추가
이걸 PushExample 여기다 넣어야 되는거 처럼 보이는데 말이죠
-
KrteamENT
2014.03.19 17:16
해당방법이 맞습니다. -
고쇼
2014.03.19 21:42
혹시 만드는 방법을 아신다면 영상이나 이미지캡쳐 해서 알려주실수 있나요? 제가 이런건 처음 해봐서요..ㅠㅠ
-
KrteamENT
2014.03.19 22:32
조만간 XE사용팁쪽이나 포럼에 업로드해드리겠습니다.
-
고쇼
2014.03.20 07:31
감사합니다
-
KTK
2014.03.22 15:01
1번과 같은 방법에서 1번이 무엇인가요.
메뉴얼에는 1번이 전혀 없습니다..
-
KrteamENT
2014.03.22 15:04
위에서 했듯이 똑같이 추가해달라는 말입니당.
-
KTK
2014.03.22 15:10
프로젝트를 다시 추가하는거에요??
이클립스 상에서 New -> Others -> Android -> Android Project from Existing Code선택 후 Android/PushExample 선택 후 추가
위방법을 똑같이해서 하는건가요??
-
KrteamENT
2014.03.22 15:13
후자입니다.
-
KTK
2014.03.22 15:15
.... 후자입니다에서.. 후자가 어떤방법이에요 ㅡ.ㅡ;;
-
KTK
2014.03.22 15:18
앱 세팅
이클립스 상에서 New -> Others -> Android -> Android Project from Existing Code선택 후 Android/PushExample 선택 후 추가. (이부분은 새로운 프로젝트를 생성하라는건 알겠습니다!)
1과 같은 방법으로 ActionBar-PullToRefresh-0.9.2/library와 ActionBar-PullToRefresh-0.9.2/extras/actionbarcompat을 각각 추가(이부분을 모르겠습니다 1번과 같은 방법을 알고싶습니다. 1번과 같은 방법이 무엇인가요..)
1과 같은 방법으로 (안드로이드 SDK 위치)/extras/android/support/v7/appcompat을 추가.
(이부분을 모르겠습니다 1번과 같은 방법을 알고싶습니다. 1번과 같은 방법이 무엇인가요..)
정말 죄송합니다.
답변을 보면... "해당방법이 맞습니다."란 말씀과..
"후자입니다."라는 말씀이 있는데요..
바쁘시지 않으시면.. "해방방법"과 "후자"라는 방법을 알려주시면 감사하겠습니다 ㅠㅠ
메뉴얼상 1번과 같은 방법대로 하라고 했는데..
정작 1번과 같은 방법을 모르겠습니다...
1번과 같은 방법좀 알려주시면 감사하겠습니다..
-
KrteamENT
2014.03.22 15:18
이클립스 상에서 New -> Others -> Android -> Android Project from Existing Code선택 후 Android/PushExample 선택 후 추가.
입니다.
-
KTK
2014.03.22 15:22
새프로젝트는 생성했습니다..
그럼..
• 1과 같은 방법으로 ActionBar-PullToRefresh-0.9.2/library와 ActionBar-PullToRefresh-0.9.2/extras/actionbarcompat을 각각 추가
• 1과 같은 방법으로 (안드로이드 SDK 위치)/extras/android/support/v7/appcompat을 추가.
위 두가지가.. 각기 다른 프로젝트로... 생성되게 됩니다... 이게 맞습니까? ㅜㅜ 이해가 안되서요
맞는 방법인가요?
New -> Others -> Android -> Android Project from Existing Code선택 후 ActionBar-PullToRefresh-0.9.2/library와 ActionBar-PullToRefresh-0.9.2/extras/actionbarcompat 추가
New -> Others -> Android -> Android Project from Existing Code선택 후 (안드로이드 SDK 위치)/extras/android/support/v7/appcompat추가.
그럼 총 3개의 프로젝트가 생성됩니다.. 맞나요 ㅠ???
-
KrteamENT
2014.03.22 15:24
흠....몇일후에 영상 만들어서 팁게에 올려드릴테니..그때 해보세요..^^;;
-
KTK
2014.03.22 15:42
감사합니다... 자꾸질문드려 죄송합니다.
-
KrteamENT
2014.03.19 07:22
실상 앱소스를 공개하기엔 너무 큰 손실이 아닌가 싶습니다.
덕에 피드백은 많아져서 좋군요 :) -
KTK
2014.03.29 00:49
덕분에.. 하이브리드 앱을 만들어 볼 수 있었습니다!! 감사합니다.. 한가지 질문이 있습니다. 혹시.. 앱 상단 매뉴바를 하단으로 내리고자 할 때에는 어떻게 해야 할 까요?
-
레드붓
2014.03.31 11:56
@KrteamENT님 db상에 obid 값이 전달되는것 같지 않습니다. 이런경우는 어떻게 해결해야 할까요?
parse쪽에서 푸쉬노티로 단체로 날리면 해당 기기로 전송이 되는것을 확인했는데 웹상에서 쓴 댓글이나
쪽지는 푸쉬가 전혀 작동하질 않고있네요. db를 확인해보니 obid값이 들어오지 않고 있구요..
-
KrteamENT
2014.03.31 17:15
@레드붓
obid값의 경우 사용하고 계시는 DB환경과 프로그래밍값이 맞는지 확인부탁드리겠습니다 -
레드붓
2014.04.01 11:57
안녕하세요. 우선 답변 감사드립니다.
현재 사용하고 있는 DB환경이 mysql 이고 utf8_genenal_ci 로 되어있습니다. 말씀해주신 프로그래밍값과 맞는지는
어디서 확인을 해봐야하는걸까요...? 죄송합니다. (__)
@KrteamENT
-
KrteamENT
2014.04.01 12:12
@이상하네요.
그러면 xe_member DB에 obid값을 생성해서 테스트해보세요 -
레드붓
2014.04.01 13:11
@KrteamENT
paser.com 에서 생성된 objectID 값을 db에서 수동으로 obid 값으로 넣어두고 확인하니 잘들어오네요
아마도 세션에서 물고있을때에 db쪽으로 전달이 안되는것 같습니다만..ㅠㅠ
로그인방식에서 인증세션을 사용함으로 체크해도 obid값이 들어오질 않네요
-
KrteamENT
2014.04.01 14:25
@레드붓
이건 제 프로그램이 아니라서..ㅜㅜ -
제민이
2014.04.16 23:21
순서대로 작업후 마지막 이클립스에서 임포트 할때 컴파일에러가 뜨면서 진행이 안되는데요.
sdk나 프로그램 버전이 안 맞아서 그런가요?
-
webgori
2014.06.14 00:17
진행하면서 주의할점 알려드립니다.
01. 안드로이드SDK(앱 개발시 Eclipse 연동에 필요함) 경로 android-sdk\extras\android\support\v7\appcompat
02. Manual.docx 파일을 읽고, 해당 경로의 프로젝트들을 Eclipse로 Import 한다.
03. PushExample 프로젝트를 제외한 모든 프로젝트(actionbarcompat, android-support-v7-appcompat, library)는 프로젝트 오른쪽 버튼 클릭 - Properties - Android탭 - Is Library 체크.
04. actionbarcompat 프로젝트는 library, android-support-v7-appcompat를 Add하여 라이브러리로 사용.
05. android-support-v7-appcompat, library 프로젝트는 추가 안하고, Is Library 체크만.
06. PushExample 프로젝트는 Is Library 체크 안하고, library, actionbarcompat Add(추가)
07. com.gunmania.pushexample 패키지 - MainActivity.java 파일의 138라인(단축키 Ctrl + L) action_exit, action_share, action_setting 쪽에서 에러가 날텐데, Switch문과 같은줄에서 Ctrl + 1 누르면 else if 자동 바꾸기 권유나옴. (메뉴얼 맨 밑에 있어서 못볼까봐 적었습니다..)
07.Android library projects cannot be launched. PushExample 프로젝트 Is Library 체크가 되어있어서 나오는 오류. 체크 안하고 사용할 라이브러리 Add만 해놓으면 됩니다. (이것때문에 삽질함..)
08. 샘플 패키지명, 앱 이름 변경시 pushExample로 전체파일 검색해서 변경 (menu폴더의 main.xml pushexample:showAsAction은 제외해도 됨)
버그
01. 첫 앱 실행시 objectid가 비어있는데 기본값이 null임. 그래서 첫 앱 실행하고 로그인을 하게되면 null값을 회원정보 obid 필드에 업데이트함. 기존 로직은 null이면 -> obid를 생성하고 백그라운드모드로 parse.com 서버에 저장 -> http://도메인/?m=1&obid= + objectId(지금은 null)로 셋팅 -> 로그인 -> DB에 obid가 null로 들어감.
이것을 아래와 같이 수정.
null이면 -> obid를 생성하고 백그라운드모드로 parse.com 서버에 저장 -> parse.com 서버로부터 obid를 앱으로 받아옴 -> http://도메인/?m=1&obid= + objectId(parse.com으로 받아온 obid)로 셋팅 -> 로그인 -> DB에 obid가 제대로 들어감.
수정 방법.
MainActivity.java 106라인
@Override public void done(com.parse.ParseException arg0) { try { ParseInstallation.getCurrentInstallation().refresh(); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } objectId = ParseInstallation.getCurrentInstallation().getObjectId(); SiteView.loadUrl("http://meltyway.kr/xe/?m=1&obid=" + objectId);
아쉬운점01. 푸시가 오는데 해당 푸시 누르면 그냥 앱이 실행됨. (댓글이 달린 글로 이동되지 않음.)
이상 경험담이었습니다..
-
Gunmania
2014.07.04 10:17
Parse 라이브러리 업데이트 이전(아마 v1.5.0 이전으로 기억합니다)에는 refresh 없이 done 내에서 처리만 해줘도 별 문제가 없었는데 그 이후에 가끔 null이 들어갈 때가 있더군요.
-
판디노
2014.06.18 18:08
우선....감사합니다...
parse Anddroid SDK 버전이 1.5.1 이면 에러가 발생하는데... 현재 parse.com에서는 v1.5.1 만 다운 받을 수 있네요...
혹시 v1.4.1버전 다운받을수 있을까요?
-
Heison
2014.06.18 18:46
https://github.com/ParsePlatform/ParseQueryAdapterTutorial/blob/master/libs/Parse-1.4.1.jar
여기서 View Raw 하시면 다운로드 가능합니다.
하지만 시간이 된다면 직접 수정해보시는게 좋아요 -
판디노
2014.06.19 09:28
넵...감사합니다.
시간이 촉박해서....머리 쥐어뜯고 있습니다...앱은 처음이라...공부할것도 많고....
이번꺼 끝내놓고 해볼려고 합니다.
-
webgori
2014.06.19 12:31
저는 1.5.1에서 정상 작동 확인했습니다.~
-
Gunmania
2014.07.04 10:18
1.5.1에서도 동작합니다만 manifest의 수정이 필요합니다. 곧 수정해서 커밋하겠습니다.
-
판디노
2014.07.04 11:40
넵 감사합니다...
-
K.Soma
2014.06.21 11:28
ㄷㄷ 하네요
-
jkx08q
2014.08.27 23:49
obid가 등록된 사용자가 작성한 글에는 댓글을 달았을때 바로 뜨지 않고 새로고침해야 댓글이 보입니다 .
ncenterlite.controller.php를 원본파일로 바꾸었을때는 댓글이 정상적으로 작동합니다
모듈이 작동하지 않는 것 같은데 원인이 뭔지 모르겠습니다 ㅜ
-
Gunmania
2014.09.01 17:03
일단 제 경우에는 그런 문제는 없었습니다. 수정하면서 추가되는 부분이 푸시 발송인데 서버에서 이 과정을 처리 못하는게 아닐까요...
-
jkx08q
2014.08.28 01:09
한 기기는 오직 한 가지의 obid만을 생성하는 것 같습니다.
어플이 설치된 기기 하나를 가지고 여러 계정에 접속했을때(로그아웃후 다시 접속) 모두 같은 obid가 생성됩니다. 각 계정마다 고유한 obid가 부여되야 하는 것 아닌가요?
물론 모든 계정이 각각 고유한 기기를 가지고있고 그 기기만을 사용한다면 문제가 발생하지 않겠지만, 친구 기기로 접속을 한다던지 원래 사용하던 기기가 아니라 다른 기기로 로그인해버리면 문제가 발생할 것 같습니다.
--
http://www.xpressengine.com/tip/22379488 이 글을 자세히 읽어보니 obid가 계정 고유가 아니라 기기 고유군요..;
-
큰돌♡
2014.08.29 01:20
고맙습니다. 안 그래도 XE와 연동되는 하이브리드 앱을 만들어야 하는데 참고가 되겠네요. -
Developer's
2015.05.07 03:09
XE파일은 뭐고 Android파일은 뭐인가요? XE는 그냥 FTP서버 업로드 시키고 Android파일은 빌드하면되나요?
뭔가 엄청난게 올라왔군요.