๊ด€๋ฆฌ ๋ฉ”๋‰ด

ruriruriya

[Flutter] ์›น๋ทฐ ์•ฑ Guideline 2.1 - Performance - App Completeness ์˜ค๋ฅ˜ ํ•ด๊ฒฐ ๊ธฐ๋ก ๋ณธ๋ฌธ

๐ŸžDebugging Story

[Flutter] ์›น๋ทฐ ์•ฑ Guideline 2.1 - Performance - App Completeness ์˜ค๋ฅ˜ ํ•ด๊ฒฐ ๊ธฐ๋ก

๋ฃจ๋ฆฌ์•ผใ…‘ 2025. 7. 29. 17:48
๋ฐ˜์‘ํ˜•

์•ฑ ๊ฐœ๋ฐœ์ž๋กœ ์‹ ์ž…์œผ๋กœ ๋“ค์–ด์™€์„œ ์ฒซ ์ถœ์‹œ๋ฅผ ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

์›น๋ทฐ ์•ฑ์ด์—ˆ์ง€๋งŒ ๋งค์šฐ ํ—˜๋‚œํ•œ ์•ฑ์Šคํ† ์–ด ์‹ฌ์‚ฌ๋ฅผ ๋ง› ๋ณด์•˜๋‹ค.

 

1. ๊ณ„์† ๋ฐ˜๋ณต๋˜๋Š” ๋˜‘๊ฐ™์€ ์—๋Ÿฌ ๋ฐ˜๋ ค 

Guideline 2.1 - Performance - App Completeness 

์‹ฌ์‚ฌ์› ๋””๋ฐ”์ด์Šค ํ™”๋ฉด์— ํฐ ํ™”๋ฉด๋งŒ ๋‚˜ํƒ€๋‚˜๋Š” ์ฆ์ƒ์ด์—ˆ๋‹ค.

 

2. ํ•ด๊ฒฐ์„ ์œ„ํ•œ ์‚ฝ์งˆ๋“ค..

2.1. ์ง€์›ํ•˜๋Š” ๋””๋ฐ”์ด์Šค ์ œํ•œ

์ฒ˜์Œ์—” ์•„์ดํŒจ๋“œ๋กœ ์‹ฌ์‚ฌ๋ฅผ ์ง„ํ–‰ํ•˜๊ธธ๋ž˜ ์•„์ดํŒจ๋“œ์—์„œ ๋ฌธ์ œ์ธ๊ฐ€๋ณด๋‹ค ํ•˜๊ณ  ์•„์ดํฐ ์ „์šฉ์œผ๋กœ๋งŒ ๋ฐ”๊พธ์–ด์„œ ๋‹ค์‹œ ์‹ฌ์‚ฌ์š”์ฒญ์„ ํ–ˆ๋‹ค.
(๊ฐœ๋ฐœ ์‹œ ๋ฆด๋ฆฌ์ฆˆ๋กœ๋„ ๋‚ด ๋””๋ฐ”์ด์Šค๋กœ๋Š” ์ •์ƒ์ ์œผ๋กœ ๋‚˜์˜ค๋Š” ๊ฒƒ ํ™•์ธํ•œ ํ›„์— ์‹ฌ์‚ฌ๋ฅผ ๋„ฃ์€ ๊ฒƒ..)

์‹ฌ์‚ฌ์›์ด ๋ณด์—ฌ์ค€ ๋‚ด ์•ฑ ์‹คํ–‰ ์‹œ ์•„์ดํŒจ๋“œ ํ™”๋ฉด

ํ•˜์ง€๋งŒ... ๋˜‘๊ฐ™์€ ํ˜„์ƒ์œผ๋กœ reject..

 

2.2. ์›น๋ทฐ url IP ์ „์„ธ๊ณ„์—์„œ ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ์‹œ์  ํ—ˆ์šฉ

๊ฐ€๋น„์•„ ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๋Š”๋ฐ ๊ทธ ๋‹น์‹œ ๋ณด๋‹ˆ๊นŒ ํ•ด์™ธ ํ—ˆ์šฉ์„ ํ•˜์ง€ ์•Š์•˜์—ˆ๋‹ค.

https://tcp.ping.pe

 

Ping, mtr, dig, TCP port check and real time BGP looking glass from multiple locations

Javascript is required to run this. Javascript support is required in order to use this website

tcp.ping.pe

 

์œ„ ์‚ฌ์ดํŠธ์—์„œ ๋‚˜๋ผ๋ณ„๋กœ ์ ‘์†๋˜๋Š” ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์„œ ํ™•์ธํ•ด๋ณด๋‹ˆ failed ์ง€์˜ฅ..^^

๊ทธ๋ž˜์„œ ๋ฐฉํ™”๋ฒฝ ์ชฝ์—์„œ Any๋กœ ํ—ˆ์šฉ ํ•ด๋†“์•˜๋‹ค.

 

๊ทธ๋žฌ๋”๋‹ˆ successful์ด ๋–ด๋‹ค. ใ… 

 

ํ•˜์ง€๋งŒ  ๋˜‘๊ฐ™์€ ์‚ฌ์œ ๋กœ reject...

 

