개인정보처리방침

기타 2020. 2. 17. 09:54

고인돌 한국사 -개인 정보 취급방침

장봉준(The 28.5)`은 (이하 '회사'는) 고객님의 개인정보를 중요시하며, "정보통신망 이용촉진 및 정보보호"에 관한 법률을
준수하고 있습니다.

회사는 개인정보취급방침을 통하여 고객님께서 제공하시는 개인정보가 어떠한 용도와 방식으로 이용되고 있으며, 
개인정보보호를 위해 어떠한 조치가 취해지고 있는지 알려드립니다.


관계 법령 및 개인정보 취급방침에 따라 사용자 개인정보 보호에 최선을 다합니다. 

■개인정보의 수집 및 이용목적
고인돌 한국사 앱에선 회원가입을 받지 않기 때문에 개인정보를 수집하지 않습니다.

■개인정보의 보유 및 이용기간
개인정보를 이용하지 않습니다.

■개인정보 수집방법
개인정보를 보유하지 않습니다.

■개인정보의 파기 절차 및 방법
개인정보를 수집, 이용, 보유하지 않습니다.

■개인정보 공유 및 제3자 제공
개인정보를 공유 및 제3자에게 제공하지 않습니다.
 

■개인정보에 관한 민원서비스

회사는 고객의 개인정보를 보호하고 개인정보와 관련한 불만을 처리하기 위하여 
아래와 같이 관련 부서 및 개인정보관리책임자를 지정하고 있습니다.

개인정보관리책임자 : 장봉준

이메일 : un-god9@hanmail.net

귀하께서는 회사의 서비스를 이용하시며 발생하는 모든 개인정보보호 관련 민원을 개인정보관리책임자
혹은 담당부서로 신고하실 수 있습니다. 회사는 이용자들의 신고사항에 대해 신속하게 충분한 답변을 드릴 것입니다.

기타 개인정보침해에 대한 신고나 상담이 필요하신 경우에는 아래 기관에 문의하시기 바랍니다.
1.개인분쟁조정위원회 (www.1336.or.kr/1336)
2.정보보호마크인증위원회 (www.eprivacy.or.kr/02-580-0533~4)
3.대검찰청 인터넷범죄수사센터 (http://icic.sppo.go.kr/02-3480-3600)
4.경찰청 사이버테러대응센터 (www.ctrc.go.kr/02-392-0330)

Posted by IT스피드웨건
,

Android FCM 기능 추가

Android 2017. 10. 9. 03:17

회사에서 실시간 푸시관련 프로젝트(라이브러리)를 진행하던 도중 서드파티 앱에 FCM을 지원하는 앱이면 BroadCast를 보내 메세지 내용과 타이틀 이미지, url등을 FCM으로 노티해주는 기능을 추가해 달라고 하여 샘플앱에 FCM기능을 추가해서 테스트를 진행해야하기에 사용해보았다.

우선 FCM이란 구글에서 제공하는 Notification 서비스로 Firebase Cloud Messaging 의 약자로 

https://www.googleadservices.com/pagead/aclk?sa=L&ai=DChcSEwij18KzuuHWAhVTCioKHeK1AA0YABAAGgJ0bQ&ohost=www.google.co.kr&cid=CAESQeD2LW90pk88BouhP2ZqRejoS62NLJ4J_77dAAwauOQeAUZQbSMUq8kbTb7azM85pTkPKz15Ja-OGf3_lBCPL3Yd&sig=AOD64_03vJRiAw5JS87bvZl4-El0evuvwg&q=&ved=0ahUKEwiJib6zuuHWAhXKq5QKHd0bDLMQ0QwIIw&adurl=

위 url에서 자세히 확인할 수 있다.


우선 사용하면서 느낀 FCM의 장점으로는 즉각적으로 빠른 푸시가 가능하며 Token ID로 타겟팅이 가능하며 이용하기 간편하다. 앱내에서도 코딩이 크게 필요하지도 않고 서버를 구축하여 보내는 방법과 FCM 콘솔사이트 https://console.firebase.google.com/ 에 등록 후 발송이 가능하다.

관계없는 이야기지만 여기서 힘들었던 점은 서버를 구축시 방화벽 문제로 방화벽 오픈을 해야하는데 FCM은 도메인기반 발송이라 ip기반으로 방화벽을 오픈신청해야하는데 이 부분에서 조금 이슈가 있었다. 아무래도 구글이다 보니 서버가 워낙 방대하여 ip로 오픈은 수백개라 이쪽을 신청할 바에 사정을 이야기해서 오픈하기를 바란다...

이 글에서는 FCM 서버 구축보다 앱에서 FCM을 사용하는 방법을 다루겠다.

우선 서버를 사용하지 않고 FCM콘솔 사이트만을 이용한다는 가정하에 진행하겠다.

위에 콘솔사이트에 접속하여 프로젝트를 등록해준다.


프로젝트를 등록해주면 아래와 같이 나오는데 여기서 Android를 사용할것이기에 Android앱에 Firebase추가를 클릭한다.

그럼 아래와 같은 창이 나온다. 




여기서 패키지이름은 안드로이드 앱의 패키지이름을 입력해주고 나머지는 선택사항이니 입력하지 않아도 무방하다. 하지만 여기서 뭔가 입력하지 않으면 불안하기에 무엇인지 한번 살펴보았다. 앱 닉네임은 패키지명으로 보기 싫고 내가 정한 이름으로 보고 싶은 이름이 있는 경우 그걸로 입력해주면 된다.

그 아래에 있는 디버그 서명 인증서는 인증에서 동적 링크, 초대, Google 로그인, 전화번호를 지원하는 데 필요합니다. 설정에서 SHA-1을 수정하세요. 


라고 적혀있는 것을 볼 수 있다. 뭔진 잘 모르겠지만 불안하니 ?에 마우스를 가져다 대고 저 페이지를 참조해봤다. 

이렇게 자세히 나오니 명령어 창을 열고 입력해보았다. 입력시 주의할 점은 

keytool -exportcert -list -v \ 를 입력후 엔터치고 그다음을 이어서 입력해야한다.

입력하고 비밀번호 입력하면 아래와 같이 출력이 된다.


키값은 가렸다... 내 정보는 소중하니깐..

여기서 출력된 SHA1을 복사하여 붙여넣기해준다.



앱 등록을 누르면 아래와 같이 나오는데 여기서 json을 다운로드 받고 안드로이드 앱에 app에 추가해주면 된다.



그리고 계속을 눌러 설명과 같이 안드로이드 앱 Gradle에 추가해주면 사용준비는 어느정도 끝난다.



이제 FCM콘솔과 앱에 등록은 끝났다. 이제 안드로이드 앱에 코드를 추가해보자.

자세한 내용은 https://firebase.google.com/docs/cloud-messaging/android/client?hl=ko 을 참조하면 설명이 잘나와있다.

우선 AndroidManifest에 서비스를 등록해준다.

<service
   
android:name=".MyFirebaseMessagingService">
   
<intent-filter>
       
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
   
</intent-filter>
</service>

기본적으로 포그라운드, 데이터 페이로드 수신 등은 위 서비스만 등록해도 무방하고 특정 기기나 그룹에 전송하길 원할 경우 아래 코드도 추가해준다.

<service
   
android:name=".MyFirebaseInstanceIDService">
   
<intent-filter>
       
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
   
</intent-filter>
</service>

이렇게 서비스를 등록해줬지만 FCM메세지 발송은 Gradle에 추가해준 것만으로도 발송이 가능하다.

위와 같이 등록을 했으면 FCM 콘솔사이트에서 Notifications 메뉴를 눌러 



위와 같이 앱을 선택해주고 메시지 보내기를 하면 앱이 백그라운드에 있을 경우 노티가 되는 것을 확인 할 수 있다.

포그라운드일 경우에도 알려주고 싶은 경우 위에서 등록한 메세징 서비스를 이용하여 적용할 수 있다.

클래스에 FirebaseMessagingService를 상속 받아 사용했다.


public class MyFirebaseMessagingService extends FirebaseMessagingService {

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
}

}

여기서 FCM을 수신하면 onMessageReceived가 호출되기에 포그라운드에서 적용시켜줄려면 여기에 적합한 코드를 입력해주면 된다.

여기서 백그라운드와 포그라운드의 호출 및 처리가 궁금할 수 있다. 아래 내용을 참조하자.


앱 상태알림데이터모두
포그라운드onMessageReceivedonMessageReceivedonMessageReceived
백그라운드작업 표시줄onMessageReceived알림: 작업 표시줄
데이터: 인텐트 부가 정보


여기서 알림 즉 FCM 콘솔에서 발송한 메세지는 포그라운드에 있을 경우 onMessageReceived를 호출하고 백그라운드에 있을 경우는 발송한 내용으로 바로 작업 표시줄에 알림표시가 뜬다. 

나는 여기서 테스트를 했을 때 백그라운드와 포그라운드가 일치하지 않아서 맘에 들지가 않았다. 그래서 애초에 발송할때 데이터로 키 밸류형으로 콘솔에서 발송하여 포그라운드나 백그라운드나 동일하게 표시되도록 onMessageReceived에서 처리를 했다.

public class MyFirebaseMessagingService extends FirebaseMessagingService {

// [START receive_message]

@Override

public void onMessageReceived(RemoteMessage remoteMessage) {

//추가한것

sendNotification(remoteMessage.getData().get("message"));

}

private void sendNotification(String messageBody) {

Intent intent = new Intent(this, MainActivity.class);

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK

| Intent.FLAG_ACTIVITY_CLEAR_TOP

| Intent.FLAG_ACTIVITY_SINGLE_TOP);

PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 , intent, PendingIntent.FLAG_UPDATE_CURRENT);

Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);

NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this).setSmallIcon(R.mipmap.ic_launcher)

.setContentTitle("FCM Push")

.setContentText(messageBody)

.setAutoCancel(true)

.setSound(defaultSoundUri)

.setContentIntent(pendingIntent);

NotificationManager notificationManager =

(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());

}

}

sendNotification에 노티형식은 필요에 따라 수정하면 된다.

여기서 remoteMessage.getData().get("message")에서 message가 키 값이 된다.

FCM콘솔에서 고급옵션을 누르고 맞춤 데이터에 키 값에 알맞은 키 값을 넣고 메세지를 보내면 된다. 타이틀을

설정하고 싶으면 타이틀도 키값으로 전달해 앱에서 받아서

처리해주면 된다.



여기까지 기본적인 FCM을 사용해봤습니다.

궁금하시거나 잘못된 내용은 댓글달아주시면 감사하겠습니다!

Posted by IT스피드웨건
,