개발자 블로그
구글의 RECEIVE_SMS 퍼미션 제거 권고 대응 본문
권고(?)라는 표현이 맞을지는 모르겠다. 그냥 강제사항이라고 보면 될 것 같다.
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'
'프로그래밍 > 안드로이드' 카테고리의 다른 글
ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 시스템 대화상자 (4) | 2019.05.15 |
---|---|
내 안드로이드 스튜디오 선호 설정 (0) | 2019.03.31 |
Chrome Custom Tabs 사용 시 Referrer 기록하기 (0) | 2018.07.17 |
Google Play 새로운 권한 추가됨 - android.permission.READ_PHONE_STATE 문제 해결 (3) | 2018.03.24 |
파일이름으로 사용불가능한 특수문자 제거하기 (0) | 2018.01.25 |