2.3. ATS NSExceptionDomains ๋„๋ฉ”์ธ๋งŒ ๊ฐ€๋Šฅ

์ด๊ฑธ ์•Œ๊ธฐ ์ „์— ๋‚ด ์›น๋ทฐ ์•ฑ์€ http๋กœ ๋œ IP๋กœ ๋ถˆ๋Ÿฌ์™”์—ˆ๋‹ค.

์•ฑ ์Šคํ† ์–ด ์‹ฌ์‚ฌ ์ •์ฑ… ์ค‘์—๋Š” https๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ธฐ๋ณธ ์›์น™์œผ๋กœ ํ•œ๋‹ค.

ํ•˜์ง€๋งŒ http๋ฅผ ์“ธ ์ˆ˜ ์žˆ๋„๋ก ํŠน์ • ๋„๋ฉ”์ธ๋งŒ ํ—ˆ์šฉํ•˜๋Š” ์„ค์ •์ด ์žˆ์—ˆ๋‹ค.

IP๊ฐ€ ๋ฌธ์ œ์ธ๊ฐ€ ์‹ถ์–ด์„œ ๋„๋ฉ”์ธ์œผ๋กœ ๋ณ€๊ฒฝ ํ•œ ๋’ค์— ์‹ฌ์‚ฌ๋ฅผ ๋„ฃ์—ˆ๋‹ค..

 

ํ•˜์ง€๋งŒ.. ์ด๊ฒƒ ๋˜ํ•œ ๋˜‘๊ฐ™์€ reject...

 

2.4. http header ํ•œ๊ตญ์–ด ์š”์ฒญ์œผ๋กœ ๋ณ€๊ฒฝ

์ด์ฏค ๋˜๋‹ˆ ์ž๊ดด๊ฐ์ด ๋“ค๊ณ  ์•„๋ฌดํŠผ ์ข€ ํž˜๋“ค์—ˆ๋‹ค...

๊ทธ๋Ÿฌ๋‹ค๊ฐ€ ๊ตฌ๊ธ€๋ง์œผ๋กœ ์ฐพ๊ฒŒ๋œ ๋‹จ์„œ!!

์•„์ดํฐ์—์„œ ์–ธ์–ด๋ž‘ ์ง€์—ญ์„ English, ๋ฏธ๊ตญ์œผ๋กœ ํ•ด๋†“๊ณ  ์•ฑ์„ ์‹คํ–‰ํ–ˆ์„ ๋•Œ

์‹ฌ์‚ฌ์›๊ณผ ๊ฐ™์€ ํ˜„์ƒ์„ ๋ฐœ๊ฒฌํ•œ ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

๊ทธ๋ž˜์„œ ๋ฐ”๋กœ ์ˆ˜์ •ํ•˜๊ณ  ์‹คํ–‰ํ–ˆ๋Š”๋ฐ!

์–ธ์–ด ๋ฐ ์ง€์—ญ ์ˆ˜์ • ์ „ / ํ›„

 

์‹ฌ์‚ฌ์œ„์›๊ณผ ๊ฐ™์€ ํ˜„์ƒ์„ ๋“œ๋””์–ด ๋ฐœ๊ฒฌํ–ˆ๋‹ค...

 

๊ทธ๋ž˜์„œ ์ง€์—ญ/์–ธ์–ด ๋ฌธ์ œ๋กœ ๊ตฌ๊ธ€๋ง์„ ํ•ด๋ณด๋‹ˆ

์„œ๋ฒ„ ์ชฝ์—์„œ header์— ํ•œ๊ตญ์–ด๋กœ๋งŒ ์š”์ฒญ์„ ๋ฐ›์œผ๋ฉด ๋นˆ ํ™”๋ฉด์ด ๋กœ๋“œ ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค..

๊ทธ๋ž˜์„œ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋ณด๋‹ˆ ์„œ๋ฒ„์ชฝ์—์„œ ๋‹ค๋ฅธ ์–ธ์–ด๋„ ์š”์ฒญ๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋ผ๋Š”๋ฐ..

๋‚œ ์•ฑ๊ฐœ๋ฐœ์ž๋ผ ์ž˜ ๋ชฐ๋ž๊ณ  ๋‚ด ์„ ์—์„œ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ๋” ์ฐพ์•„๋ณด๋‹ˆ

์›น๋ทฐ url ์š”์ฒญ ์‹œ header์— ํ•ญ์ƒ ํ•œ๊ตญ์–ด๋กœ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋„๋ก ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค.

 

2.4.1. CFBundleDevelopmentRegion ํ•œ๊ตญ์–ด๋กœ ์ˆ˜์ •

/ios/Runner/Info.plist ์„ ์•„๋ž˜์™€ ๊ฐ™์ด ์ˆ˜์ •ํ•œ๋‹ค.

	<dict>
		<key>CFBundleDevelopmentRegion</key>
		<string>ko_KR</string>
   	<dict>

 

2.4.2. ์›น๋ทฐ ํ˜ธ์ถœ ์‹œ Accept-Language / header ์ถ”๊ฐ€

