안녕하세요.
어제에 이어서 오늘은 앱 강제종료를 일으키는 Request_Permission 에러 해결에 관한 방법을 논의하고자 찾아왔습니다.
1편을 확인하지 못하셨던 분께서는 이 글을 확인하신 후, 2편을 봐주시길 바라겠습니다.
https://cafe.daum.net/vincentarnold/siqS/204?svc=cafeapi
그럼 시작해보겠습니다!!!
에러의 원인을 찾아내다
에러의 원인을 찾아내기 위하여 이전에 Google PlayStore 에 올려놓았던 이전 버전과 새로운 버전 간 차이점을 확인해보았습니다.
이전 버전인 3월 중순에 올렸었던 버전에서는 문제가 없었다가 4월 중순에 올린 버전에서 에러가 발생한 것이기 때문에 이 문제를 확인해 볼 필요가 있었기 때문입니다.
그리하여 앱 성능을 최적화시키는데 필요한 버전 안전성을 확인한 결과..
너무 처참했습니다.
마치 주식 차트를 보듯 떡상했다 떡락했다 이 과정을 반복한 것처럼 말이죠..
결국 앱을 처음 다운로드 받아 저런 에러가 생겨난 이유도 바로 이러한 맥락에서 왔다는 사실을 알게 되었습니다.
더 나아가, 4월 중순이 아닌 3월 중순에 올려놓았던 앱의 버전 안전성을 확인을 해보도록 하겠습니다.
결과는.. 멀쩡했습니다.
분명 3월 중순에서 4월 중순 사이 제가 뭔가 잘못 올렸기 때문에 저런 에러가 발생했을 것 같다는 생각이 들기 시작했습니다.
버전 4는 3월 20일, 최신 버전인 버전 5는 4월 22일에 올렸기 때문에, 3월 20일부터 차례대로 에러가 발생했을 만한 코드를 발견하기 시작했습니다.
Git 에 올린 로그 확인
3월 20일에서 4월 22일 사이에 올린 로그들을 확인하던 중, 이상한 점이 하나 발견되었습니다.
우선 문제가 없었던 3월 21일 오전 11시 27분에 올렸었던 Git Commit 내용 중 하나입니다.
문제가 발생하기 전에는 별 다른 문제가 없었던 것을 확인하실 수 있습니다.
자, 이제 여기서부터 문제가 발생합니다.
그건 바로 이 코드, 3월 21일 오후 4시 24분에 올렸었던 Git Commit 내용 중 일부분의 내용입니다.
지나가던 A 씨 : 아니 이게 뭔 말 같지도 않은 코드야?
지나가던 A 씨 : 어떻게 코드를 이렇게 쓸 수가 있어? 갈아엎어!!!
네, 그래서 갈아엎기로 마음을 먹습니다.
뭔가 크게 잘못 되었기 때문이죠. 분명 저렇게 코드를 작성한다면 문제가 될텐데, 이제서야 고치게 되었습니다.
근데 뭔가 이상합니다..
https://pub.dev/packages/mobile_number/example
Mobile Number 와 관련된 Package 의 Code 입니다.
정말 신기합니다..
Mobile Number Package 에선 하단의 Image 와 같이 쓸 수 있다고 해서 썼는데, 왜 Error 가 터진 것일까요?
이제부터 코드를 하나하나씩 뜯어가며 보도록 하겠습니다.
에러 유발 코드 줄여나가기
이제 제일 중요한 initState 부터 한 번 보도록 하겠습니다.
User Request Permission 을 걸어놓고, Return 값을 받지 못하는 코드를 일단 실행안하겠습니다.
그랬더니 나타나는 현상은..
Request Permission Dialog 가 안뜨는 대신, 내 번호가 나오지 않는군요.
더 나아가 Call 버튼을 누르면 Dialog 가 정상적으로 나오긴 합니다만, 여기서 Allow 를 누르면
다음과 같이 To place a call, enter a valid number 라는 Error Dialog 가 발생하게 됩니다.
그럼 우리가 여기서 알 수 있는 것은 initMobileNumberState 함수 내에서 MobileNumber Package 에서 내 번호를 가지고 올 수 있는 mobileNumber 은 반드시 필요하다는 뜻이고, initMobileNumbeState 함수 내, Error 를 유발하는 코드를 제거한다면 문제를 해결할 수 있다는 사실입니다.
마지막으로, 다음 시간에는 initMobileNumberState 함수 내에서 제공해주는 MobileNumber 를 타고 들어가 Simcard Package 를 알아보는 시간을 가져보겠습니다.
연관된 자료는 함께 하단에 공유하니 참고하시기 바랍니다.
https://pub.dev/packages/mobile_number
https://pub.dev/packages/phone_number
https://stackoverflow.com/questions/70060495/how-to-get-users-phone-number-in-flutter
https://pub.dev/packages/simnumber/example
https://pub.dev/packages/sim_data
https://github.com/flutter/flutter/issues/120005#issuecomment-1418641834
https://github.com/flutter/flutter/issues/120882
뒷이야기는 다음 편에서 계속됩니다.
첫댓글 좋은 정보 감사합니다
감사합니다~
Request_Permission 에러가 앱 강제종료 될 때만 발생하는 에러인가요 ?
넵, 맞습니다. 보통 앱 강제종료 될 때만 발생하는 에러이고, 특히 현재 사용하고 있는 Mobile Phone 에서 직접 SIM Card 번호 및 전화번호를 가지고 올려고 할 때 발생하는 에러입니다.
멋지네요~
감사합니다~