개발자 블로그

구글의 RECEIVE_SMS 퍼미션 제거 권고 대응 본문

프로그래밍/안드로이드

구글의 RECEIVE_SMS 퍼미션 제거 권고 대응

로이드.Roid 2018. 12. 30. 13:45

권고(?)라는 표현이 맞을지는 모르겠다. 그냥 강제사항이라고 보면 될 것 같다.

SMS 앱.. 그러니깐 문자메시지 앱이 아닌 앱의 경우에는 RECEIVE_SMS 퍼미션을 제거해야 된다. 자세한 내용은 아래 링크를 참조.

https://support.google.com/googleplay/android-developer/answer/9047303?hl=ko


내가 대응한 부분은 본인확인을 위한 인증코드를 자동입력 해주는 부분이다. 게임 앱이기 때문에 SMS 관련된 기능은 전혀 없지만 처음 게임 시작할 때 본인확인 하는 부분에서만 사용하고 있었다. 

일단 RECEIVE_SMS 권한은 제거 해야 된다. 그리고 인증코드 자동입력은 새롭게 추가된 "SMS Retriever API"를 사용하면 퍼미션 선언 없이도 기존처럼 자동입력을 사용할 수 있다.

근데 몇 가지 문제가 있다. 그래서 아직 앱에 적용은 못 한 상황이고. 그 이야기를 해보려고 한다.

일단 링크부터.. SMS Retriever API 관련 링크다.

https://developers.google.com/identity/sms-retriever/overview


구현은 어려울게 없는데 몇 가지 제약사항이 있다.

1) Play Service 버전 10.2 이상
2) SMS 텍스트 시작은 "<#>"로 시작되어야 함
3) SMS 텍스트 마지막은 11자리 해시코드로 끝나야 함

그냥 보면 별 것 아닌 것 같은데.. 사실 2번 조건은 만족할 수가 없다. 왜냐하면 웹에서 문자를 보내면 통신사에서 자동으로 "[Web발신]"이라는 텍스트를 문자의 제일 앞에 붙이기 때문이다.

그래도 '혹시나..' 하는 마음으로 테스트를 해봤는데 문자 내용 앞에 "[Web발신]"이 붙어도 정상적으로 리시버가 호출 된다. 가이드에 나온 조건을 만족하지 못하는데도 되긴 된다. 

근데 문제는 문자 발송 서버. 내가 서버쪽 담당이 아니라서 이 부분은 잘은 모르는데 서버 개발자 말로는 "<", ">" 이 문자들이 있으면 문자 발송이 안된다고 한다. 이건 회사에서 사용하는 문자 발송 업체의 API 문제인지도 모르겠다. (관리자 콘솔에서는 보내진다던데..)


당장 내년(2019년) 1월 9일까지 대응을 해야되기 때문에 자동입력은 그냥 스킵하고 일단 RECEIVE_SMS 권한만 제거하고 릴리즈 한 상태다. 개인적인 생각으로는 인증 문자 앞뒤로 사용자가 이해할 수 없는 문자들이 붙는것도 마음에 안들고.. "[Web발신]" 이거 때문에 가이드에 명시한 조건도 만족 못하는 상황이라서.. 그냥 안하는게 낫지 않나 싶다. 

문자 오면 어차피 바로 알림으로 화면에 내용이 뜨기 때문에 앱 전환이 필요한 것도 아니니깐. 근데 이건 내 앱이 아니라서.. 해달라는 대로 해야지 뭐.


11자리 해시코드는 "keytool" 커맨드를 사용해서 얻을 수 있다. 프로그래밍 방식으로 구하려면 여기를 참조.

구현 코드는 위에 링크에 다 있기 때문에 생략하고.. build.gradle 파일에 아래 코드를 추가하줘야 된다.

    implementation 'com.google.android.gms:play-services-base:16.0.1'
    implementation 'com.google.android.gms:play-services-auth-api-phone:16.0.0'


Comments