์›น๋ทฐ ํ˜ธ์ถœ ํ•˜๋Š” ์Šคํฌ๋ฆฐ์— header๋ฅผ ์ถ”๊ฐ€ํ•ด ํ•ญ์ƒ ํ•œ๊ตญ์–ด๋กœ ์š”์ฒญํ•˜๊ฒŒ๋” ์ˆ˜์ •

Future<void> _initializeWebViewFast() async {
      // WebView ๋กœ๋”ฉ ์‹œ์ž‘
    _controller.loadRequest(
      Uri.parse('http://m.dedoserver.com/'),
      // Accept-Language ํ—ค๋” ์ถ”๊ฐ€
      headers: const {'Accept-Language': 'ko-KR,ko;q=0.9'},
    );

}

 

์ด๋ ‡๊ฒŒ ์‹ฌ์‚ฌ ์ง„ํ–‰ํ–ˆ๋”๋‹ˆ

๋“œ๋””์–ด ๊ฟˆ๋งŒ ๊ฐ™์€ ์Šน์ธ ํ‘œ์‹œ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์—ˆ๋‹ค.. ํ•˜..

3. ๋ฒˆ์™ธ

- ๊ตฌ๊ธ€ ํ”Œ๋ ˆ์ด ์‹ฌ์‚ฌ๋Š” ๋ณดํ†ต 1์ฃผ์ผ ๊ฑธ๋ฆฐ๋‹ค. ํ•˜์ง€๋งŒ ์•ฑ์Šคํ† ์–ด ์‹ฌ์‚ฌ๋Š” 1-3์ผ ์ •๋„ ๊ฑธ๋ ค ์ƒ๊ฐ๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ํ”ผ๋“œ๋ฐฑ์„ ์ค€๋‹ค.

- ๊ตฌ๊ธ€ ํ”Œ๋ ˆ์ด์—์„œ๋Š” IP๋กœ ์˜ฌ๋ ธ๊ณ  ์ง€์—ญ/์–ธ์–ด ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๊ณ  ์‹ฌ์‚ฌ ์˜ฌ๋ ธ์„ ๋• ์Šน์ธ์ด ๋‚ฌ๋‹ค. 
(์‹ฌ์‚ฌ ์ง€์—ญ์ด ์ „์„ธ๊ณ„์— ์žˆ๋‚˜๋ณด๋‹ค.. ๊ตฌ๊ธ€ํ”Œ๋ ˆ์ด ์ถœ์‹œ๊ฐ€ ์ด ๋ฌธ์ œ ์ƒ๊ด€์—†์ด ์Šน์ธ์ด ๋‚˜์„œ ๋” ํ—ค๊น”๋ ธ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.)

- ํ•œ๊ตญ์—์„œ ์•ฑ ์„œ๋น„์Šค๋“ค์€ ์ฃผ๋กœ ์›น๋ทฐ๋กœ ๊ตฌ์„ฑํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. ์œ ์ง€๋ณด์ˆ˜/๋น„์šฉ์ ์ธ ์ธก๋ฉด์—์„œ ๋” ์œ ๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค..
(์›น๋ทฐ๋ฅผ ํ•™์›์ด๋‚˜ ๋‹ค๋ฅธ ๊ณณ์—์„œ ์ž˜ ์•Œ๋ ค์ฃผ์ง€ ์•Š๊ธฐ  ๋•Œ๋ฌธ์— ๋‹นํ™ฉํ–ˆ์ง€๋งŒ ์ด๋ ‡๊ฒŒ ๋ฐฐ์›Œ๊ฐ„๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

 

๋„ˆ๋ฌด ์˜ค๋ž˜ ์‚ฝ์งˆํ–ˆ์ง€๋งŒ.. ๋ฐฐ์šธ๊ฒŒ ๋งŽ์•˜๋‹ค..

ํ•˜์ง€๋งŒ ๋‹ค์Œ์—” ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ •๋ง ํฐ ๋ฌธ์ œ๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

๋‹ค์Œ์—” ๋” ์ž˜ํ•ด๋ณด์ž..!




์ถœ์ฒ˜ : https://app-developement-sharing-forum.tistory.com/8

 

2.1.0 Performance: App Completeness ์‹ฌ์‚ฌ ๊ฑฐ์ ˆ ํ•ด๊ฒฐ๋ฒ•

IOS ์•ฑ ์‹ฌ์‚ฌ์—์„œ Crash Report์™€ ํ•จ๊ป˜ 2.1.0 ๊ฐ€์ด๋“œ๋ผ์ธ์— ๊ฑธ๋ ค ๊ฑฐ์ ˆ๋‹นํ–ˆ์„ ๋•Œ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ–ˆ์„๊นŒ? ์• ํ”Œ ์‹ฌ์‚ฌ ๊ฐ€์ด๋“œ๋ผ์ธ: https://developer.apple.com/kr/app-store/review/guidelines/#app-completeness ์•ˆ๋…•ํ•˜์„ธ์š”, ์˜ค๋žœ

app-developement-sharing-forum.tistory.com

 

๋ฐ˜์‘ํ˜•