오늘 SkyCloset의 Release버전을 처음으로 테스트해봤는데,
SplashScreen에서 HomeScreen으로 화면전환이 되지 않았다.
원인을 살펴본 결과 _getWeather()
함수에서 isLoaded state를 true로 업데이트 해주지 못하고 있었다.
this.fetch_retry(`http://openapi.airkorea.or.kr/openapi/services/rest/ArpltnInforInqireSvc/getMsrstnAcctoRltmMesureDnsty?stationName=${json5.list[0].stationName}&dataTerm=daily&ServiceKey=${airkoreaKey}&ver=1.0&_returnType=json`, 10)
.then(response6 => response6.json())
.then(json6 => {
this.props.onSetDust(json6.list[0]);
this.setState({isLoaded: true}); // 작동 안 함!!
})
})
2020/09/19 추가 : 문제가 정말 많은 코드네요.. 😱
검색결과 Android Pie부터 HTTP 연결이 막혔다
고한다!! 참고링크
하지만 다행히도 수동으로 특정 URL에 대한 접근을 허용할 수 있다.
특정 URL에 대한 HTTP request 허용하는 법
android/app/src/main/res/xml/network_security_config.xml
파일을 다음과 같이 생성한다.
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">insecure.example.com</domain>
<domain includeSubdomains="true">insecure.example2.com</domain>
</domain-config>
</network-security-config>
(insecure.example.com 부분에 접속할 url을 입력하면된다.)
android/app/src/main/res/AndroidManifest.xml
파일에 다음 코드를 추가해준다.
<application
...
android:networkSecurityConfig="@xml/network_security_config">
추가)
아래와 같은 방법으로 모든 url에 대한 http 접속을 허용할 수 있으나, 보안상의 이유로 추천하지 않는다.
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>