티스토리 뷰


많은 Android 개발자 및 서버개발자분들이 고민하시는게 푸쉬서버를 구지 만들어야 할까? 어디 쓸만한 서비스 없을까? 입니다

푸쉬서버 및 푸쉬발송 시스템(관리자)등을 구축하는건 어려운건 아니지만 손이 많이가죠

안드로이드/아이폰/관리자 등 만들어야하고 수많은 예외가 필요하기 때문에 쉽지는 않죠

특히나 스타트업같은 경우는 시간이 금이고 개발력이 부족하기 때문에 더 어렵구요


그래서 선택한게 FaceBook 의 Parse 입니다.

Parse는 Baas 서비스이구요, FaceBook이 2013년에 인수한 서비스입니다.


이글을 시작으로 당분간 Parse를 이용한 푸쉬서비스 구축에 대해 써보려고 합니다.

푸쉬에 대한 부분만 이야기할거구요 Parse의 모든기능은 다루지 않을겁니다


일단 제가 푸쉬만 사용하는 이유는 아래와 같습니다.

( 지극히 개인적인거 )

1. 회원정보를 이용한 데이터 변조가 잦고 많다

2. 기록하는 데이터가 많고 유동적이다.

3. 데이터 분석을 위해 항상 조회한다.

4. 대부분의 Baas가 그러하듯 상당히 제한적이다


그래서 월 100만건 푸쉬발송이 무료이고 추가로 100만건당 50불정도 하기때문에 푸쉬기능만 사용하기로 했습니다.



1.  라이브러리 추가

 - 먼저 www.parse.com 에서 라이브러리를 다운받아 프로젝트에 넣습니다


- 그리고 아래와 같이 build.gradle에 라이브러리를 import시켜줍니다



2.  Parse  초기화

- 라이브러리를 정상적으로 넣으시고 sync까지 하셨다면 을 Application 상속받은 클래스의 onCreate에 아래와 같이 Parse를 초기화 해줍니다


PARSE_API_KEY1 :  Application ID

PARSE_API_KEY2 :  Client Key



3. AndroidManifest.xml 수정

- Parse는 다양한 권한을 사용하고 GCM을 사용하기 떄문에 리시버등을 등록해주셔야 합니다

<service android:name="com.parse.PushService" />
<receiver android:name="com.parse.ParseBroadcastReceiver">
  <intent-filter>
    <action android:name="android.intent.action.BOOT_COMPLETED" />
    <action android:name="android.intent.action.USER_PRESENT" />
  </intent-filter>
</receiver>
<receiver android:name="com.parse.ParsePushBroadcastReceiver"
    android:exported="false">
  <intent-filter>
    <action android:name="com.parse.push.intent.RECEIVE" />
    <action android:name="com.parse.push.intent.DELETE" />
    <action android:name="com.parse.push.intent.OPEN" />
    </intent-filter>
</receiver>
<receiver android:name="com.parse.GcmBroadcastReceiver"
    android:permission="com.google.android.c2dm.permission.SEND">
  <intent-filter>
    <action android:name="com.google.android.c2dm.intent.RECEIVE" />
    <action android:name="com.google.android.c2dm.intent.REGISTRATION" />

     <category android:name="최상위 패키지명을 입력하세요" />
  </intent-filter>
</receiver>

- 권한 추가

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
 

<permission android:protectionLevel="signature"
    android:name="최상위 패키지명.permission.C2D_MESSAGE" />
<uses-permission android:name="최상위 패키지명.permission.C2D_MESSAGE" />


여기까지 따라하셨다면 테스트 Push를 발송해봅니다


4. 정상적으로 Parse에 사용자 정보가 등록되는지 확인 

   - http://www.parse.com 에 로그인합니다

   - Core > Data > Installation 에 들어가봅니다



위 사진처럼 사용자가 등록되어 있어야 정상입니다. 만약 등록이 안되어있다면 다시 처음부터 해보세요



5. 푸쉬발송 테스트

- Push 탭으로 이동합니다


- Send a push를 눌러줍니다


- 테스트이므로 따로 정규식은 적용하지 않았습니다.

- This will be sent to n devices 가 나오면 정상입니다. 이때 등록된 기기가 있다면 숫자가 그에 맞게 변하겠죠?




- 이제 기본으로 푸쉬를 발송해봅니다. 정상적으로 수신되면 끝입니다~


이렇게 안드로이드에 기본푸쉬기능을 붙여보았습니다.

다음글에서는 JSON 형태로 푸쉬를 수신하고 처리하는 방법에 대해 이야기 해보도록 하겠습니다


감사합니다 :)







댓글
  • 프로필사진 개발자 2.Parse 초기화 의 부분에서
    입력한 이후의 코드 전문을 알 수 있을까요? 저부분만 onCreate에 입력하니 작동이 되질 않습니다.
    2015.09.09 13:55 신고
  • 프로필사진 BlogIcon 이용범 Lee Yongbeom // init parse
    Parse.initialize(getApplicationContext(), PARSE_API_KEY1, PARSE_API_KEY2);
    /* parse objectId save method :: use callback */
    ParseInstallation.getCurrentInstallation().saveInBackground(new SaveCallback() {
    @Override
    public void done(ParseException exception) {
    if (exception == null) {
    parseObjectId = ParseInstallation.getCurrentInstallation().getObjectId();
    PentuiLogWriter.v("### parse objectId ### - global", parseObjectId);
    }
    }
    });

    이렇게 하셔서 로그를 한번 확인해보시겠어요?
    Application 을 상속받은 클래스에서 초기화 해주셔야 하구요
    2015.09.10 11:07 신고
  • 프로필사진 주니 글 잘 읽었습니다.
    다음글은 어디있나요?
    2016.11.23 11:22 신고
  • 프로필사진 BlogIcon 이용범 Lee Yongbeom Parse 서비스가 종료되어 추가적인 글을 작성하지 않았습니다.
    차후 Onesignal로 동일한 포스트를 작성하도록 하겠습니다 :)
    2017.01.20 16:11 신고
댓글쓰기 폼