Things take time

[Android] SMS & Call Log 사용금지?? (구글 플레이스토어 리젝 사유) 본문

Android(Error)

[Android] SMS & Call Log 사용금지?? (구글 플레이스토어 리젝 사유)

겸손할 겸 2019. 2. 11. 17:42

[리젝]


안드로이드 앱 관련 리젝 메일을 받았다.

내용은 다음과 같다.

We reviewed your app and found that it does not qualify for use of the requested permissions.

The declared functionality {Default SMS handler (and any other core functionality usage while default handler)}  is determined to be unnecessary or not aligned with the core functionality of your app.

Next steps: Submit your app for another review	
1.	Read through the Permissions policy and the Play Console Help Center article, which describes intended uses, exceptions, invalid uses, and alternative options for use of Call Log or SMS permissions.
2.	Make appropriate changes to your app.
3.	Sign in to your Play Console and submit the update to your app.

요청한 권한들의 사용에 적합하지 않다가 내용이다.

내가 앱을 제출할 때, 선택한 기본 SMS 핸들러는 실제 필요하지 않거나, 핵심기능으로써 허용될  수 없다는 것이다.


권한 정책 관련을 읽어라, 앱을 적절히 변환하라, 재 제출하라가 요지이다.


해당 관련 외국 문서들을 찾아보니 문제가 많더라.


어떤 포스트에서는 켈베로스인가? 어디에선 이것저것 계속 시도해보다 결국 다 뺐다고 하고, 어디는 소송도 준비중이라고하더라.


이전 권한부터, 파일 프로바이더(content uri) 등등 여러 보안 이슈를 생각하니, 어쩌면 맞는 이야기같기도 하다. 실제 앱 자체가 SMS를 사용해야하는 앱들은 양식을 제출하면 되는 것 같은데, 나는 안되나보다(!).



[상황]


현재 플레이스토어에 제출한 앱의 유형은 2가지


1. 하이브리드 앱

2. 메신저 앱


결국 둘 다 리젝이긴 했는데, 내가 사용하는 권한 중 READ_SMS와 SEND_SMS 때문이다.


두 앱 모두, 앱을 처음 설치 및 실행했을 때 핸드폰 번호 인증이 필요한데, 사용자 편의를 위해 서버에서 인증번호를 발송했을 경우, 문자 메시지를 받았을 때 이를 캡쳐하여, 번호를 자동 입력해주는 기능이었다. 그러므로 여기서 동적 리시버를 활용하기 위한 READ_SMS


그리고 메신저 앱에서는 해당 회원에게 문자로 어플을 홍보하기 위한 문자 발송의 SEND_SMS.



[해결 상황]


https://proandroiddev.com/no-more-sms-call-log-permissions-now-what-9b8226de7827


해당 포스팅을 찾았다.



1. 리시버를 활용한 문자 캐치 => 해당 기능 삭제 : iOS는 기본적으로도 제공하지 않는 기능이다. 그냥 안드로이드도 안전하게 삭제.


2. 문자메시지 발송

=> 실제 발송하는 기능을 사용하지 않고, 문자 앱을 실행시키고, 그 내용과 대상만 전달해준다. 전송은 하지 않는다.


아마 Intent에 ACTION_SEND의 액션으로 넣어져 있을 텐데, 이를 ACTION_SENDTO로 사용한다.

String mpNumList = "sms:"; for (int i = 0; i < userMpNumList.size(); i++) { mpNumList += userMpNumList.get(i) + ";"; } Uri smsUri = Uri.parse(mpNumList); Intent intent = new Intent(Intent.ACTION_SENDTO, smsUri); intent.putExtra("sms_body", "문자의 내용에 들어갈 텍스트"); startActivity(intent);

기본적으로 ACTION_SENDTO에 Uri값으로 해당 전화번호를 넘긴다.


이 때, 전화번호가 2개 이상인 경우에는 양식이 sms:01012345678;01098765432; 이런식으로 세미콜론이 중간에 들어가 줘야 한다.

그리고 sms_body의 값을 인텐트에 넣어 주면 끝!




이렇게 제출하면, 민감 권한 관련 내용은 사라졌다.

출시도 정상적으로 돌아갔다. 해결.