๊ณ ๊ฐ์ Wi-Fi๋ฅผ ์ฌ์ฉํ ์ ์์ง๋ง ์ฑ์ด ์ด๋ ค ์์ง ์์ ๋ ๋ฐ์ดํฐ ๋๊ธฐํ์ ๊ฐ์ ์์ ์ ์ํด iOS์ Android ๋ชจ๋์์ ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ค๋ก dart ์ฝ๋๋ฅผ ์คํํ๊ธฐ๋ฅผ ์ํฉ๋๋ค.
@mpcomplete ๋ Android์์ ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ค๋ฅผ ์์ฑํ์ฌ Flutter๋ฅผ ์ ๋ฐ์ดํธํ๋ Dart ์ฝ๋๋ฅผ ์คํํ์ต๋๋ค. ๊ทธ๋ฌ๋ iOS์์ ๋ณ๋ ฌ์ ์ธ์ํ์ง ๋ชปํฉ๋๋ค.
์ด ๋ฌธ์ ๋ ํ๋ฌ๊ทธ์ธ ๋๋ ๊ธฐํ์ API ๊ฐ๋ฐ์ ์ถ์ ํฉ๋๋ค. ์ด๋ฌํ ์ถ์ํ์ ๋ํ ์์ง ์ง์์ https://github.com/flutter/flutter/issues/6192์์ ์ถ์ ๋ฉ๋๋ค.
๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ๋๋ ์ฝ๋๋ฅผ Dart ๋๋ Java/Objective-C๋ก ์์ฑํด์ผ ํฉ๋๊น?
์ด๊ฒ์ ์ฐ๊ฒฐ์ ์ฌ์ฉํ ์ ์์ ๋ ๋ก์ปฌ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ์ ๋ฐ์ดํธํ๋ ค๋ ๋งฅ๋ฝ์์ ๋ฐ์ํ์ต๋๋ค. ์๋ฅผ ๋ค์ด ์งํ์ฒ ์ง๋/์งํ์ฒ ์ ๋ค๋ฝ๋ ๋ฝํ ์ ์๋ ์๊ฐ. ๊ทธ๋์ ๋ชฉํ๋ ์คํ๋ ์ฝ๋๊ฐ Dart๊ฐ ๋๋๋ก ํ์ฌ ๊ฐ ํ๋ซํผ์ ๋ํด ๋ณ๋์ ๋ฐ์ดํฐ ๋ชจ๋ธ ์กฐ์ ์ฝ๋๋ฅผ ๊ฐ์ง ํ์๊ฐ ์๋๋ก ํ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
CC @kasperl; ์ฐ๋ฆฌ๋ ๋ค์ํ ๋์์ ๊ฑธ์ณ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ฝ๋๋ฅผ ์คํํ๋ ๋ค์ํ ๋ฐฉ๋ฒ์ ํ๊ตฌํ์ผ๋ฉฐ ์๋ง๋ ๊ทธ๋ก๋ถํฐ ๋ช ๊ฐ์ง ๊ตํ์ ์ป์ ์ ์์ ๊ฒ์ ๋๋ค.
์ฌ์ฉ์์ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์์ต๋๊น? ๋ด๊ฐ ๋ค์๋ ์ ์ผํ ๊ฒ์ "ํธ์ ๋ฉ์์ง์ ๋ํ ์๋ต์ผ๋ก ์ฅ์น์์ ์ผ๋ถ ์ฝ๋๋ฅผ ์คํํ๊ณ ์ถ์ต๋๋ค. ์ฑ์ด ์ด๋ ค ์์ง ์์๋ ์ฅ์น์ ๋ฐ์ดํฐ๋ฅผ ๋๊ธฐํํ๊ณ ์ถ์ต๋๋ค."๋ผ๋ ๊ฒ์ด์์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ฑ์ด ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ค์ ๋ก ์ํํ ์ ์๋ ์์
์ด ์๋นํ ์ ํ๋์ด ์์ผ๋ฏ๋ก ์ด ๊ฒฝ์ฐ ์ฌ์ฉ ์ฌ๋ก์ ๋ํ ์๊ฐ์ ์ป์ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์๋ฅผ ๋ค์ด iOS ๋ชจ๋ธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html
๋๋ ์ด๊ฒ์ด #6192์ ๊ฐ์ ๋ฒ๊ทธ๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ ์ต๋๋ค.
#6192์์ ์์ด ๋ง์ ํ๊ทธ ๋ฐ ๋ง์ผ์คํค ๊ฐ ์ถ๊ฐ
@mravn-google @sigurdm ์๊ฐํด๋ณผ๋งํ ๊ฒ!
ํ๋น์ฑ๊ณผ ๋น์ฉ์ ๋ ์ ์ดํดํ๊ธฐ ์ํด ์ด๊ธฐ ์กฐ์ฌ๋ฅผ ์ํด Mikkel์๊ฒ ํ ๋นํฉ๋๋ค.
๋ค์์ Leafy์ ์ ๋ฐ์ดํธ์ ๋๋ค.
๋ฐ์ดํฐ ์๋ฆผ(์: ์ฑ์ด ์ด๋ค ๋ฐฉ์์ผ๋ก๋ ์๋ตํด์ผ ํ๋ ์๋ฆผ)์ ์ ํ์ผ๋ก ์ธํด Leafy๋ ๋์คํ๋ ์ด ์๋ฆผ(์: ์ฑ ๊ฐ์ ์์ด ์ฌ์ฉ์ ํ๋ฉด์ ์ง์ ํธ์๋๋ ์๋ฆผ)์ ์ฌ์ฉํ๋ ์ชฝ์ผ๋ก ๊ธฐ์ธ๊ณ ์์ต๋๋ค. ์ด์ ๋ํ ์ง์์ ์ด๋ฏธ Flutter์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ๋ค๋ฅธ ํ๊ณผ ๋ํํ๋ ๋์ ๋ ๋ค๋ฅธ ์ฌ์ฉ ์ฌ๋ก๊ฐ ๋ํ๋ฌ์ต๋๋ค. ์ฑ์์ ์จ์ด๋ฌ๋ธ ๋๋ [ํ ํ๋ฉด] ์์ ฏ์ ์ง์ํ๋ ค๋ฉด ์ด๋ฌํ ํ๋ฉด์ด Flutter์์ ์์ง ์ง์๋์ง ์๊ธฐ ๋๋ฌธ์ ๋ค์ดํฐ๋ธ ์ฝ๋๋ก UI๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค. ํ์ง๋ง ํ๋ฌํฐ ์ฑ๊ณผ ์จ์ด๋ฌ๋ธ ์ฑ์์ ๋ชจ๋ธ ๋ ์ด์ด์ ๋น์ฆ๋์ค ๋ก์ง์ ๊ณต์ ํ ์ ์๋๋ก '์ฑ์ ๊นจ์ฐ๊ณ ๋ฐ์ดํฐ๋ฅผ ์์ฒญ'ํ ์ ์์ผ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค. ์ด๊ฒ๋ค ์ค ํ๋๋ฅผ ์์ฑํ ์ ์ด ์๊ธฐ ๋๋ฌธ์ ๊ธฐ์กด์ ๊ธฐ๋ณธ ์ฑ์ด ์ด ์์ ์ ์ํํ๋ ๋ฐฉ๋ฒ์ ํ์คํ์ง ์์ง๋ง ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ ๋ํ ์ ํจํ ์ฌ์ฉ ์ฌ๋ก์ธ ๊ฒ ๊ฐ์ต๋๋ค.
๋ฒ ๋ฅผ๋ฆฐ DroidCon์ ๋ํ Flutter ๊ฐ์ฐ์ ์ ์์ ๋ฐฉ๊ธ ์ด์ผ๊ธฐ๋ฅผ ๋๋ด์ต๋๋ค. ์ด๊ฒ์ด ๊ทธ๊ฐ ๊ฐ์ฅ ๋ง์ด ๋ฌป๋ ์ง๋ฌธ ์ค ํ๋์์ต๋๋ค. "์ด๋ ๊ฒ ํ๋ ๋ฐฉ๋ฒ, Flutter ๋ฐฉ์"
๋ถ๋ช ํ ํ์๋ฉด, ํ์ฌ Flutter๋ฅผ ์ฌ์ฉํ๋ ์ฑ์ ์ผ๋ถ๋ก ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ค๋ฅผ ์์ฑํ๋ ๊ฒ์ด ๊ฐ๋ฅํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ํ๋ก์ธ์ค๋ Obj-C/Swift ๋๋ Java/Kotlin ์ฝ๋๋ง ์คํํ ์ ์์ต๋๋ค. ์ด ๋ฒ๊ทธ๋ ์ด๋ฌํ ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ค์์ Dart ์ฝ๋๋ฅผ ์คํํ ์ ์๋๋ก ์์ง์ ์ ํ ์ฌํญ์ ์์ ํ๊ณ Dart์์ ์ด๋ฌํ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ ์์ฝํ ์ ์๋๋ก ์ถ์ํ๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ๋๋ค(FlutterView๊ฐ ํ์ํ๋ฉด ํ๋ฌ๊ทธ์ธ์ ์ํ ๊ฐ๋ฅ์ฑ์ด ์์). ํ๋ฉด์ ํ์๋๋ ์ ํ์ด ์ ๊ฑฐ๋จ).
https://github.com/flutter/flutter/issues/6192#issuecomment -258928555์์ ํ์ฌ ์์ง ์ ํ ์ฌํญ๊ณผ ์ด๋ฅผ ํด๊ฒฐํ๋ ค๋ ์๋์ ๋ํด ์ค๋ช ํฉ๋๋ค. ์ฐธ๊ณ ๋ก @a-siva
์ธ๊ธ๋์ง ์์ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ 5์ด๋ง๋ค ์์น๋ฅผ ์ถ์ ํ๊ณ ์์ผ๋ฉฐ ํด๋น ์ด๋ฒคํธ์ ๋ค๋ฅธ ํน์ ์ ๋ณด๊ฐ ์ฒจ๋ถ๋์ด ์์ต๋๋ค. ๋ชจ๋ ๋น์ฆ๋์ค ๋ก์ง์ Dart์์ ๊ตฌํ๋ฉ๋๋ค. ์ฌ์ฉ์๊ฐ ๋ค๋ฅธ ํ๋์ ํฌ๊ทธ๋ผ์ด๋๋ก ๊ฐ์ ธ์ค๋ฉด ์ง์์ ์ธ ์๋ฆผ์ ํ์ํ๊ณ 5์ด๋ง๋ค ํด๋น Dart ์ฝ๋๋ฅผ ๊ณ์ ์คํํด์ผ ํฉ๋๋ค.
์ด๊ฒ์ ์ฐ๋ฆฌ๋ฅผ ์ํ ์ฐจ๋จ๊ธฐ์ ๋๋ค. ๋ฐฐ์ก์ด ์ง์ฐ๋ ์ ์์ผ๋ฏ๋ก ํ์ฌ ๊ตฌํํ ์ ์๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ฃ๊ณ ์ถ์ต๋๋ค.
๋๋ ๋จ์ํ ํ์ด๋จธ๋ฅผ ํ์ฑ ์ํ๋ก ๋๊ณ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๋์ง ๋ณด๋ ค๊ณ ๋ ธ๋ ฅํ ๊ฒ์ ๋๋ค. ๋๋ ๊ทธ๊ฒ์ด ์ ๋ขฐํ ์ ์๋ค๊ณ ์๊ฐํ์ง ์์ง๋ง ์ฐ๋ฆฌ ์ฑ์๋ ์ผํ์ฑ ์บ์ ์ ๋ฆฌ(์ฑ์ด ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ์ ํ๋ ํ 15๋ถ)์ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์์ผ๋ฉฐ ์ฑ๊ณต์ ์ผ๋ก ์คํ๋๋ ๊ฒ์ ๋ณด์์ต๋๋ค. ์ฑ์ด Dart์์ ์ค์ง๋๋ ๋์ ์์ฝํฉ๋๋ค. ์ด ๊ฐ์:
<strong i="6">@override</strong>
void didChangeAppLifecycleState(AppLifecycleState state) {
if (state == AppLifecycleState.paused) {
new Future.delayed(const Duration(seconds: 5), () => _doSomething());
}
}
๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ์๋ํ์ง ์์ต๋๋ค.
iOS ๋์ ์ ํ์ ํ์คํ์ง ์์ง๋ง Android์์๋ ํฌ๊ทธ๋ผ์ด๋ ์๋น์ค๋ฅผ ์์ํ๋ ํ๋ฌํฐ ํ๋ฌ๊ทธ์ธ์ ๋ง๋ค ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ํ๋ก์ธ์ค์ ๋ ๋์ ์ฐ์ ์์๋ฅผ ๋ถ์ฌํ๊ณ ๋ฆฌ์์ค ์๊ตฌ ์๊ฐ ๋์ ์ข ๋ฃ๋ ๊ฐ๋ฅ์ฑ์ด ์ค์ด๋ญ๋๋ค. ์ด๊ฒ์ ๋ํ ์ค๋ ์คํ๋๋ ๋คํธ ํ์ด๋จธ์ ๋ ๋์ ์์กด ๊ธฐํ๋ฅผ ์ ๊ณตํ ๊น์?
์, ํ๋(๋ฐ๋ผ์ ํ๋ฌํฐ ๋ณด๊ธฐ)์ด ํ์ฑ ์ํ๋ก ์ ์ง๋๊ธฐ ๋๋ฌธ์ ๋์์ด ๋ ์ ์์ต๋๋ค. ๋๋ ์ฌ์ ํ ์ฐ๋ฆฌ๊ฐ ํ๋ฌ๊ทธ์ธ์ ํ ๋งํผ ๋ช ํํ์ง ์๋ค๊ณ ํ์ ํ์ง ๋ชปํฉ๋๋ค.
์ ๋ณด์ ์ฃผ๊ธฐ์ ์ธ ๋ฐฑ๊ทธ๋ผ์ด๋ ํด๋ง์ ์ง์ํ๋ ๊ฒ์ด ์์ ์ด๋ผ๋ฉด ์ด๋ฅผ ์ํ ํ๋ฌ๊ทธ์ธ์ ์ค๊ณํ๋ ๊ฒ์ด ๋ ๋์ ์ ์์ต๋๋ค. Dart์์ ํ์ด๋จธ๋ฅผ ๊ตฌํํ๋ ๋์ ๋ค์ดํฐ๋ธ ์ฝ๋์์ ํ์ด๋จธ๋ฅผ ํตํด ํธ์ถ๋๋ ์ฝ๋ฐฑ์ Dart์ ๋ฑ๋กํ ์ ์์ด์ผ ํฉ๋๋ค. Android์ ์๋น์ค๋ฅผ ์ฌ์ฉํ๋ฉด ๊ทธ๋ ๊ฒ ํ ์ ์์ต๋๋ค.
๋๋
KeepAliveโข Flutter ์ฑ์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๊ฐ๋จํฉ๋๋ค.
iOS์์๋ Info.plist
์ UIBackgroundMode ๋ฅผ ์ค์ ํ์ฌ ์ฑ์ด ์ข
๋ฃ๋ ๊ฐ๋ฅ์ฑ์ ํจ์ฌ ์ค์ผ ์ ์์ต๋๋ค.
Android์์๋ ๋น ์๋น์ค๋ฅผ ์ค์ ํฉ๋๋ค. ์ด๊ฒ์ ๋๋ถ๋ถ AndroidManifest.xml ๋ณ๊ฒฝ + ์ฌ์ํ ์๋น์ค ํด๋์ค ๊ตฌํ์ ๋๋ค.
์ผ๋ฐ KeepAlive ํ๋ฌ๊ทธ์ธ์ ์ฌ์ ํ โโiOS์์ ์๋ ์ค์ ์ด ํ์ํ๊ณ Android์์ ํฌ๊ทธ๋ผ์ด๋/๋ฐฑ๊ทธ๋ผ์ด๋ ์๋น์ค๋ฅผ ์ฌ์ฉํ ์ง ์ฌ๋ถ๊ฐ ๋ช ํํ์ง ์๊ธฐ ๋๋ฌธ์ ์๋ํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค(ํฌ๊ทธ๋ผ์ด๋ ์๋น์ค๋ ์ฃฝ์ด๊ธฐ ์ด๋ ต์ง๋ง ์ง์์ ์ธ ์๋ฆผ์ด ํ์ํจ).
ํฌ๊ทธ๋ผ์ด๋ ์๋น์ค๋ฅผ ์ฌ์ฉํ๋๋ผ๋ OS๋ ์ด๋ค ์ด์ ๋ก๋ ์ฌ์ ํ ํ๋ก์ธ์ค๋ฅผ ์ข ๋ฃํ ์ ์์ต๋๋ค.
์ด์์ ์ธ ์๋ฃจ์ ์ Android์ ์๋ ๊ด๋ฆฌ์๋ฅผ ํ์ฉํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ํ์ฌ ์คํ๋๊ณ ์์ง ์๋๋ผ๋ ํน์ ์๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋๋ฅผ ์คํํ๋ ค๋ ๊ฒฝ์ฐ๋ฅผ ์ํ ๊ฒ์ ๋๋ค. ํ์ง๋ง ์ด๋ ๊ฒ ํด๋ ๋ก๊ทธ์ธํ Firebase ์ฌ์ฉ์๊ฐ ์ธ์ฆ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ธฐ ์์ ์ ํ๊ฒ ๋๋ฏ๋ก ๋์ผํ ์ํ๋ก Dart ํ๋ก์ธ์ค๋ฅผ ์ด๋ป๊ฒ ์ฌ๋ถํ ํ ์ ์์ต๋๊น?
@pauldemarco ๋ฐ๋ผ์ ์ด ๋ฒ๊ทธ๋... FlutterView๊ฐ ์คํ๋์ง ์๋ ๋ชจ๋ ์ํ์์ Flutter๊ฐ Dart ์ฝ๋๋ฅผ ์คํํ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ์ฌ๊ธฐ์๋ ์๋ ๊ด๋ฆฌ์, ์จ์ด๋ฌ๋ธ/๋ค์ดํฐ๋ธ ์์ ฏ ๋ฐ์ดํฐ ๋๊ธฐํ ๋๋ ํธ์ ์๋ฆผ์ด ํฌํจ๋ฉ๋๋ค(๋ง์ง๋ง ์ฌ์ฉ ์ฌ๋ก๋ https://github.com/flutter/flutter/issues/6192์์ ์์ํ ์ฌ๋ผ์ง๊ณ ์์ง๋ง).
_๋์ผํ ์ํ_ ๋ฌธ์ ๋ Flutter ์์ค์ด ์๋ ์ฑ ์์ค์์ ํด๊ฒฐ๋์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ธฐ๋ณธ ์ฑ์ ๊ฒฝ์ฐ ๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ํ๋ก์ธ์ค๊ฐ ์ฃฝ์ผ๋ฉด ๋ค๋ฅธ ๊ณณ์ ์ ์ฅํ์ง ์๋ ํ ์ํ๋ฅผ ๋ณต๊ตฌํ ์ ์์ต๋๋ค(์: ๊ณต์ ํ๊ฒฝ ์ค์ ๋๋ sqlite). ์๋ง๋ Dart ์ฝ๋์์๋ ๋์ผํ ์์
์ ์ํํ ๊ฒ์
๋๋ค. Flutter๊ฐ ํ ์ ์๋ ํ ๊ฐ์ง๋ iOS์์ applicationWillTerminate
, Android์์ onSaveInstanceState
์ ๊ฐ์ ๋ฉ์์ง๋ฅผ ์ ๋ฌํ์ฌ ์ด์ ๋๋นํ ์ ์๋๋ก ํ๋ ๊ฒ์
๋๋ค.
์ง๋ฌธ:
runApp
)์ด ์ฒ์ ์คํ๋์ง ์์ ์ํ์์ ์คํ๋๋ ์ฝ๋๋ฅผ ์ง์ํ์๊ฒ ์ต๋๊น?ํ์ฌ ์ด๊ฒ์ ๊ฐ๊น์ด ์ฅ๋์ ๊ณํ๋์ง ์์ต๋๋ค. ์ด๋ ๋๊ท๋ชจ ํ๋ก์ธ์ค์ด๋ฏ๋ก ๊ณง ์ด๋ฅผ ์ํํ๋ ค๋ฉด ๋จ๊ธฐ ์ฐ์ ์์ ๋ชฉ๋ก์์ ๋ค๋ฅธ ๊ฒ์ ์ฎ๊ฒจ์ผ ํฉ๋๋ค.
์ฌ์ฉ ์ฌ๋ก
๋ค์ํ ๊ฐ๊ฒฉ(5์ด, 10๋ถ, 30๋ถ, 6์๊ฐ)์ผ๋ก ์ด๋ฒคํธ๋ฅผ ๊ธฐ๋กํ๋ ๋ค์ํ ์๋ ๋ชจ๋๊ฐ ์์ต๋๋ค. ์ฑ์ด ํ์ฌ ์คํ ์ค์ธ์ง ์ฌ๋ถ์ ๊ด๊ณ์์ด ๋ก๊น
ํ๋ก์ธ์ค๊ฐ ์คํ๋๋๋ก ํ๋ ๋ฐฉ๋ฒ์ด ํ์ํฉ๋๋ค.
์ด๋ค ์ ํธ๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์คํ์ ํธ๋ฆฌ๊ฑฐํ ์ ์์ต๋๊น?
Android์์ ์ด๊ฒ์ AlarmManager์ ์์ฝ๋ ์๋์์ ์ ์ก๋๋ PendingIntent๋ฅผ ํตํด ์ด๋ฃจ์ด์ง๋๋ค.
ํ์ฌ๋ก์๋ ์ด์ ๋์ํ๋ iOS๊ฐ ํ์คํ์ง ์์ต๋๋ค.
์ผ๋ง๋ ์ค๋ ๋ฌ๋ ค์ผ ํฉ๋๊น? ๊ทธ๊ฒ์ด ์ธ์ ์์ง๋๋์ง ์ด๋ป๊ฒ ์๋๊น?
๋จผ์ ์ด๋ฒคํธ์ ํ์ํ ์ ๋ณด๋ฅผ ์์งํด์ผ ํ๋ฉฐ ๊ทธ ์ค ์ผ๋ถ๋ ๋น๋๊ธฐ์(GPS ์์น)์ธ ๋ค์ ์จ๋ผ์ธ ๋ฐ์ดํฐ ์ ์ฅ์(Firebase)์ ์ด๋ฒคํธ๋ฅผ ๊ธฐ๋กํด์ผ ํฉ๋๋ค. ์ด ์ ์ฒด ํ๋ก์ธ์ค๋ ์ต๋ 30์ด ๋์ ์ง์๋ ์ ์์ต๋๋ค.
๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ์ ์ํด ์ํ๋ ์คํ ๋ชจ๋ธ์ ๋ฌด์์ ๋๊น? (์: ๋ณ๋์ ๊ฒฉ๋ฆฌ? ๋ฉ์ธ dart:ui ์ค๋ ๋๋ฅผ ์ฌ์ฉํ์๊ฒ ์ต๋๊น?)
๋๋ ์ด๊ฒ์ด ์ฐ๋ฆฌ์๊ฒ ์ค์ํ์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๊ฐ๋น์ผ ๊ณ์ฐ์ ํ์ง ์์ ๊ฒ์ ๋๋ค.
์ฑ(runApp์์์ ๊ฐ์ด)์ด ์ฒ์ ์คํ๋์ง ์์ ์ํ์์ ์คํ๋๋ ์ฝ๋๋ฅผ ์ง์ํ์๊ฒ ์ต๋๊น?
์ฌ๊ธฐ์ ์๋ฏธํ๋ ๋ฐ๋ ํ์คํ์ง ์์ต๋๋ค. ์ผ๋ฐ ์ฑ์์ ๋น์ฆ๋์ค ๋ก์ง๊ณผ ์ํ๋ฅผ ์ด๊ธฐํํ๊ธฐ ๋๋ฌธ์ ํด๋น ํญ๋ชฉ์ ๋จผ์ ์คํํ์ฌ ์ถฉ๋ ๋ณด๊ณ ๋ฑ์ ํ์ฉํ ์ ์๋๋ก ํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค.
๋ค๋ฅธ ์ฌ์ฉ์ ์ฌ๋ก๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. ์ด ๊ธฐ๋ฅ์ ์ฑ์ ์์ฑํ๋ ๋ฐ ๋ฐฉํด๊ฐ ๋๋ ์ ์ผํ ๊ธฐ๋ฅ์ ๋๋ค. ๋๋ ์ด๊ฒ์ ์ํ ์๋๋ก์ด๋ ์ฑ์ ๊ฐ์ง๊ณ ์์๊ณ iOS์์๋ ์ด์์ ์ผ๋ก ์๋ํ๋ ๋ ์๋กญ๊ณ ๋ ๋์ ๋ฒ์ ์ ๋ง๋ค๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. iOS์ ๊ตฌ์ฑ ์์์ ์ต์ํ์ง ์์ง๋ง(์กฐ์ฌํ ๋ iOS์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ด Android๋ณด๋ค ํจ์ฌ ์ ํ์ ์ด๋ผ๋ ๊ฒ์ ๋ฐ๊ฒฌํ์ต๋๋ค) ์ฌ์ฉํ Android ๊ตฌ์ฑ ์์์ ์ด๋ฆ์ ์ง์ ํ ์ ์์ต๋๋ค.
์ด๋ค ์ ํธ๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์คํ์ ํธ๋ฆฌ๊ฑฐํ ์ ์์ต๋๊น?
๋๋ถ๋ถ์ ์ฝ๋๋ ๋ํ AlarmManager์ ์๋์ ์ํด ํธ๋ฆฌ๊ฑฐ๋ฉ๋๋ค.
๊ทธ๋ฌ๋ ํญ์ ํด๋น ์๋์ ์์ํ๋ ค๋ฉด ์ด์ ์๋์ด ์ ๊ฑฐ๋๋ฏ๋ก ์ฅ์น ๋ถํ ๋ฐ ํจํค์ง ์ ๊ทธ๋ ์ด๋(android.intent.action.MY_PACKAGE_REPLACED) ์ ์ผ๋ถ ์ฝ๋๊ฐ ์คํ๋ฉ๋๋ค.
์ผ๋ง๋ ์ค๋ ๋ฌ๋ ค์ผ ํฉ๋๊น? ๊ทธ๊ฒ์ด ์ธ์ ์์ง๋๋์ง ์ด๋ป๊ฒ ์๋๊น?
์ด์์ ์ผ๋ก๋ 1์ด ๋ฏธ๋ง์ ๋๋ค. ์๊ท๋ชจ ๋คํธ์ํฌ ์์ฒญ์ด ์ด๋ฃจ์ด์ง๊ณ ๊ฒฐ๊ณผ๊ฐ ์ ์ง๋๋ฉฐ ๊ฒฝ์ฐ์ ๋ฐ๋ผ ์๋ฆผ์ด ํ์๋ฉ๋๋ค. ๊ทธ ํ ๋ฉ์๋๊ฐ ๋ฐํ๋ฉ๋๋ค.
๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ์ ์ํด ์ํ๋ ์คํ ๋ชจ๋ธ์ ๋ฌด์์ ๋๊น? (์: ๋ณ๋์ ๊ฒฉ๋ฆฌ? ๋ฉ์ธ dart:ui ์ค๋ ๋๋ฅผ ์ฌ์ฉํ์๊ฒ ์ต๋๊น?)
๋์๊ฒ๋ ์ค์ํ์ง ์์ต๋๋ค.
์ฑ(runApp์์์ ๊ฐ์ด)์ด ์ฒ์ ์คํ๋์ง ์์ ์ํ์์ ์คํ๋๋ ์ฝ๋๋ฅผ ์ง์ํ์๊ฒ ์ต๋๊น?
์ ๊ฒฝ์ฐ์๋ ํ ๋ฒ ์คํํ๋ฉด ๊ด์ฐฎ์ง๋ง ๋ถํธ ๋ฆฌ์๋ฒ์ ๊ฐ์ ๊ฒ์ด ๊ฐ๋ฅํ๋ค๋ฉด ์ฑ์ด ์ด์ ์ ์์๋์ง ์์๋๋ผ๋ ์คํ๋์ด์ผ ํฉ๋๋ค.
https://stackoverflow.com/questions/41924890/how-do-i-run-code-in-the-background-even-with-the-screen-off๋ ๋ด๊ฐ ํ ์ ์๋ ํ Flutter์์ ๊ฐ์ฅ ๋ง์ด ๋ณธ ์คํ ์ค๋ฒํ๋ก ์ง๋ฌธ์ ๋๋ค. ๋งํ๋ค. :) ํ์คํ ์ด ๊ณต๊ฐ์ ๋ํ ๊ด์ฌ์ด ๋ง์ ๊ฒ ๊ฐ์ต๋๋ค.
https://github.com/flutter/flutter/issues/6192 ๋ FlutterView๊ฐ ๋ ๋๋ง๋์ง ์์ ๋ ์ค์ ๋ก Dart ์ฝ๋๋ฅผ ์คํํ๊ธฐ ์ํ ๊ธฐ๋ณธ ์ง์์ ์ ๊ณตํ๊ธฐ ์ํด ๋ค์ ํ์ฑํ๋์์ต๋๋ค.
์ด๊ฒ์ ์ฐ๋ฆฌ์ ๋จ๊ธฐ ๋ ์ด๋์ ์์ง๋ง ์ ์ด๋ ๋ช ๋ฌ์ ๊ฑธ๋ฆด ๊ฒ์ ๋๋ค.
์ด ๋ฒ๊ทธ์์ @zanderso ๋ฅผ ํ ๋น ํด์ ํด ์ฃ์กํฉ๋๋ค. ๋๋ ๊ทธ๋ฅผ ๊ธฐ๋ณธ ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ ๋ฒ๊ทธ(#6192)์ ํ ๋นํ๋ ค๊ณ ํ์ต๋๋ค.
CC @kasperl; ์ฐ๋ฆฌ๋ ๋ค์ํ ๋์์ ๊ฑธ์ณ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ฝ๋๋ฅผ ์คํํ๋ ๋ค์ํ ๋ฐฉ๋ฒ์ ํ๊ตฌํ์ผ๋ฉฐ ์๋ง๋ ๊ทธ๋ก๋ถํฐ ๋ช ๊ฐ์ง ๊ตํ์ ์ป์ ์ ์์ ๊ฒ์ ๋๋ค.
@mit-mit ๋ฐ๊ฒฌํ ๋ด์ฉ์ ์ด๋ค ํํ๋ ํ์์ผ๋ก ๋ฌธ์ํํ์ต๋๊น?
๋ฐฑ๊ทธ๋ผ์ด๋ ์ฒ๋ฆฌ๊ฐ ํ์ํ ๋ ๋ค๋ฅธ ์ด์ ๋ ์คํธ๋ฆฌ๋ฐ ์ค๋์ค ์ฑ์ ์์ฑํ๋ ค๋ ๊ฒฝ์ฐ์ ๋๋ค. ์ฌ์ฉ์๊ฐ ์ฑ์ ์ด์ด ์ค๋์ค ์คํธ๋ฆผ์ ์์ํฉ๋๋ค. ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ค๋ ์คํธ๋ฆผ์ ๋ค์ด๋ก๋ํ๊ณ ์ค๋์ค๋ฅผ ์ฌ์ํฉ๋๋ค. ๋์ ์์/์ค์ง/์ผ์ ์ค์ง/ff/๋๊ฐ๊ธฐ ์ด๋ฒคํธ๋ฅผ ์์ ํฉ๋๋ค. ๋์ UI๋ฅผ ๋ณ๊ฒฝํ๋ ์ด๋ฒคํธ๋ฅผ ๋ณด๋ ๋๋ค(์: ํ์ ๋ชจ์ ์ค๋์ค ๋ฉํ ๋ฐ์ดํฐ๋ฅผ ui๋ก ๋ณด๋ ๋๋ค. ์คํธ๋ฆผ ๋ค์ด๋ก๋/์ฌ์์ ๊ณ์ํ๋ ค๋ฉด ์ฌ์ฉ์๊ฐ ์ฑ UI๋ฅผ ๋ ๋ ๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ค๊ฐ ํ์ํฉ๋๋ค.
ํ์ฌ ์์ ์ค์ ๋๋ค. ํ์ฌ ETA๊ฐ ์์ต๋๋ค.
@zanderso ๋ ์ฌ๊ธฐ์ ์ ๋ฐ์ดํธ๋ ๋ด์ฉ์ ๊ฒ์ํ์ต๋๋ค. https://github.com/flutter/flutter/issues/6192#issuecomment -342214725
@a-siva๋ ์ด๊ฒ์ด ์์ง ์งํ ์ค์์ ์๋ ค์ค๋๋ค. Android๊ฐ ์คํ ์ค์ด๋ฉฐ ํ์ฌ iOS์์ ์์ ํ๊ณ ์์ต๋๋ค.
ํน์ ์๊ฐ(์: ์ด๋ฒคํธ ์ค)์ ํน์ ์์น์ ๊ฐ๋์ง ์ฌ๋ถ๋ฅผ ๋ฑ๋กํ๊ธฐ ์ํด ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ฌ์ฉ์ ์์น๋ฅผ ์ถ์ ํ๋ ค๋ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์์ต๋๋ค.
@bjornbjorn ์ง์คํ์ค ๋ชป์ฐ๋์? IOS์ ๋น์ทํ ๊ฒ์ด ์๋์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง ์ด Play ์๋น์ค ์ง์คํ์ฑ ์ ๋ฌ์ฑํ ์ ์์ต๋๋ค.
@Hixie ์์์ด ์์ต๋๊น? ๋๋ ํ์ฌ ๋ด ์ฑ์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์๋น์ค๋ก ์คํํด์ผ ํ๋ ๋จ๊ณ์ ์์ง๋ง(๋๋ถ๋ถ์ ์ฑ์ Go๋ก ์์ฑ๋จ) ๊ฒฐ๊ตญ ์ข ๋ฃ๋ฉ๋๋ค. Java ์ธก์์ ํฌ๊ทธ๋ผ์ด๋ ์๋น์ค๋ฅผ ๊ตฌํํ๊ธฐ ์์ํ์ง๋ง ๊ฒฐ๊ตญ iOS์ฉ์ผ๋ก ๋ค์ ๊ตฌํํด์ผ ํ๋ ๊ฒฝ์ฐ ๊ฝค ๋ถ์พํ ๊ฒ์ ๋๋ค.
๋ค์ ์ฃผ ๋๋ ๋ค์ ๋ฌ์ Android์์ ์ฌ์ฉํ ์ ์๋์ง ์ฌ๋ถ๋ฅผ ์์ํ๋ ์ฌ๋๋ ์์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค. :)
https://github.com/flutter/flutter/issues/6192 ์ ์์ธํ ์ค๋ช ๋ @rusenask , ์ด์ Android์์ ์ด๋ฅผ ์ํ ํ๋ฌ๊ทธ์ธ์ด ์์ต๋๋ค! https://pub.dartlang.org/packages/android_alarm_manager ๋ฅผ ์ดํด๋ณด๊ณ ๊ทํ์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๋์ง ์๋ ค์ฃผ์ญ์์ค.
์ ๋งํด ๋ณด์ด๋ฉฐ ํด๋น ์๋ ๊ด๋ฆฌ์๋ฅผ ์ฌ์ฉํ์ฌ "๋ฐ๋ชฌ" ์คํ์ผ์์ "์ฃผ๊ธฐ์ ์ธ ๋ฒ์คํธ"์ ๊ฐ์ ์ฑ์ผ๋ก ์ฑ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ๊นจ์ด๋๋ ค๋ฉด ๋ด์ค๋ฅผ ์๋นํ๊ณ ์ข ๋ฃํ์ญ์์ค.
๊ทธ๋ฌ๋ ์ด์์ ์ผ๋ก๋ ๋ด ํ๋ก์ธ์ค๊ฐ ํญ์ ์ ๊ฒฝ์์ ์คํ๋ ์ ์๋๋ก ํ๋ ๊ฒ์ ์ฌ์ฉํฉ๋๋ค. https://stackoverflow.com/questions/15758980/android-service-needs-to-run-always-never-pause-or-stop . ์์ปจ๋, ๋ด ์ฑ์ ๋ด์ ์คํํ๋ฏ๋ก ๊ฑฐ์ ํญ์ ์คํํด์ผ ํฉ๋๋ค.
์ด ์์ ์ด ์๋ฃ๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผํ๊ธฐ ์ ์ ์ด๋ฅผ ๋ฌธ์ํํ๋์ง ํ์ธํด์ผ ํฉ๋๋ค.
์ ๋ฌธ์ ๋ฌธ์ ๋ฅผ ์ด์ด์ผ ํฉ๋๊น?
https://github.com/flutter/website/pull/802 ์ FAQ์ ์ถ๊ฐ
@zanderso -- @mjohnsullivan ์ ๋ฌธ์ ์ชฝ์ ๊ฐ์ฅ ์ ํฉํ ์ฐ๋ฝ์ฒ์ ๋๋ค.
ETA๊ฐ ์๋ ค์ ธ ์์ต๋๊น?
@it2bz ์ ํํ ๋ฌด์์ ์ํ ETA์ ๋๊น? ์๋๋ก์ด๋ ์ง์? ์ ์ ์๋ฅ ๋น์น? iOS์์ ์ง์ํฉ๋๊น? ์?
@Hixie Android ๋ฐ iOS ์ง์ ๋ฐ ์์ ๊ฐ ํฌํจ๋ ์ต์ํ์ ๊ธฐ๋ณธ ๋ฌธ์
iOS์ ๊ฒฝ์ฐ ์ ํํ ๋ฌด์์ ์ํ๋์ง ์์ธํ ์ค๋ช ํด ์ฃผ์๊ฒ ์ต๋๊น? Apple์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ํํ ์ ์๋ ์์ ์ ๋ํด ์๊ฒฉํ ์ ํ์ ๋๊ณ ์์ผ๋ฏ๋ก ๋น์ฌ๊ฐ ์ฐ๊ฒฐํ๊ธฐ๋ฅผ ์ํ๋ API๋ฅผ ์ ํํ ์๋ ๊ฒ์ด ์ ์ฉํ ๊ฒ์ ๋๋ค.
๋๋ ์ฌ์ฉ์ ์์น์ ํจ๊ป ๊ธฐํ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ ์ฐพ๊ณ ์์ต๋๋ค
์ด๊ฒ์ด '๋ฐฐ๊ฒฝ ์๋ฃ ๋ฌป๊ธฐ' ์ค๋ ๋์ธ ๊ฒ ๊ฐ์ผ๋ฏ๋ก ์์ํ๊ฒ ์ต๋๋ค. ๋๋ flutter๋ฅผ ์ฌ์ฉํ์ฌ ์์ ํ๋ ์ด์ด๋ฅผ ๊ตฌํํ๊ณ ์ถ์์ง๋ง ์ ํ์์ ์ฑ์ด ์ต์ํ๋ ๊ฒฝ์ฐ์๋ ์์ ์ ๊ณ์ ์ฌ์ํ ์ ์๋์ง(API ํ๋ช ํ๊ฒ) ํ์คํ์ง ์์ต๋๋ค. Android์์๋ ์ฑ์ด ์ข ๋ฃ๋๋๋ผ๋ ์ค์ ๋ก ๊ณ์ํ ์ ์๋ ์๋น์ค๋ฅผ ์์ํ ์ ์๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ํ์ํ ๊ฒฝ์ฐ ํ๋์ ๋ค์ ์์ํฉ๋๋ค. ์ง๊ธ Flutter์์ ๋น์ทํ ๊ฒ์ด ๊ฐ๋ฅํฉ๋๊น?
@SirWindfield ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ์ฑ๊ณผ ๋ณ๋๋ก ๊ณ์ ์ฌ์๋๋ ๊ฐ ํ๋ซํผ์ ๊ธฐ๋ณธ ๋ฏธ๋์ด ํ๋ ์ด์ด API๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.
@kirbyfan64 ๊ทธ๋ ๊ฒ ์๊ฐํ๋๋ฐ ๊ฐ์ฌํฉ๋๋ค!
@Hixie , ๋ค์๊ณผ ๊ฐ์ ์๋ฃจ์ (Cordova): https://github.com/katzer/cordova-plugin-background-mode ๋๋ ์ด์ ๊ฐ์(Swift): https://github.com/yarodevuci/backgroundTask ๊ฐ ์ข์ ๊ฒ์ ๋๋ค. Flutter ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ฉ.
@holospeed ์ด๊ฒ๋ค์ Apple์ด ๋น์ ์๊ฒ ๋ฐฐ์ก์ ํ์ฉํ์ง ์์ ๊ฐ๋ฅ์ฑ์ด ์๋ ์ ๊ทผ ๋ฐฉ์์ด๋ฏ๋ก ์ฐ๋ฆฌ๊ฐ ์ด๊ฒ์ ๊ตฌํํ๋ ๋ฐ ์๊ฐ์ ๋ณด๋ด๊ณ ์ถ์ง ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. iOS์ ๊ฐ์ธ ์ฑ์ ๊ด์ฌ์ด ์๋ค๋ฉด pub์์ ์ปค๋ฎค๋ํฐ ์ ๊ณต ํจํค์ง๋ก ๊ตฌํํ๋ ๊ฒ์ ํ์ํฉ๋๋ค.
์๋ง๋ ํด๊ฒฐ์ฑ ์ ๋ชจ๋ ๊ฒ์ ์ง์ํด์ผ ํ๋ ์ถ์์ ์ธ ๋ฐฐ๊ฒฝ ๋ฉ์ปค๋์ฆ์ ๋ง๋ค๋ ค๊ณ ํ๋ ๋์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ค๋์ค ์ฌ์์ ์ํ ํ๋ฌ๊ทธ์ธ๊ณผ ๊ฐ์ ํน์ ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ฌ๊ทธ์ธ์ ๋ง๋ค๊ณ ๋ฐฑ๊ทธ๋ผ์ด๋์์ GPS/์์น๋ฅผ ์ํ ํ๋ฌ๊ทธ์ธ์ ๋ง๋๋ ๊ฒ์ ๋๋ค.
์ฑ์ ์ฑ์ผ๋ก ๊ฐ์ ธ์ค๋ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ํ์ด๋จธ๋ฅผ ์คํํ ์ ์์ต๋๊น?
ํน์ ์๊ฐ์ ์ ๊ฒฝ?
2018๋ 3์ 21์ผ ์์์ผ 08:49์ Dylan Drost [email protected] ์์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
์๋ง๋ ํด๊ฒฐ์ฑ ์ ๋ค์๊ณผ ๊ฐ์ ํน์ ๋ฐฐ๊ฒฝ ํ๋ฌ๊ทธ์ธ์ ๋ง๋๋ ๊ฒ์ ๋๋ค.
๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ค๋์ค ์ฌ์์ ์ํ ํ๋ฌ๊ทธ์ธ ๋ฐ GPS/์์น๋ฅผ ์ํ ํ๋ฌ๊ทธ์ธ
์ถ์์ ์ธ ๋ฐฐ๊ฒฝ์ ๋ง๋ค๋ ค๊ณ ํ๋ ๋์ ๋ฐฐ๊ฒฝ ๋ฑ์์
๋ชจ๋ ๊ฒ์ ์ง์ํด์ผ ํ๋ ๋ฉ์ปค๋์ฆ.โ
์ด ์ค๋ ๋์ ๊ฐ์ ํ๊ธฐ ๋๋ฌธ์ ์ด ๋ฉ์์ง๋ฅผ ๋ฐ๊ณ ์์ต๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/flutter/flutter/issues/3671#issuecomment-374867947 ,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AK-c-E0KdEkvbH5uCBIM8FaAbYQkSU2tks5tghQWgaJpZM4IVsUk
.
@iBob101 android_alarm_manager ํ๋ฌ๊ทธ์ธ์ android_intent ํ๋ฌ๊ทธ์ธ๊ณผ ํจ๊ป ์ฌ์ฉํ๋ฉด ๊ฐ๋ฅํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ด ์ฌ์ฉ ์ฌ๋ก์์ ํ์ํ ๋ชจ๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ ํน์ ์๊ฐ์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ค๋์ค๋ฅผ ์ฌ์ํ๋ ๊ฒ์ด๋ฏ๋ก @aegis123 ์ ์์ด ํ๋ฅญํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์๊ฒ ์์ํ ์ ์๊ณ ์๊ฐ์ด ์ง๋๋ฉด ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ค๋ฅผ ์ง์ํ๋ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํ ์ ์์ต๋๋ค.
๋ฐฑ๊ทธ๋ผ์ด๋์์ ์์ ์ ์ฌ์ํ ๋๋ ํ์ํฉ๋๋ค.
๋๋ ์ด๊ฒ์ด android_alarm_manager ํ๋ฌ๊ทธ์ธ์์ ์ด๋ป๊ฒ ์ํ๋์๋์ง ์ดํด๋ณด์๊ณ ๋ด๊ฐ ์์งํ ์ ์๋ ๊ฒ์ผ๋ก๋ถํฐ runFromBundle ์ ํธ์ถํ์ฌ Android์์ Dart ์ฝ๋๊ฐ ํธ์ถ๋ฉ๋๋ค. ํธ์ถ๋ Dart ํจ์๋ ์ง์ ์ ์ ์ํด ์ง์ ๋์ง๋ง ํด๋น ํจ์์ ์ ๋ณด๋ฅผ ์ ๋ฌํด์ผ ํ๋ ๊ฒฝ์ฐ ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น? ์ํ ์ฌ์ฉ ์ฌ๋ก๋ ์๋ฆผ์ ํตํด ์ง์ ์๋ตํ ์ ์๋ ์ฑํ ์ฑ์ ๋๋ค. ์ด ๋งํฌ ์ ๋ฐ๋ฅด๋ฉด ์๋ฆผ์ ์๊ฒฉ ์ ๋ ฅ์ ํ์ฉํ์ง๋ง ์ฝ์ ํ ์คํธ๋ฅผ Dart ๊ธฐ๋ฅ์ผ๋ก ์ ๋ฌํ์ฌ ์๋ต์ ๋ณด๋ผ ์ ์๋๋ก ์ฒ๋ฆฌํ ์ ์์ ๊ฒ ๊ฐ์ง ์์ต๋๋ค.
๋ ๋ค๋ฅธ ์๋ ์ ์ด๋ฉ์ผ์ด ์์ ๋์์ ๋ ์๋ฆผ์ ํ์ํ๋ ์ด๋ฉ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ค. ์์ ์ค ํ๋๊ฐ ํ์๋ ์ ์๋ ์์ ์ ์ด๋ฉ์ผ์ ๋ณด๊ดํ๋ ๊ธฐ๋ฅ์ผ ์ ์์ผ๋ฉฐ, ์ด ์์ ์ Dart ๊ธฐ๋ฅ์ ์ํด ์ํ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ํด๋น ๊ธฐ๋ฅ์ ์ด๋ค ์ด๋ฉ์ผ์ ๋ณด๊ดํด์ผ ํ๋์ง ์์์ผ ํฉ๋๋ค.
@MaikuB ํค ๊ฐ ์์ ๋ณด์ ํ ์ ์๋ ์ฌ์ ์ ์ ๋ฌํ ์ ์๋๋ก PR์ ๋ง๋ค ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ ์์์๋ Android Service ๊ตฌ์ฑ ์์์ ์ ์ฌํ ๊ฒ์ด ํ์ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ flutter๋ ๊ฐ OS๊ฐ ์ ๊ณตํ ์ ์๋ ๋ชจ๋ ๋จ์ผ API๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ์ค๊ณ๋์ง ์์๊ธฐ ๋๋ฌธ์ ์ค์ ๋ก kotlin/java oder swift์์ ์ฑ์ ์์ฑํ๋ ๊ฒ์ด ๋ ๋์ ์ ์์ต๋๋ค.
@bkonyi ๋ ํ์ฌ ์ด ๋ฌธ์ ์ ๋ํด iOS์์ ๋ฌด์์ ํ ์ ์๋์ง ๊ฒํ ํ๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ด๊ฒ์ Flutter๋ก ๋ฐฑ๊ทธ๋ผ์ด๋ ์๋น์ค๋ฅผ ํ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๊น? ์: ์๋ฒ์์ ํธ์ ์๋ฆผ์ ํ์ ํ๋ ์๋น์ค.
@s-bauer ํฌ๊ทธ๋ผ์ด๋ ์๋ฆผ์ด ์๋ ํ ํญ์ ์คํ์ Android์ ๊ฒ์ด ์๋์ง๋ง ์ฝ๋์์ startForeground
์ ๋ํ ์ธ๊ธ์ ์ฐพ์ง ๋ชปํ์ต๋๋ค.
๋๋ ๋น์ ์ ์ฌ์์ด ๋ฌด์์ธ์ง ์ ๋ชจ๋ฅด๊ฒ ์ง๋ง ์๋๋ก์ด๋ ํฐ์ ํ๋ฉด์ด ๊บผ์ง๊ณ ์์ง์ด์ง ์์ ์ฑ ๋ช ์๊ฐ ํ์ ๊น์ ์ ์ ๋ค์ด๊ฐ๋ค๋ ๊ฒ์ ๊ธฐ์ตํ์ญ์์ค. ๋ชจ๋ ์๋น์ค(ํฌ๊ทธ๋ผ์ด๋ ์ ์ธ)๊ฐ ์์ ๋์ด ์์ง๋ง ์ด์ ์ฒด์ ๋ ๊ทธ๊ฒ์ด ์ต์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. FCM์์ ์ค๋ ํธ์ ์๋ฆผ์ด๋ ํน์ ์ค์ ์์ AlarmManager์์ ์ค๋ ์๋์ ๊ฐ๋ฐ์๊ฐ ์ํ ๋๋ง๋ค Android ๊ธฐ๊ธฐ/์ฑ์ ๊นจ์ธ ์ ์๋ ๊ฐ๋ฐ์์ ์ ์ด ํ์ ์๋ ์ ์ผํ ๋ ๊ฐ์ง์ผ ์ ์์ง๋ง ๋ฌด๊ธฐํ์ ์๋๋๋ค. ์๊ฐ. ์ด์ ์ฒด์ ๊ฐ ๋ฐฐํฐ๋ฆฌ์ ๊ฐ์ฅ ์ ํฉํ๋ค๊ณ ์๊ฐํ๋ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ๋ง์ด ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ์ ์๊ธฐ ๋ชจ๋์ ๋ํด ์ฐธ์กฐํ์ญ์์ค. https://developer.android.com/training/monitoring-device-state/doze-standby
iPhone์์๋ ํจ์ฌ ๋ ์ ํ์ ์ ๋๋ค.
๋ํ FCM ๋๋ APNS์์ ํธ์ ์๋ฆผ์ ์์ ํ๊ธฐ ์ํด ์๋น์ค ๋๋ ์ฐ๊ฒฐ์ด ํ์ฑ ์ํ๋ฅผ ์ ์งํด์ผ ํ๋ ์ด์ ๋ฅผ ์ ์ ์์ต๋๋ค. ์ด์ฉ๋ฉด ๋ด๊ฐ ๋์น๊ณ ์๋ ๊ฒ์ด ์์ต๋๊น?
๋น ๋ฅธ ์ ๋ฐ์ดํธ: iOS์ฉ ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ์ด ๊ตฌํ๋์์ผ๋ฉฐ ๊ฒํ ๋ฅผ ์ํด ์ค๋น ์ค์ ๋๋ค(PR flutter/engine#5539). ์ผ๋จ ๋์ฐฉํ๋ฉด ์ผ๊ด๋ ์ธํฐํ์ด์ค๋ฅผ ๊ฐ๋๋ก Android ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ ์ ๋ฐ์ดํธ๋ฅผ ์์ํ๊ณ ์ํ ํ๋ฌ๊ทธ์ธ์ ๊ฒ์ํฉ๋๋ค. ์ด ๋ชจ๋ ๊ฒ์ด ์๋ง์ ์๋ฃ ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค .
@bkonyi ๋ https://github.com/flutter/flutter/issues/17566 ์ผ๋ก๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๊น?
@piotrpalek , ์, ํ์ง๋ง ๋ค์ํ ์ด์ ๋ก ์ฝ๋ฐฑ์ ๋ํ UI ๊ฒฉ๋ฆฌ๋ฅผ ๋ ์ด์ ๊ณต์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋์์ด ์ด์ ๊ณผ ์ฝ๊ฐ ๋ค๋ฅผ ์ ์์ต๋๋ค. ํฌ๊ทธ๋ผ์ด๋ UI์์ ๋ชจ๋ ํต์ ์ ๊ฒฉ๋ฆฌ ํฌํธ, MethodChannel
๋๋ ๊ธฐ๋ณธ ๊ฒฉ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต์ ์ ์์กดํ์ง ์๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ํตํด ์ค์ ๋์ด์ผ ํฉ๋๋ค.
์ํ ์ ๋ฐ์ดํธ: iOS ๋ฐ Android ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ ๋ณ๊ฒฝ ์ฌํญ์ด ๋ชจ๋ ๊ฒํ ๋์์ด๋ฉฐ ๊ณ์ ๋ฐ๋ณต๋๊ณ ์์ต๋๋ค. ๋๋ flutter/engine#5539์ iOS ๋ณ๊ฒฝ ์ฌํญ์ด ์ฃผ์ ์์ ์์ฒญ ์์ด ๋ฉฐ์น ์์ ์๋ฅํ ๊ฒ์ผ๋ก ์์ํ๊ณ , flutter/engine#5640์ Android ๋ณ๊ฒฝ ์ฌํญ์ ๊ฒํ ์ ์๊ฒฌ์ ์ฒ๋ฆฌํ ํ ๋ค์ ์ฃผ์ ์๋ฃ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ๊ธฐ๋ค๋ ค ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
์์ฒญ๋. ์, ๋ ๋ค ์ด ๋ฌธ์ ๋ฅผ ์ธ๊ธํ๋ฉด์ PR์ ๋ณด์์ต๋๋ค. ์ํ ํ๋ฌ๊ทธ์ธ์ ์ธ๊ธํ๋๋ฐ iOS๋ฅผ ๋ณธ ์ ์ด ์๋๋ฐ Android ์ํ์ด ์์ต๋๊น? ๋ณ๊ฒฝ ์ฌํญ์ด ์ ์ฉ๋๋ฉด Android ์๋ ๊ด๋ฆฌ์ ํ๋ฌ๊ทธ์ธ ์ ์ ๋ฐ์ดํธํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
@MaikuB , ์, Flutter/engine#5640์ด ์ถ์๋๊ณ flutter/plugins#642๊ฐ ์๋ฃ๋๋ฉด AlarmManager ํ๋ฌ๊ทธ์ธ์ด ์ ๋ฐ์ดํธ๋ฉ๋๋ค.
์ฌ๋ณด์ธ์. ์ด ์ฃผ์ ์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น? ํด๊ฒฐ์ด bucket7 ๋ง์ผ์คํค์ผ๋ก ์ง์ฐ๋์์ต๋๋ค. ์ ๋ง ๊ฑฐ๊ธฐ์ ์ฐฉ๋ฅํ ๊ฒ์ธ๊ฐ? ์ด๊ฒ์ ์ฐ๋ฆฌ ํ๋ก์ ํธ์ ์ค์ํ ๊ธฐ๋ฅ์ ๋๋ค. ์๋ตํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
๋ถํํ๋ ๋ฉฐ์น ๋์ ์ฐ์ ์์๋ฅผ ๋ณ๊ฒฝํด์ผ ํ์ง๋ง ์ง๊ธ์ ๋ค์ ์์ ์ค์ ๋๋ค. ๊ฑฐ์ _๊ฑฐ์_ ์์ด์. ๊ธฐ๋ค๋ ค์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
์ด์ flutter/engine#5539, flutter/engine#5947, flutter/engine#5954๊ฐ ์ถ์๋์์ผ๋ฏ๋ก Android ๋ฐ iOS์์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ์ ํ์ํ ๋ชจ๋ ๊ธฐ๋ฅ์ด ์์ง์ ๊ตฌํ๋์์ผ๋ฉฐ ๋ค์ ๊ธฐ๊ฐ ๋์ ๊ธฐ๋ณธ Flutter ์ ์ฅ์๋ก ๋ง๋ค์ด์ผ ํฉ๋๋ค. ์์ง๋กค. ๋ฌธ์์ ์์ ๊ฐ ์์
์ค์ด๋ฉฐ android_alarm_manager
ํ๋ฌ๊ทธ์ธ ์์ ์ฌํญ์ด ๊ฒํ ์ค์
๋๋ค(flutter/plugins#642).
@bkonyi ๋ ์ด์ android_alarm_manager
๋ IO์์ ์๋ํฉ๋๊น?
@ianldgs , ๋ถํํ๋ ์๋์. iOS๋ ์ฃผ๊ธฐ์ ์ผ๋ก ์ฝ๋๋ฅผ ์คํํ๊ธฐ ์ํ ์ด๋ค ์ข ๋ฅ์ ๋ฉ์ปค๋์ฆ๋ ์ ๊ณตํ์ง ์์ผ๋ฏ๋ก iOS ๊ตฌํ์ ์์ฑํ ์ ์์ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค( ์ด SO ๊ฒ์๋ฌผ ์ฐธ์กฐ). ์ ํ๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ ๋ชจ๋(์: ์ค์ํ ์์น ๋ณ๊ฒฝ, ํธ์ ์๋ฆผ, Bluetooth ์ํ ๋ณ๊ฒฝ ๋ฑ) ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ฌ ๋์ผํ ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๋ ๊ฒ์ด ์ข ์ข ๊ฐ๋ฅํฉ๋๋ค.
@bkonyi , iOS์์ ์ค๋ ๊ธฐ๊ฐ(3๋ถ) ๋์ ๊ธฐ๋ณธ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ ์คํํ ์ ์๋ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ ๊น์?
๋ช ํํ ํ์๋ฉด, ์ฌ๊ธฐ ์ฐ๋ฆฌ์ ํ์ฌ ๋ฌธ์ ๊ฐ ์์ต๋๋ค...
๋ฐฐ๊ฒฝ:
์ฐ๋ฆฌ ์ฑ์ ๋ธ๋ฃจํฌ์ค ๋น์ฝ์ ์ฌ์ฉํ์ฌ ๋๊ตฐ๊ฐ๊ฐ ํ ์์น์์ ๋ณด๋ด๋ ์๊ฐ์ ํ์ธํฉ๋๋ค. AppDelegate.swift์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ๋น์ฝ ์ฝ๋๋ฅผ ์์ฑํ์ต๋๋ค.
๋ฌธ์ :
Flutter๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ ์๊ฐ ์ ์ฐ์ฅํ๊ณ ์์์๋ ๋ถ๊ตฌํ๊ณ ์์น ์ด๋ฒคํธ(์ด ๊ฒฝ์ฐ ์์ญ ์ง์
/์ข
๋ฃ)์ ์ํด ๊นจ์ด๋ ํ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋ค์ดํฐ๋ธ ์ฝ๋๋ฅผ ์คํํ ๋ ๋ช ์ด ํ์ ์ฑ์ ์ข
๋ฃํ๋ ๊ฒ์ผ๋ก ๋ณด์
๋๋ค.
Flutter์ ๊ด๋ จ์ด ์๋ค๊ณ ์๊ฐํ๋ ์ด์ :
๊ธฐ๋ณธ iOS ์ฑ์ผ๋ก ๊ธฐ๋ณธ ๋น์ฝ ์ฝ๋๋ฅผ ํ
์คํธํ์ผ๋ฉฐ ์ง์์ ์ผ๋ก 180์ด์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ ์๊ฐ์ ์ป๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
์ฐ๋ฆฌ๊ฐ ์๋ํ ๊ฒ:
์ฐ๋ฆฌ๊ฐ ์ฑ๊ณตํ ์ ์ผํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฑ์ด ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์์๋์์ ๋ runApp() ์ ์ main()์ 30์ด ์ง์ฐ์ ๋๋ ๊ฒ์
๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ ๋ค๋ฅธ ๋ฌธ์ ๋ฅผ ์ผ๊ธฐํ์ต๋๋ค.
๊ธด ์ค๋ช ์ ๋ํด ์ฌ๊ณผ๋๋ฆฝ๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ ์ฐ๋ฆฌ์๊ฒ ํฐ ๋ฌธ์ ์ด๋ฉฐ ์์ผ๋ก ๋ช ์ฃผ ์์ ๋ฆด๋ฆฌ์คํ๋ ค๊ณ ํฉ๋๋ค.
์ด ์์ ์ผ๋ก ๋ฌธ์ ๋ ํด๊ฒฐ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๋ง์ง๋ง์ผ๋ก, ์ฐ๋ฆฌ๋ ๋ฐฑ๊ทธ๋ผ์ด๋์์ dart ์ฝ๋๋ฅผ ์คํํ๋ ๊ฒ์ ๋ํด ๊ทธ๋ค์ง ์ ๊ฒฝ ์ฐ์ง ์์ต๋๋ค. ์คํ๋ ค ์ฐ๋ฆฌ์ ์ฃผ์ ๊ด์ฌ์ฌ๋ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๊นจ์ด๋ฌ์ ๋ Flutter๊ฐ ์ฑ์ ์กฐ๊ธฐ์ ์ข ๋ฃํ์ง ์๋๋ก ํ๋ ๊ฒ์ ๋๋ค.
์ด๋ค ๋์์ด๋ผ๋ ๋๋จํ ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
๊ฐ์ฌ ํด์!
@AndrewPetrovics ๋ถํํ๋ ์ด๋ฌํ ๋ณ๊ฒฝ ์ฌํญ์ ์ฃผ๋ก ๋ฐฑ๊ทธ๋ผ์ด๋์์ Dart ์ฝ๋๋ฅผ ์คํํ ์ ์๋๋ก ํ๊ธฐ ์ํ ๊ฒ์ด๋ฏ๋ก ์ด๊ฒ์ด ๊ทํ๊ฐ ๋ณด๊ณ ์๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง ์์ต๋๋ค. ์ ๋ iOS ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ ์ ์ฑ ์ ์ต์ํ์ง ์์ง๋ง ์ค์ ๋ก ๊ทํ์ ์ฌ์ฉ ์ฌ๋ก์ ์ ์ฌํ Android + iOS์ฉ ์ง์คํ์ฑ ํ๋ฌ๊ทธ์ธ์ ์์ ์ค์ด๋ฏ๋ก ํ ๋ฒ ๋ฐ์ํ๋ ๋ฌธ์ ๋ฅผ ์ฃผ์ํ๊ฒ ์ต๋๋ค. ์ค๋/๋ด์ผ iOS ๋ถ๋ถ์ ์์ํฉ๋๋ค.
@chinmaygarde , @AndrewPetrovics ๊ฐ ๊ฒช๊ณ ์๋ ๋ฌธ์ ์ ๋ํด ์๊ณ ๊ณ์ญ๋๊น? ์๋ง๋ ์ด๊ฒ์ ์๋ก์ด ๋ฌธ์ ๋ฅผ ์ ๊ธฐํ ๊ฐ์น๊ฐ ์์ต๋๋ค.
@bkonyi , ์ข์ ์๋ฆฌ. ์ฐ๋ฆฌ๋ ๋น๋ถ๊ฐ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฐพ์์ง๋ง ๋งค์ฐ ํดํน๋์์ต๋๋ค. ๊ธฐํ๊ฐ ๋๋ฉด ๋ฐ๋ก ์ด์๋ฅผ ๋ง๋ค๊ฒ ์ต๋๋ค.
๊ฐ์ฌ ํด์!
@bkonyi ์ง๋ฌธํด๋ ๋ ๊น์? android_alarm_manager 0.2.0์ ์ธ์ pub.dartlang.org์ ๊ณต๊ฐ์ ์ผ๋ก ๋ฐฐํฌ๋๋์?
@ethael ์ง๊ธ ์ฌ์ฉํ ์ ์์ด์ผ ํ๋ฉฐ ์ ๋ฐ์ดํธ๋ฅผ ๊ฒ์ํ ์ ์๋ ๊ถํ์ ์ป๊ธฐ ์ํด ๊ธฐ๋ค๋ฆฌ๊ณ ์์์ต๋๋ค.
์ด์ ๋ํ ์์ ๋ ๋ฌธ์๊ฐ ์์ต๋๊น?
๊ฐ์ฌ ํด์!
@Solban flutter/plugins ์ ์ฅ์์๋ ๋ ๊ฐ์ง ์๊ฐ ์์ต๋๋ค.
๋ํ Android(Kotlin) ๋ฐ iOS(Obj-C)๋ฅผ ๋ชจ๋ ์ง์ ํ๋ ์์ ์ ์ง์คํ์ฑ ํ๋ฌ๊ทธ์ธ์ด ์์ง๋ง ์ด๊ฒ์ด ํ๋ฌํฐ/ํ๋ฌ๊ทธ์ธ์ ํฌํจ๋ ์ง ์ฌ๋ถ๋ ํ์คํ์ง ์์ต๋๋ค.
๋ค์์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ ๊ด๋ จ ๊ธฐ๋ฅ์ ๋ํ ๋ช ๊ฐ์ง ์ ์ฉํ ๋ฌธ์์ ๋๋ค.
SendPort
๊ฐ์ฒด๋ฅผ Flutter์ ๋ฑ๋กํ์ฌ ์กฐํํ ์ ์๋๋ก ํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค(์ค์ ๋ฌธ์๊ฐ ๋๋ฝ๋ ๊ฒ์ผ๋ก ๋ณด์ด์ง๋ง ์ธํฐํ์ด์ค๋ ๊ฐ๋จํฉ๋๋ค).ํ์ฌ ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ ๊ธฐ๋ฅ์ด ์๋ ํ๋ฌ๊ทธ์ธ ์์ฑ์ ๋ํ ๊ณต์์ ์ธ ๋ฌธ์๋ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์์ผ๋ก ๋ช ์ฃผ ์์ Flutter ๋ธ๋ก๊ทธ์ Medium ๊ฒ์๋ฌผ์ด ๋ํ๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ์ ํ์ฉํ๋ ํ๋ฌ๊ทธ์ธ์ ์ค๊ณ, ๊ตฌํ ๋ฐ ์ฌ์ฉํ๋ ๊ณผ์ ์ ์๋ดํ ๊ฒ์ ๋๋ค.
๋ฐฑ๊ทธ๋ผ์ด๋ ์์
์ ๊ณ์ํ ์ ์๋ ์๋ฃจ์
์ด ์์ต๋๊น? Android์์ ์ฅ๊ธฐ ์คํ ์ฝ๋๋ฅผ ๊ณ์ ์คํํ๋ ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ Foreground service
๋ฟ์
๋๋ค.
์ฌ์ฉ ์ฌ๋ก๋ GPS ์์น ์ถ์ ์ ๊ณ์ํ๋ ๊ฒ์
๋๋ค.
@audkar๋ ํ์ฌ ์ง์์ ์ธ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์
์ ์ฒ๋ฆฌํ ์ ์๋ ํ๋ฌ๊ทธ์ธ์ด ์์ง๋ง ์ด๊ฒ์ด ์ํํ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํ์ง๋ ์์ต๋๋ค. ์์์ ์ธ๊ธํ ๊ธฐ๋ฅ์ ํฌ๊ทธ๋ผ์ด๋ ์๋น์ค์ ํจ๊ป ํ์ฉํ๋ ํ๋ฌ๊ทธ์ธ(์ง์คํ์ฑ ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ JobIntentService
๋์ )์ ์ ์๋ํฉ๋๋ค.
์ ๋ ํ์ฌ iOS / Android Background Geolocation / Geofencing SDK ๋ฅผ Flutter๋ก ์ด์ํ๊ณ ์์ต๋๋ค. flutter_background_geolocation
๋ผ๊ณ ํฉ๋๋ค.
Dart / Flutter์ ๋ํด ์ฝ 5์ผ ๊ฐ์ ๊ฒฝํ์ด ์์ง๋ง ์ดํดํฉ๋๋ค. 2์ฃผ ์ด๋ด์ ์ค๋น๋์ด์ผ ํฉ๋๋ค(๋คํธ ๊ด๋ จ ์์ ์ ๊ฒฝ์ฐ ๋ฌธ์๋ ์กฐ๊ธ ๋ ์ค๋ ๊ฑธ๋ฆด ๊ฒ์ ๋๋ค).
์ด SDK๋ ๊ฑฐ์ 5๋ ์ด ๋์์ผ๋ฉฐ ํํ์์ผ๋ก ์ง์๋ฉ๋๋ค. ์๋ Apache Cordova ์ฉ์ผ๋ก ๊ฐ๋ฐ๋์์ผ๋ฉฐ ๋์ค์ React Native ๋ฐ NativeScript ๋ก ์ด์๋์์ต๋๋ค. ์์ ๋ค์ดํฐ๋ธ ์ฑ์์๋ ์๋ํฉ๋๋ค. ๋ด๋ถ์ ์ผ๋ก๋ ๊ฐ ๊ฐ๋ฐ ํ๋ซํผ์์ ์ฌ์ฉ๋๋ ๋์ผํ ํต์ฌ Obj-c + Java ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.
SDK๋ ์๋ ์ ๋คํธ์ํฌ๊ฐ ํ๊ดด๋ ๊ฐ๋ฅ์ฑ์ด ์๋ ํ๊ฒฝ์์ ์ฌ๋ ์ง์ญ(์: ํ๋ฆฌ์ผ์ธ, ์ง์ง)์ ์ต์ด ๋์์๋ฅผ ์ถ์ ํ๊ธฐ ์ํด ๊ฐ๋ฐ๋์์ต๋๋ค. ์ฑ์ด ์ข ๋ฃ๋๊ฑฐ๋ ๊ธฐ๊ธฐ๊ฐ ์ฌ๋ถํ ๋๋๋ผ๋ ์ถ์ ์ ๊ณ์ํด์ผ ํ์ต๋๋ค. ํ๋ฌ๊ทธ์ธ์๋ ์๋ฒ์ ์์น๋ฅผ ์๋์ผ๋ก ์ ๋ก๋ํ๊ธฐ ์ํ ์์ฒด SQLite ๋ฐ์ดํฐ๋ฒ ์ด์ค์ HTTP ์๋น์ค๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ์ด๋ ์ฑ์ด ์ข ๋ฃ๋์ด SDK์ ํฌ๊ทธ๋ผ์ด๋ ์๋น์ค๋ง "ํค๋๋ฆฌ์ค"๋ก ์คํ๋๋ ๊ฒฝ์ฐ Android์์ ํนํ ์ค์ํฉ๋๋ค.
:๊ฒฝ๊ณ : ์ด SDK๋ ์์ ์ฑ์ฉ์ผ๋ก ์ค๊ณ๋์ง ์์์ต๋๋ค. "์ฐจ๋ ์ถ์ " ์ฌ์ฉ ์ฌ๋ก(์: ํ์, ๋ฐฐ๋ฌ ์๋น์ค, ๋น์ ๋์, ์กฐ๊น ๋ฑ)๋ฅผ ์ํด ํน๋ณํ ์ค๊ณ๋์์ต๋๋ค.
๋ค์์ ๊ฐ๋จํ ๋ฐ๋ชจ ๋น๋์ค ์ ๋๋ค.
์ด์ ์ฒ ํ์ ์ฐธ์กฐํ์ญ์์ค.
ํธ์ง ๋ํ flutter_background_geolocation
์ ์ข
์์ฑ์ผ๋ก ํฌํจ๋ flutter_background_fetch
๋ก ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ํ ๊ฒ์
๋๋ค. ์ด ๋ชจ๋์ ์ฝ 15๋ถ๋ง๋ค ๋ฐฑ๊ทธ๋ผ์ด๋์์ iOS/Android ์ฑ์ ๊นจ์ฐ๊ณ ์ฃผ๊ธฐ์ ์์
์ ์ํํ ์ ์๋๋ก 30์ด์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์๊ฐ์ ์ ๊ณตํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ react-native
๋ฒ์ ์ ์ฐธ์กฐํ์ญ์์ค.
์๊ฒ ์ต๋๋ค. flutter_background_geolocation
์(๋ฅผ) ๊ฒ์ํ์ต๋๋ค. ๋ค์ดํฐ๋ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ํ์ฌ๋์ ํ๋ฌ๊ทธ์ธํ ์ ์๋ ๋ช ๊ฐ์ง ๊ตฌ๋ฉ์ด ์์ ์ ์์ผ๋ฉฐ ๋ฌธ์์ ์์ ๋ React ๋ค์ดํฐ๋ธ ๋ฒ์ ์์ ๋ฒ์ญํด์ผ ํฉ๋๋ค.
@christocracy ์ข์ ์์์ ๋๋ค. background-fetch๋ ์ด๋ป์ต๋๊น? ๊ทธ์ ๋ํ ํ๊ฐ๊ฐ ์์ต๋๊น?
@ethael Fetch๋ ์ฝ 2์ฃผ ํ์ ์ ๊ณต๋ฉ๋๋ค. ์์ฃผ ๊ฐ๋จํ ํ๋ฌ๊ทธ์ธ์ ๋๋ค.
@bkonyi ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ์ ์คํํ๊ธฐ ์ํด ์์น ๋ณ๊ฒฝ ํ๋ฌ๊ทธ์ธ์ ์๋ํ์ต๋๋ค. ํค๋๋ฆฌ์ค ๋ฌ๋์์ ์คํ๋ dart ์ฝ๋ฐฑ์ ๋ค๋ฅธ ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ MissingPluginException
์คํจํฉ๋๋ค.
Android์์ android_alarm_manager ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ๋ฉด AlarmService.setPluginRegistrant(this);
๋ก ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ฌ ๋ฐฑ๊ทธ๋ผ์ด๋ ์๋น์ค์์ ํ๋ฌ๊ทธ์ธ์ ๋ด๋ถ์ ์ผ๋ก ๋ฑ๋กํ์ต๋๋ค. ๊ทธ๋ฌ๋ iOS์ ์์ํ๋ ๊ฒ์ ๋ฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ์์ง ๋ชปํฉ๋๋ค.
ํ์ฌ iOS์ ํค๋๋ฆฌ์ค ๋ฌ๋์์ ๋ค๋ฅธ ํ๋ฌ๊ทธ์ธ์ ํธ์ถํ ์ ์์ต๋๊น? ๊ทธ๋ ๋ค๋ฉด ํด๋น ์ปจํ ์คํธ์์ ํ๋ฌ๊ทธ์ธ์ ์ด๋ป๊ฒ ๋ฑ๋กํ ์ ์์ต๋๊น?
@bkonyi ์ด ๋ฌธ์ ๋ ํด๊ฒฐ๋์ง ์์์ผ๋ฏ๋ก ๋ค์ ์ด์ด์ผ ํฉ๋๋ค. AlarmManager๋ ์๊ฐ ์ ํ ์ด๋ฒคํธ๋ง ์ง์ํ๊ธฐ ๋๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ฒ๋ผ ๋ณด์ ๋๋ค. Flutter๋ ๋ ์ผ๋ฐ์ ์ธ ๊ฒ์ด ํ์ํ๋ฏ๋ก ์๋ฅผ ๋ค์ด ๋ฒ์ ๋ด์ Bluetooth ์ฅ์น์ ๊ฐ์ ํน์ ์ด๋ฒคํธ๋ฅผ ์์ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ iOS๋ฅผ ๋ ์ ์ง์ํด์ผ ํฉ๋๋ค. iOS๊ฐ ํจ์ฌ ๋ ์ ํ์ ์ด๋ผ๋ ๊ฒ์ ์ดํดํ์ง๋ง Flutter๋ ๊ธฐ๋ณธ ํ๋ก๊ทธ๋๋จธ๊ฐ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ ์ง์ํด์ผ ํฉ๋๋ค.
Flutter๋ก ์์ํ๊ฒ ๋์ด ๊ธฐ๋ปค์ง๋ง, ๋จ์ํ ์ฑ์ ์ ์ธํ ๋ชจ๋ ์ฑ์์ Flutter๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋ง๋๋ ์ด์ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ง์ ๊ฒ ๊ฐ์ต๋๋ค. ๋๋ ๊ตฌ๊ธ์ ๋ ๋ง์ ๊ฒ์ ๊ธฐ๋ํ๊ณ , ๊ฐ๋ฐ์๋ค์ด ํ๋ฌ๊ทธ์ธ์ ๋ง๋ค์ด ๊ทธ๋ค์ด ๋จ๊ธด ์ฃผ์ ๊ณต๋ฐฑ์ ๋ฉ์ธ ๊ฒ์ ๊ธฐ๋ํ๋ ๊ฒ์ ๊ทธ๋ค์๊ฒ ๋ถ๊ณตํํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
@dude8604 Google์ด ๋ชจ๋ ๊ฒ์ ์ ๊ณตํ์ง๋ ์์ ๊ฒ์ด๋ฉฐ ์ํ๊ณ์ ํ๋ฌ๊ทธ์ธ์ ๊ธฐ์ฌํ๋ ๊ฒ์ (๋์ ๊ฐ์) ์ 3์ ํ๋ฌ๊ทธ์ธ ๊ฐ๋ฐ์์๊ฒ ๋ฌ๋ ค ์์ต๋๋ค. ํ์ฌ 2๋ง๋ฆฌ๋ฅผ ๋ฐ๋ ค์ค๊ณ ์์ต๋๋ค.
์ ๋ Cordova, React Native ๋ฐ NativeScript๋ก ๋ง์ ์๊ฐ์ ๋ณด๋์ต๋๋ค. Flutter๋ฅผ ์ฌ์ฉํ ์ง 2์ฃผ๊ฐ ์ง๋ ํ, ๋ถ๋ช ํ ๊ตฌ๋ฉ์ด ์์ง๋ง(์๋ฅผ ๋ค์ด, ๊ฐ๊น์ด ์ฅ๋์ ๊ธฐ์ฌํ ๊ฒ์ด๋ผ๊ณ ํ์ ํ๋ ํฌ๋ก์ค ํ๋ซํผ Map ๊ตฌ์ฑ ์์๊ฐ ์์ง๋ง) ๊ฝค ํ๋ฅญํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ ๋ ์ง๋ 5๋ ๋์ iOS ๋ฐ Android(ํนํ ์ง์ค๋ก์ผ์ด์ ๋ฐ ์ง์คํ์ฑ)์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ ์ ๋ฌธ์ผ๋ก ํ๋ ์ ๋ฌธ ํ๋ฌ๊ทธ์ธ ๊ฐ๋ฐ์์ ๋๋ค. ๋น์ ์ด ์๊ณ ์ถ์ ๊ฒ์ด?
@christocracy ์ 3์ ํ๋ฌ๊ทธ์ธ์ด ํ์ํ๋ค๋ ๋ฐ ๋์ํ์ง๋ง ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ์ด๋ ํน์ ์ด๋ฒคํธ์ ๋ํ ์ฝ๋ฐฑ ๊ธฐ๋ฅ์ ๋ฑ๋กํ ์ ์๋ค๋ ๊ฒ์ ์ฑ ํ๋ ์์ํฌ๊ฐ ์ ๊ณตํด์ผ ํ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค. ๋ด ๋ฌธ์ ๋ ํต์ฌ ๊ธฐ๋ฅ์ ํ์ฅํ๊ธฐ ์ํด ํ๋ฌ๊ทธ์ธ์ ๋ง๋ค์ด์ผ ํ๋ ๊ฒ์ด ์๋๋ผ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ด ๋๋ฝ๋ ํ๋ ์์ํฌ๋ฅผ ์ถ์ํ๊ณ ๊ฐ๋ฐ์๊ฐ ์ด ๊ฒฉ์ฐจ๋ฅผ ๋ฉ์ฐ๊ธฐ ์ํด ์๋ฆฌ ํ์ฌ์ ์์ํ์ฌ ์๊ฐ์ ํ ์ ํ๊ธฐ๋ฅผ ๊ธฐ๋ํ๋ ๊ฒ์ ๋๋ค. ์ด์จ๋ , ์ด๊ฒ์ ์ด๊ฒ์ ๋ ผ์ํ๊ธฐ์ ์ ํฉํ ์ฅ์๊ฐ ์๋๋๋ค.
๋ฐฑ๊ทธ๋ผ์ด๋ ์๋น์ค๋ฅผ ์คํํ๊ณ ํน์ ์ด๋ฒคํธ๋ฅผ ์ฝ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌ ๋ฐ ๊ธฐ๋กํ๊ณ ํด๋นํ๋ ๊ฒฝ์ฐ ๋๋ฅด๋ฉด ๊ธฐ๋ณธ ์ฑ์ ์คํํ๋ ์๋ฆผ์ ๋ง๋ค๊ณ ์ถ์ต๋๋ค. ์ด๋ฒคํธ์ ๋ช ๊ฐ์ง ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ๋ฒ์์ ์๋ ์ Bluetooth ์ฅ์น, ์์ผ์์ ๋ฐ์ดํฐ ์์ , USB ์ฅ์น์์ ๋ฐ์ดํฐ ์์ , SMS ์์ , GPS ์์น ๋ณ๊ฒฝ, Bluetooth ์ฅ์น ์ฐ๊ฒฐ ์๋, ํน์ ๋ฌผ๋ฆฌ์ ๋ฒํผ ๋๋ฆผ, ๊ฐ์๋๊ณ ๋ฐ์ดํฐ ์ด๊ณผ ์ง์ ๋ ๊ฐ, ๋ฉ์ธ ์ฑ์ด ์ข ๋ฃ๋๋ ๊ฒฝ์ฐ ๋ฑ ์๊ฐํ์ง ๋ชปํ ๋ง์ ๊ฒ๋ค์ด ์์ต๋๋ค. ๋๊ตฐ๊ฐ iOS ๋ฐ Android์์ ์๋ํ๋ ํฌ๊ด์ ์ธ ํ๋ฌ๊ทธ์ธ(๋ฌด๋ฃ ๋๋ ์คํ ์์ค ๋ผ์ด์ ์ค ํฌํจ)์ ๋ง๋ค ์ ์๋ค๋ฉด ์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ Flutter๋ก ๊ฐ๋ฐ์ ์์ํ ์ ์๋ค๋ ์ฌ์ค์ ์์ํ ๊ฐ์ฌํ ๊ฒ์ ๋๋ค.
@dude8604 ๋น์ ์ด ๋ฌด์์ ์ํ๋์ง ์ ๊ฒ ๊ฐ์์. ์ด ์์ ์ ๋๋ถ๋ถ์ ์ํํ๋ ค๋ฉด ์ง์์ ์ผ๋ก ์๋ฆผ์ด ํ์ํ ํฌ๊ทธ๋ผ์ด๋ ์๋น์ค๊ฐ ํ์ํฉ๋๋ค. ์ฌ์ฉ์๋ ์คํ ์ค์ธ ์๋น์ค๋ฅผ ์๊ณ ์์ต๋๋ค.
๋ด github ํ๋กํ์ ํตํด ์ ์๊ฒ ์ฐ๋ฝํ์ญ์์ค.
React Native๋ ๊ธฐ๋ณธ์ ์ผ๋ก "๋ฒํผ, ํ ์คํธ ํ๋ ๋ฐ ๋ชฉ๋ก ๋ณด๊ธฐ๋ฅผ ์ป๊ณ ๋๋จธ์ง๋ ์ฌ์ฉ์์๊ฒ ๋ฌ๋ ค ์์ต๋๋ค"์ ๊ฐ์์ผ๋ฉฐ ์ปค๋ฎค๋ํฐ ๋๋ถ์ ์ง๊ธ์ ๋ชจ์ต์ผ๋ก ์ฑ์ฅํ์ต๋๋ค. Google์ ๋ชจ๋ ๊ตฌํ์ ์ฒ๋ฆฌํ ์ ์์ผ๋ฉฐ Flutter ํ์ด Flutter ํฌ๊ธฐ์ 100x(10,000x?) ํฌ๊ธฐ์ ํ์์ ์ถ๊ฐํ ๋ Android ๋ฐ iOS์์ ์ ๊ณตํ๋ ๋ชจ๋ ๊ธฐ๋ฅ์ ๋ณต์ ํ ์ ์๋ค๊ณ ์๊ฐํ๋ ๊ฒ์ ๋ฏธ์น ์ง์ ๋๋ค.
android_alarm_manager
๋ฐ image_picker
๋ฅผ ์คํํ๋ ์ ํ๋ก์ ํธ์ Flutter 0.8.3-pre.47
๋ฅผ ๊ตฌํํ ํ์๋ (๋ ๋ค ์ค์น๋ ๊ฒฝ์ฐ) ์๋ํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ฑ์ด ๊ฐ์ ๋ก ์ข
๋ฃ๋ฉ๋๋ค. ์์ ๊ฐ ์๋ํ๋ฏ๋ก ์์ ์ ๋ชจ๋ ๊ฒ์ ๋ณต์ฌํ๊ณ Firebase๋ฅผ ์ค์ ํ์ง๋ง ์ฌ์ ํ ์๋ํ์ง ์์ต๋๋ค.
@deckerst ๊ฐ ์ ๊ธฐํ ๋ฌธ์ ๋ฅผ ์ถ๊ฐํ๊ธฐ ์ํด ๋ค๋ฅธ ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ๋ ์ฝ๋๋ฅผ ์คํํ ์ ์๋ ๊ฒ๊ณผ ๊ด๋ จํ์ฌ Android ๋ฐ iOS ๊ฐ์ ํจ๋ฆฌํฐ๊ฐ ์์ ๋ ์ด๊ฒ์ ๋ซํ ๊ฒ์ผ๋ก ๊ฐ์ฃผํ๋ ๊ฒ์ด ์ ์ ํ์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
ํธ์ง: ์ด๊ฒ์ ์ถ์ ํ๋ ๋ ๋ค๋ฅธ ๋ฌธ์ ๊ฐ ์์์ ๋ฐฉ๊ธ ์์์ฐจ๋ ธ์ต๋๋ค.
์ด ๊ธฐ์ฌ๋ฅผ ๋ณด์ง ์์ ์ฌ๋๋ค์ ์ํด ์ฌ๊ธฐ์์ ์ฐธ์กฐํ์ญ์์ค.
https://medium.com/flutter-io/executing-dart-in-the-background-with-flutter-plugins-and-geofencing-2b3e40a1a124
@slightfoot๋ ๊ฐ์ฌํฉ๋๋ค. ๊ทธ๊ฒ์ ๋ณด์๊ณ ํ๋ฌ๊ทธ์ธ๊ณผ ํจ๊ป ์๋ํ๋๋ก iOS ํค๋๋ฆฌ์ค ์คํ์ ์ํ ํฐ์ผ(#21925)์ ์ฐพ์์ต๋๋ค. ์ด ๋ ํฐ์ผ ์ฌ์ด์ ์ฐธ์กฐ๊ฐ ์์ผ๋ฉด ์ ์ฉํ์ ๊ฒ์ ๋๋ค.
๊ด๋ จ ์ฐธ๊ณ ์ฌํญ์ ๋ํด ๊ณต์ ๋ฌธ์(์: ์๋ฆฌ ์ฑ ์ ์ผ๋ถ๋ก ํฌํจ)์ ํค๋๋ฆฌ์ค ์คํ์ ํฌํจํ ๊ณํ์ด ์์ต๋๊น? ๋๋ ๊ทธ๋ ๊ฒ ๊ฐ์ ํ์ง๋ง ๋งค์ฒด๋ฅผ ํ์ธํ์ง ๋ชปํ๋ ์ปค๋ฎค๋ํฐ์ ๋ ๋ง์ ๋ถ๋ถ์ด ์๋ค๋ ์ ์ ๊ฐ์ํ ๋ ๋ฌผ์ด๋ณผ ๊ฐ์น๊ฐ ์๋ค๊ณ ์๊ฐํ์ต๋๋ค.
์ข์ ์ง์ @MaikuB , ์ด์ ๋ํ ๋ฌธ์ ๋ฒ๊ทธ๋ฅผ ์ถ๊ฐํ์ต๋๋ค!
Flutter์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ง์, https://www.youtube.com/watch?v=_LfjILXswJs ๋ฅผ ์ฐธ์กฐํ์ธ์.
์ ์ดํด๊ฐ ๋์ง ์์ต๋๋ค. Flutter๊ฐ ์ด์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ์ ์ง์ํ๋ค๋ฉด ํํ ๋ฆฌ์ผ์ ๋๋ถ๋ถ ํ๋ซํผ๋ณ ์ฝ๋๊ฐ ์๋ ์ด์ ๋ ๋ฌด์์ธ๊ฐ์?
Android์ฉ Outlook ๋ค์ด๋ก๋ https://aka.ms/ghei36
๋ณด๋ธ ์ฌ๋: tonka [email protected]
๋ณด๋ธ ๋ ์ง: 2018๋
9์ 21์ผ ๊ธ์์ผ ์ค์ 3:39:28
~์: ํ๋ญ์ด๋ค/ํ๋ญ์ด๋ค
์ฐธ์กฐ: ํ๋ฆฝ ์์ด์ค; ์ธ๊ธํ๋ค
์ ๋ชฉ: Re: [flutter/flutter] Flutter๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ์ ์ํ ์ถ์ํ๋ฅผ ์ ๊ณตํด์ผ ํฉ๋๋ค(#3671).
Flutter์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ง์, https://www.youtube.com/watch?v=_LfjILXswJs ๋ฅผ ์ฐธ์กฐํ์ธ์.
โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์
๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub https://github.com/flutter/flutter/issues/3671#issuecomment-423490126 ์์ ํ์ธํ๊ฑฐ๋ https://github.com/notifications/unsubscribe-auth/ABWxFrGMGvfFtwkf025Q2Je6lUTZu2aIVgaPuth ์ค๋ ๋๋ฅผ ์์๊ฑฐํ์ธ์.
@dude8604 ํํ ๋ฆฌ์ผ์ ํน์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ ์ํํ๋ ํ๋ฌ๊ทธ์ธ์ ๊ฐ๋ฐํ๋ ค๋ ํ๋ฌ๊ทธ์ธ ๊ฐ๋ฐ์๋ฅผ ์ํ ๊ฒ์ ๋๋ค.
์ผ๋ถ ํน์ ํ๋ฌ๊ทธ์ธ์ ์๋น์ ๋ ํ๋ซํผ๋ณ ๊ตฌํ์ ๋ํด (๊ฐ๋ฅํ ํ ๋ง์ด) ๋์ด ๋ฉ์์ต๋๋ค.
๋ด ํน์ ์ฌ์ฉ ์ฌ๋ก์ ๋ํ ํ๋ฌ๊ทธ์ธ์ด ์๋ ๊ฒฝ์ฐ ์๋น์๋ก์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์์์ ์ฝ๋๋ฅผ ์คํํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
๋ณด๋ธ ์ฌ๋: Chris Scott ์๋ฆผ @github.com
๋ณด๋ธ ๋ ์ง: 2018๋
9์ 22์ผ ํ ์์ผ ์คํ 5:43:16
~์: ํ๋ญ์ด๋ค/ํ๋ญ์ด๋ค
์ฐธ์กฐ: ํ๋ฆฝ ์์ด์ค; ์ธ๊ธํ๋ค
์ ๋ชฉ: Re: [flutter/flutter] Flutter๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ์ ์ํ ์ถ์ํ๋ฅผ ์ ๊ณตํด์ผ ํฉ๋๋ค(#3671).
@dude8604 https://github.com/dude8604 ํํ ๋ฆฌ์ผ์ ํน์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ ์ํํ๋ ํ๋ฌ๊ทธ์ธ์ ๊ฐ๋ฐํ๋ ค๋ ํ๋ฌ๊ทธ์ธ ๊ฐ๋ฐ์๋ฅผ ์ํ ๊ฒ์ ๋๋ค.
์ผ๋ถ ํน์ ํ๋ฌ๊ทธ์ธ์ ์๋น์๋ ํ๋ซํผ๋ณ ๊ตฌํ์ ๋ํด (๊ฐ๋ฅํ ํ ๋ง์ด) ๋์ด ๋ฉ์์ต๋๋ค.
โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์
๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub https://github.com/flutter/flutter/issues/3671#issuecomment-423783230 ๋๋ ์ค๋ ๋ https://github.com/notifications/unsubscribe-auth/ABWxFhmlurQ08wWXLmMvE3E6yQ_lYvS1U ๋ฅผ ์์๊ฑฐํ์ญ์์ค.
@dude8604 ์๋์.
๋ด๊ฐ ํ์ฌ ์๊ณ ์๋ ํ:
"๋ฐฑ๊ทธ๋ผ์ด๋์์ ์์์ ์ฝ๋๋ฅผ ์คํ"ํ ์ ์์ต๋๋ค. ์๋๋ก์ด๋๋ ์ด์ ์๊ฒฉ ํฉ๋๋ค. iOS๋ ํญ์ ๊ทธ๋์์ต๋๋ค.
@dude8604 , @christocracy ๊ฐ ๋ง์ต๋๋ค. Medium ๊ธฐ์ฌ์์ ์ค๋ช ํ ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ ๊ธฐ๋ฅ์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ Dart ์ฝ๋๋ฅผ ์คํํ ์ ์๋ ํ๋ฌ๊ทธ์ธ์ ๋ง๋ค๊ณ ์ ํ๋ ๊ฐ๋ฐ์๋ฅผ ๋์์ผ๋ก ํฉ๋๋ค. ๋๋ถ๋ถ์ Flutter ์ฌ์ฉ์๋ ์ฌ์ฉ ์ฌ๋ก์ ์ผ์นํ๋ ๊ธฐ์กด ํ๋ฌ๊ทธ์ธ์ด ์๋ ํ ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ์ ์ํด ํ๋ซํผ๋ณ ์ฝ๋๋ฅผ ์์ฑํ ํ์๊ฐ ์์ต๋๋ค. ์ด๋ฌํ ํ๋ฌ๊ทธ์ธ์ Dart ์ธํฐํ์ด์ค ๋ค์์ ํ๋ซํผ๋ณ ์ฝ๋๋ฅผ ์ถ์ํํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
android_alarm_manager
๋ฐimage_picker
๋ฅผ ์คํํ๋ ์ ํ๋ก์ ํธ์Flutter 0.8.3-pre.47
๋ฅผ ๊ตฌํํ ํ์๋ (๋ ๋ค ์ค์น๋ ๊ฒฝ์ฐ) ์๋ํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ฑ์ด ๊ฐ์ ๋ก ์ข ๋ฃ๋ฉ๋๋ค. ์์ ๊ฐ ์๋ํ๋ฏ๋ก ์์ ์ ๋ชจ๋ ๊ฒ์ ๋ณต์ฌํ๊ณ Firebase๋ฅผ ์ค์ ํ์ง๋ง ์ฌ์ ํ ์๋ํ์ง ์์ต๋๋ค.
@rupert2133 ๋ ๋ง์ ์ ๋ณด๊ฐ ํฌํจ๋ ๋ฌธ์ ๋ฅผ ์ ๊ณ ํ์๊ฒ ์ต๋๊น? ๋ด๊ฐ ์๋ฆผ์ ๋ฐ์ ์ ์๋๋ก ์ ๋ฅผ ์ธ๊ธํด ์ฃผ์ญ์์ค. ์ด ๋ฌธ์ ๋ Dart ์ฝ๋์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ์ ๋ํ ๊ด๋ฒ์ํ ์๊ตฌ ์ฌํญ์ ๋ํ ๊ฒ์ด์๊ณ ๋ซํ ์์ผ๋ฏ๋ก ์ฌ๊ธฐ์ ์๋ ์ถ๊ฐ ์๋ต์ ๋ฌปํ ์ ์์ต๋๋ค.
android_alarm_manager ๋ฐ image_picker๊ฐ ์๋ํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค(๋ ๋ค ์ค์น๋ ๊ฒฝ์ฐ).
๋์๊ฒ ์๊ธฐ์ํจ๋ค. ์ด์ ๋ด ํ๋ฌ๊ทธ์ธ์์ Headless Android๋ฅผ ๊ตฌํํ๋ ๋์ googlemaps
here ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
๋ชจ๋ ํ๋ฌ๊ทธ์ธ์ด Headless ์ํ๋ก ์ฌ๋ฑ๋ก๋๋ฉด registrar.activity() == null
.
๋ด ์ฑ์ ๋ถํ ํ๋ ค๋ฉด ์๋์ผ๋ก ํดํนํด์ผ ํ์ต๋๋ค.
public static void registerWith(Registrar registrar) {
final GoogleMapsPlugin plugin = new GoogleMapsPlugin();
+ Activity activity = registrar.activity();
+ if (activity != null) {
registrar.activity().getApplication().registerActivityLifecycleCallbacks(plugin);
registrar
.platformViewRegistry()
.registerViewFactory(
"plugins.flutter.io/google_maps", new GoogleMapFactory(plugin.state, registrar));
+ }
}
์ด๊ฒ์ ๋ง์ ์์ ํ๋ฌ๊ทธ์ธ์์ ๋ฌธ์ ๊ฐ ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋ฐฑ๊ทธ๋ผ์ด๋ ์๋น์ค๋ฅผ ์คํํ๊ณ ํน์ ์ด๋ฒคํธ๋ฅผ ์ฝ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌ ๋ฐ ๊ธฐ๋กํ๊ณ ํด๋นํ๋ ๊ฒฝ์ฐ ๋๋ฅด๋ฉด ๊ธฐ๋ณธ ์ฑ์ ์คํํ๋ ์๋ฆผ์ ๋ง๋ค๊ณ ์ถ์ต๋๋ค. ์ด๋ฒคํธ์ ๋ช ๊ฐ์ง ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ๋ฒ์์ ์๋ ์ Bluetooth ์ฅ์น, ์์ผ์์ ๋ฐ์ดํฐ ์์ , USB ์ฅ์น์์ ๋ฐ์ดํฐ ์์ , SMS ์์ , GPS ์์น ๋ณ๊ฒฝ, Bluetooth ์ฅ์น ์ฐ๊ฒฐ ์๋, ํน์ ๋ฌผ๋ฆฌ์ ๋ฒํผ ๋๋ฆผ, ๊ฐ์๋๊ณ ๋ฐ์ดํฐ ์ด๊ณผ ์ง์ ๋ ๊ฐ, ๋ฉ์ธ ์ฑ์ด ์ข ๋ฃ๋๋ ๊ฒฝ์ฐ ๋ฑ ์๊ฐํ์ง ๋ชปํ ๋ง์ ๊ฒ๋ค์ด ์์ต๋๋ค. ๋๊ตฐ๊ฐ iOS ๋ฐ Android์์ ์๋ํ๋ ํฌ๊ด์ ์ธ ํ๋ฌ๊ทธ์ธ(๋ฌด๋ฃ ๋๋ ์คํ ์์ค ๋ผ์ด์ ์ค ํฌํจ)์ ๋ง๋ค ์ ์๋ค๋ฉด ์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ Flutter๋ก ๊ฐ๋ฐ์ ์์ํ ์ ์๋ค๋ ์ฌ์ค์ ์์ํ ๊ฐ์ฌํ ๊ฒ์ ๋๋ค.
@bkonyi ๊ทธ๋ ๋ค๋ฉด ํ์ฌ ๊ธฐ์กด ํ๋ฌ๊ทธ์ธ์ผ๋ก ์์ ์์ ์ค ๋ฌด์์ ํ ์ ์์ต๋๊น? ์ด๋ฌํ ์ด๋ฒคํธ๋ฅผ ํด๋งํ๊ธฐ ์ํด AlarmManager๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๊น? ํ์ง๋ง AlarmManager๋ iOS์์ ์๋ํ์ง ์์ฃ ?
@dude8604 iOS์์ ์ ๊ธฐ์ ์ธ ์ด๋ฒคํธ์ ๋ํด ์ป์ ์ ์๋ ์ต์ ์ "background-fetch" API๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ์ด ํ๋ฌ๊ทธ์ธ์ ๊ณง ํ๋ฌํฐ๋ก ์ด์ํ ์์ ์ ๋๋ค.
iOS "Background Fetch" API๋ ์ฝ 15๋ถ๋ง๋ค( ๊ฐ๋ฅํ ๊ฐ์ฅ ๋น ๋ฅธ ๊ฐ๊ฒฉ ) ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ ์๋ ์ฑ์ ๊นจ์ ์ฑ์ ์ ํํ 30์ด์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ ์๊ฐ์ ์ ๊ณตํฉ๋๋ค. ๊ทธ๋ฌ๋ iOS๋ ๋จธ์ ๋ฌ๋(์๋ง๋)์ ์ฌ์ฉํ๋ฉฐ ํ๋ฃจ ์ค ์๊ฐ๊ณผ ๊ธฐ๊ธฐ/์ฑ ์ฌ์ฉ ๋น๋์ ๋ฐ๋ผ ์ด๋ฅผ ์กฐ์ ํฉ๋๋ค(์: ๋ฐค์ ์ฌ์ฉ์๊ฐ ์ ์ ์ ๋ ๊ฐ์ ธ์ค๊ธฐ ์ด๋ฒคํธ๊ฐ ํ ์๊ฐ์ ํ ๋ฒ ์ฌ ์ ์์ต๋๋ค.
@christocracy @bkonyi ์ด ๋ชจ๋ ๊ฒ๊ณผ ๊ทธ์ ์์ํ๋ Android๋ฅผ ํ๋ฌ๊ทธ์ธ์ผ๋ก ๋ง๋ค ์ ์์ต๋๊น? ์ด ๊ธฐ๋ฅ์ ์์ฒญํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น?
@dude8604 ๊ทธ๋ฅ ์์ ์งํก์ด์ *poof*
๋ฅผ ํ๋ค ์ ์์ต๋๋ค. ์์
์ฉ ์ฅ๊ฐ์ ๋ผ๊ณ ์ง์ ๋ง๋์ญ์์ค. ์ค์ค๋ก ํ ์ ์๋ค๋ฉด ํ ์ ์๋ ์ฌ๋ ์ ์ฐพ์์ ์๋ง ๋ฌ๋ฌ๋ฅผ ์ง๋ถํด์ผ ํฉ๋๋ค.
@christocracy ๋ง์ต๋๋ค. ํ์ง๋ง ์ ๋ ์ธ๊ณ์์ ๊ฐ์ฅ ํฐ ๊ธฐ์ ์ค ํ๋๊ฐ ์์ ํ ๊ธฐ๋ฅ์ ๊ฐ์ถ ์ ํ์ ๊ฐ๋ฐํ ์ ์๋ ์์์ ๊ฐ๊ณ ์ฌ์ฉ์๊ฐ ์ถฉ๋ถํ ์ฌ์ฉํ ์ ์๋๋ก ์๋ง ๋ฌ๋ฌ๋ฅผ ์ง์ถํ์ง ์์๋ ๋๊ธฐ๋ฅผ ๋ฐ๋์ต๋๋ค.
๋ค, ๋๊ธฐ์ ์ ๋๋ค.
์๊ธฐ ๊ธฐ์
์ ๋ํ ํธ์ฌํ์ง ์๋ ๊ฐ์ธ๋ค๋ก ๊ตฌ์ฑ๋๋ค. ์ด๋ค ํ๋ ์์ํฌ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ๊ฒ์ ๋ค๋ฃฐ ์ ์์ต๋๋ค. ์๋ํ๋ฉด ์๋ํ๋ฉด ํ๋ก์ ํธ๊ฐ ๋ถํ๋ ๋๋ฏธ๋ก ๋ณํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์
๋๋ค. ๊ธ์์, ์ฐ๋ ๊ธฐ์
๋๋ค.
์๋ฐฑ ๊ฐ์ ํ๋ซํผ๋ณ API๊ฐ ์์ผ๋ฉฐ ๋จ์ผ ํ์์ ์ด๋ฅผ ์ฒ๋ฆฌํ์ง ์์ต๋๋ค. ๋น์ ์ ์ค์ค๋ก ๋ฐ์ธ๋ฉํด์ผํฉ๋๋ค.
@dude8604 "์๋ฒฝํ ๊ธฐ๋ฅ"์ ๋ํ ๊ทํ์ ์ ์๊ฐ ์ ์ ์์ ๋์ผํ์ง ์๋ค๊ณ ์๊ฐํ์ญ์์ค. ๊ทธ๋ค์ ์ฑ ์์ ๊ต์ฐจ๋ก๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋๋ค.
๋ฌธ์์์ ๋ช ํํ ๋ฐฉํฅ์ด ์์ต๋๊น? ๋๋ Release Preview 2๊ฐ ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ์ ์ง์ํ๋ค๊ณ ๋งํ๋ ๊ฒ์ ๋ณด์์ต๋๋ค. ๋ช ๊ฐ์ง ์๋ฅผ ์ดํด๋ณด๋ ๊ฒ์ด ์ข์ต๋๋ค.
@Pushan-Gupta background-execution์ ํ๋ฌ๊ทธ์ธ ์ ์ฉ์ ๋๋ค.
๊ทธ๊ฒ์ ๋น์ ์ดํ๊ณ ์ถ์ ๊ฒ์ ๋ฌ๋ ค ์์ต๋๋ค. ์์น ์ถ์ ? ํธ์ ์๋ฆผ์ ์์ ํ์๊ฒ ์ต๋๊น? ์ง์คํ์ค๋ฅผ ๋ชจ๋ํฐ๋งํ์๊ฒ ์ต๋๊น? BT ์ฅ์น๋ฅผ ๊ฐ์งํ์๊ฒ ์ต๋๊น? ๋น์ฝ? ์์ ์ ์ฌ์?
"๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ์ ๋ํ ๋ชจ๋ ์ง์์ ์ง๋ฐฐํ๋ ๋จ์ผ ๋ง"์ ์์ต๋๋ค.
@christocracy ์ฃ์กํฉ๋๋ค. ๋ชฐ๋์ต๋๋ค. ๋๋ ํน์ ํ ๊ฒ์ ๋ชฉํ๋ก ์ผ๊ณ ์์๋ค. ์ฑ์์ ์ผ๋ถ ๊ฒ์๋ฌผ ์์ฒญ์ ๋ง๋ค๊ณ ์ถ์ต๋๋ค. ํ์ง๋ง ์ฐ๊ฒฐ์ด ๊บผ์ ธ ์์ต๋๋ค. ๊ธฐ๊ธฐ๊ฐ ๋ค์ ์จ๋ผ์ธ ์ํ๊ฐ ๋์๋ง์ ์ฑ์ด ์ด๋ ค ์๋์ง ์ฌ๋ถ์ ๊ด๊ณ์์ด ํด๋น ๊ฒ์๋ฌผ ์์ฒญ์ ๋๊ธฐ์ด์ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค.
์: Whatsapp์ ๋ฉ์์ง๋ฅผ ์๋ฒ๋ก ๋ณด๋ด๊ธฐ ์ ์ ๋๊ธฐ์ด์ ๋ฃ์ต๋๋ค. ์ฅ์น๊ฐ ์คํ๋ผ์ธ ์ํ์ด๋ฉด ๋๊ธฐ์ด์ ์ ์ฅํ๊ณ ์จ๋ผ์ธ ์ํ๊ฐ ๋์๋ง์ ์๋น์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.
BTW ๋ฐฑ๊ทธ๋ผ์ด๋ ๊ฒฉ๋ฆฌ์ ๋ํ ํ๋ฌ๊ทธ์ธ ๋ฑ๋ก์ ๋ํด ๋ ผ์ํ๋ PR์ด ์์ต๋๋ค. ์๊ฐ์ด ์์ผ์ ๋ถ์ด ๊ณ์๋ค๋ฉด...
ํ์ฌ FlutterHeadlessDartRunner
์ ์์ ์ ๋ฌด์์
๋๊น?
์ ๋ ํ์ฌ Android์์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ์ ๊ตฌํํ์ต๋๋ค(ํ๋ฌ๊ทธ์ธ ์์ FlutterNativeView(ctx, true)
). ์ด ์์
์ ๋ค์ ์ฌ์ ์ต๋๋ค.
๊ทธ๋ฌ๋ iOS์์๋ ์ถฉ๋์ด ๋ฐ์ํฉ๋๋ค.
func pushRegistry(_ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, for type: PKPushType, completion: <strong i="10">@escaping</strong> () -> Void) {
let headless = FlutterHeadlessDartRunner.init()
headless.run(withEntrypoint: "main") // just EXC_BAD_ACCESS here
}
์ผ,
Flutter ios์์ ์๋ฆผ ์ฑ์ ๋์์ฃผ์ธ์
@MohdLucky ๊ทธ๋ฆฌ๊ณ ๋น์ ์๊ฒ ํ์ํ ๋์์..?
@christocracy background_fetch ํ๋ฌ๊ทธ์ธ์ ๊ตฌํ ์ํ์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
background_fetch ํ๋ฌ๊ทธ์ธ์ ๊ตฌํ ์ํ๋ฅผ ์
๋ฐ์ดํธํ์ง ์์ต๋๋ค. ์ ๋ํ ๋ช ๊ฐ์ง ์ํ ์ฝ๋๋ฅผ ์ ๊ณตํ์ธ์.
๋ฐฑ๊ทธ๋ผ์ด๋ ์๋ฆผ์ ์คํ ์ค์
๋๋ค.
์ด๊ฒ์ ๋ํ ๋ชจ๋ ์ ๋ฐ์ดํธ ... ๋๋ ์ด๊ฒ์ด ํ๋ฌํฐ์ ์ผ๋ถ๋ผ๊ณ ์ ๋ง๋ก ์๊ฐํ์ต๋๋ค :( .. ์ด๊ฒ์ ๋ค๋ฅธ ์น ํ์ด๋ธ๋ฆฌ๋ ์๋ฃจ์ ์ด ๊ฐ์ง๊ณ ์๋ ๊ฒ๊ณผ ๊ฑฐ์ ๋์ผํ ๋ฌธ์ ๋ณด๋ค ...
@radvansky-tomas ์ฌ๋๋ค์ด ์ด๊ฒ์ด ํ๋ฌํฐ์ ์ฑ
์์ด ์๋๋ผ๋ ๊ฒ์ ์ดํดํ์ง ๋ชปํ๋ ์ด์ ๋ฅผ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ์ ๊ตฌํํด์ผ ํ๋ ๊ฒฝ์ฐ์๋ ๋จ์ผ ์ฝ๋ ๊ธฐ๋ฐ์ ์ด์ ์ด ์์ต๋๋ค. ๋ฐฑ๊ทธ๋ผ์ด๋ ์์
์ ์ํํ๋ ํ๋์ ํ๋ฌํฐ ํ๋ฌ๊ทธ์ธ์ ์์ฑํ๋ ๋ฐ 1~2์ผ์ด ์์๋ฉ๋๋ค. ๋๋ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์๊ณ ๋๋ฅผ ์ํด ์์
์ ์ฌ์ํ ์์๋ Android ์๋น์ค๊ฐ ํ์ํ์ต๋๋ค. ๋ฐฉ๊ธ kotlin์ผ๋ก ์์ฑํ๊ณ flutter๋ฅผ ์ฌ์ฉํ์ฌ ํต์ ๊ณ์ธต์ ๊ตฌํํ์ผ๋ฉฐ ๋์ค์ iOS์์๋ ๋์ผํ ์์
์ ์ํํ์ต๋๋ค.
์์คํ
๊ธฐ๋ณธ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์คํ
์ ์ฌ์ฉํ๋ ๊ฒ์ ์ ์ ์ผ๋ก ๊ฐ๋ฅํฉ๋๋ค.
์ฌ๊ธฐ์์ X๊ฐ ๊ตฌํ๋์ง ์์๋ค๊ณ ์ง์ง๊ฑฐ๋ฆฌ๋ ๋์ ํ์์ ์ ๊ณตํ๋ ์ํ๊ณ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์ ๊ทธ๋๋ก ์๋ฌด ๋ฌธ์ ์์ด ๊ตฌํํ ์ ์์ต๋๋ค.
@SirWindfield ๋ถํํ๋ ๋น์ ์ ๋น์ ์ด ๋ฌด์จ ๋ง์ ํ๋์ง ๋ชจ๋ฆ ๋๋ค. ์ด๊ฒ์ ํ๋ฌ๊ทธ์ธ ์์ฒด๊ฐ ์๋๋ผ ์ํคํ ์ฒ์ ํ์ ๋ถ๋ถ์ ๋๋ค.
Flutter๋ ๋ค์ดํฐ๋ธ ์ฝ๋๋ฅผ ์์ฑํ๋ ํฌ๋ก์ค ํ๋ซํผ ์๋ฃจ์ ์ผ๋ก ์ ๊ณต๋ฉ๋๋ค. ์ฆ, OS๊ฐ ํ์ฉํ ๋๋ง๋ค ํด๋น ์ธ์ด(Dart)๋ก ์ฝ๋๋ฅผ ์คํํ ์ ์์ ๊ฒ์ผ๋ก ๊ธฐ๋๋ฉ๋๋ค.
๋ฐ๋ผ์ ์๊ฒฉ ์๋ฆผ์ ์์ ํ ํ ์ฑ์ด ์คํ ์ค์ด๊ณ ๊ธฐ์กด ๋ค์ดํฐ๋ธ ์ฝ๋์ ์ค๋จ์ ์ ๋ฐฐ์นํ ์ ์๋ค๋ฉด ์๋น์ค, ๋ชจ๋ธ ๋ฐ ์ต์ข ์ ์ผ๋ก UI๊ฐ ์๋ ๊ณณ์์ ํ๋ฌํฐ/๋คํธ ์ฝ๋๋ฅผ ํธ์ถํ ์ ์์ด์ผ ํฉ๋๋ค.
๊ทํ์ ๊ฒฝ์ฐ์ ๋ง๋ค๋ ค๋ฉด ... ์์ ์ด ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ฌ์๋๊ณ ์๋ค๊ณ ๊ฐ์ ํ๊ณ ์ฌ์ ๋ชฉ๋ก์ ์๋ฃํ์ญ์์ค ... 10 ๋ถ ํ์ ์ฑ์ด ์ข ๋ฃ๋ฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ Siri๋ฅผ ํธ์ถํ๊ฑฐ๋ ํค๋ํฐ์ ์ฌ์ฉํ์ฌ ์ฑ์ ์ฌ์์ ๋ค์ ์์ํฉ๋๋ค. ์ ํํ ์ง์ ์ ์ ๊ด๊ณ์์ด... ๊ธฐ๋ณธ ์ฝ๋๊ฐ ์คํ๋์ง๋ง ํด๋น UI๋ ์คํ๋์ง ์์ผ๋ฉฐ ํ๋ฌํฐ ์ฝ๋๊ฐ ์ด๊ธฐํ๋์ง ์๊ณ ์๋ฆผ๊ณผ ํจ๊ป ์์ค๋ฉ๋๋ค.
๋ฐ๋ผ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค. ๊ธฐ๋ณธ ํ๋ฌ๊ทธ์ธ ์บ์น ์๋ฆผ์ ์์ฑํ ์ ์์ง๋ง ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ํ๋ฌํฐ ๋น์ฆ๋์ค ๋ก์ง์ ์ก์ธ์คํด์ผ ํฉ๋๋ค. ์ ๊ฒฝ์ฐ์๋ ์ํธํ ํด๋ ๋ฐ ํด๋ ๋ ์ฝํ ์ธ ๊ฐ ํฌํจ๋ ๋ก์ปฌ ์๋ฆผ ํด์
ํด๋ํฐ์์ ๊ด๋ฒ์ํ๊ฒ ํ
์คํธํ์ผ๋ฉฐ ๋ฌธ์ ์์ด ์๋ํฉ๋๋ค.
๋ด ์ ํ๊ฐ ์ฑ์ ์ฃฝ์ด์ง ์์์ ์๋ ์์ต๋๋ค. ๊ทธ๋ผ ๋ด ๋์.
@christocracy background_fetch ํ๋ฌ๊ทธ์ธ Chris์ ๊ดํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
@ethael ์
๋ฐ์ดํธ๋ฅผ ๋ณผ ์ ์๋ ๋น ์ ์ฅ์๊ฐ ์์ต๋๋ค.
https://github.com/transistorsoft/flutter_background_fetch
@radvansky-tomas ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ์ ๋ํ ์ด Medium ๊ฒ์๋ฌผ์ ์ค๋ช ๋ ๋๋ก ๋ฐฑ๊ทธ๋ผ์ด๋ ๊ฒฉ๋ฆฌ๋ฅผ ์์ฑํ์ฌ Dart ์ฝ๋์์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ์ํ๋ ์์ ์ ์ํํ๋ ํ๋ฌ๊ทธ์ธ์ด ์ด๋ฏธ ์กด์ฌํ์ง ์๋ ํ(ํ์ฌ ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ์ ์ง์ํ๋ ๋ง์ ํ๋ฌ๊ทธ์ธ์ ์์ง ๋ชปํ๊ธฐ ๋๋ฌธ์) ํน์ ์๊ตฌ์ ๋ง๊ฒ ๊ฐ ํ๋ซํผ์ ๋ํ ๋ช ๊ฐ์ง ๊ธฐ๋ณธ ์ฝ๋๋ฅผ ์์ฑํด์ผ ํ ๊ฒ์ ๋๋ค.
@bkonyi ๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค. ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ์ ์ง์ํ๊ธฐ ์ํด firebase_messaging ํ๋ฌ๊ทธ์ธ์ ๋ณ๊ฒฝํ๊ธฐ ์์ํ์ต๋๋ค... ํ์ง๋ง ์ด ๋ฌธ์ ๋ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ ๊ดํ ๊ฒ์ ๋๋ค. ๋ด ๋ง์ ์ด๊ฒ์ด ํ ํ๋ฆฟ = ๋ฌ๋ ๋ฐ ๊ฐ๋ฐ์๊ฐ ํค๋๋ฆฌ์ค ์ฝ๋, ์ผ๋ถ ๊ท์น, ํจํด ํ์ค์ ์คํํ ์ ์๋ ๋คํธ ์ธก๋ฉด์ ์ผ๋ถ์ฌ์ผ ํ๋ค๋ ์๋ฏธ์ ๋๋ค. ํ์ฌ ์ผ๋ถ ๋ธ๋ก๊ทธ, ์ ์ ๋ฑ์ ์์ต๋๋ค.
์ผ๋ถ ์ด๊ธฐ ์์ ์๋ฃ: https://github.com/radvansky-tomas/plugins/tree/master/packages/firebase_messaging
https://github.com/bkonyi/FlutterGeofencing ์ ์ผ๋ถ ๊ฐ์ด๋์ ๋ฐ๋ผ
์ด๋ฒ ์ฃผ ๋ง๊น์ง ์๋ฃํด์ผ ํ๋ฉฐ ์ง๊ธ์ iOS ๋นํธ๋ง ์์ ์ค์ ๋๋ค. ์์ ํ๋ก์ ํธ๋ ๋ก์ปฌ ์๋ฆผ ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ์ฌ ๋ฉ์์ง๊ฐ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์์ ๋์์์ ํ์ํ๊ณ (์๋ ์๋ฆผ) ์ ๋ก์ปฌ ์๋ฆผ์ ๋ฆด๋ฆฌ์คํ์ฌ ์ฑ๊ณต์ ๋งค๋ํ์คํธํฉ๋๋ค.
์ผ๋ถ ์ด๊ธฐ ์์ ์๋ฃ: https://github.com/radvansky-tomas/plugins/tree/master/packages/firebase_messaging
https://github.com/bkonyi/FlutterGeofencing ์ ์ผ๋ถ ๊ฐ์ด๋์ ๋ฐ๋ผ
์ด๋ฒ ์ฃผ ๋ง๊น์ง ์๋ฃํด์ผ ํ๋ฉฐ ์ง๊ธ์ iOS ๋นํธ๋ง ์์ ์ค์ ๋๋ค. ์์ ํ๋ก์ ํธ๋ ๋ก์ปฌ ์๋ฆผ ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ์ฌ ๋ฉ์์ง๊ฐ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์์ ๋์์์ ํ์ํ๊ณ (์๋ ์๋ฆผ) ์ ๋ก์ปฌ ์๋ฆผ์ ๋ฆด๋ฆฌ์คํ์ฌ ์ฑ๊ณต์ ๋งค๋ํ์คํธํฉ๋๋ค.
@goderbauer ์ ์ ๋ ์ค์ ๋ก ์ด ์ง์์ ์ถ๊ฐํ๋ ค๊ณ ํ์ผ๋ ํ ๋ฆฌํ์คํธ๋ฅผ ํ ๊ณํ์ด๋ผ๋ฉด ๋์์ธ๊ณผ ๋ฆฌ๋ทฐ๋ฅผ ๋์๋๋ฆฌ๊ฒ ์ต๋๋ค.
๊ทธ๋์ ๊ทธ ๋ถ๋ถ์ ๊ฑฐ์ ๋๋์ผ๋ฏ๋ก ์ด์ ์๋ ํธ์ ์๋ฆผ์ ๋ฐ์ ์ ์๊ณ ์ฑ์ด ๋ฐฑ๊ทธ๋ผ์ด๋์ ์๋ ๋์ dart๋ก ์์ฑ๋ ์ฝ๋ฐฑ์ด ์คํ๋ฉ๋๋ค.
๊ทธ๋ฌ๋ ๊ฑฐ๊ธฐ์์ ๋ค๋ฅธ ํ๋ฌ๊ทธ์ธ์ ์ก์ธ์คํ ์ ์์ต๋๋ค. ์ฝ๋ฐฑ์ ๋ฃจํธ/์ ์ ๋ฐฉ๋ฒ์ด์ด์ผ ํ๋ฉฐ ์ค์ ๋ก ๊ฑฐ๊ธฐ์์ ์๋ฌด ๊ฒ๋ ํธ์ถํ๋ ๋ฐฉ๋ฒ์ ์ป์ง ๋ชปํฉ๋๋ค.
๊ทธ๋์ ๋ฌด์ ์์ ํ ๋ก์ปฌ ์๋ฆผ์ ๋ณด๋ด๊ธฐ ์ํด ํ๋ฌํฐ ๋ก์ปฌ ์๋ฆผ ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ์ฌ ๊ฐ๋จํ ํ ์คํธ๋ฅผ ์๋ํ์ง๋ง ํ๋ฌ๊ทธ์ธ์ ์ก์ธ์คํ ์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค(๋ฑ๋ก๋์ง ์์์ต๋๊น?)
https://github.com/flutter/engine/pull/6396 ์์ ๋น์ทํ ๊ฒ์๋ฌผ์ ์ฐพ์์ต๋๋ค.
ํด๋น ํ๋ฌ๊ทธ์ธ์ ๋ก๋ํ๊ธฐ ์ํด ์ํํด์ผ ํ๋ ๋ค๋ฅธ ํ์ํ ๋จ๊ณ๊ฐ ์์ต๋๊น?
๋ด ๋ฃจํธ ์์ค ์ฝ๋ฐฑ:
void callback(FirebaseMessage m, MessageEvent e) async {
print('Message $m Event: $e');
final SendPort send =
IsolateNameServer.lookupPortByName('messaging_send_port');
send?.send(e.toString());
}
๋ฌธ์ ๋ ํด๋น ์ฝ๋ฐฑ์์ ๋ชจ๋ dart ์ฝ๋ + ํ๋ฌ๊ทธ์ธ์ ์ก์ธ์คํ๋ ๋ฐฉ๋ฒ์ด ์๋๋๋ค...query firestore ๋ฑ
My Background Fetch ๊ตฌํ์ด ๋ง์นจ๋ด ๋ฆด๋ฆฌ์ค๋์์ต๋๋ค.
background_fetch
@christocracy ๋ง์ต๋๋ค. ํ์ง๋ง ์ ๋ ์ธ๊ณ์์ ๊ฐ์ฅ ํฐ ๊ธฐ์ ์ค ํ๋๊ฐ ์์ ํ ๊ธฐ๋ฅ์ ๊ฐ์ถ ์ ํ์ ๊ฐ๋ฐํ ์ ์๋ ์์์ ๊ฐ๊ณ ์ฌ์ฉ์๊ฐ ์ถฉ๋ถํ ์ฌ์ฉํ ์ ์๋๋ก ์๋ง ๋ฌ๋ฌ๋ฅผ ์ง์ถํ์ง ์์๋ ๋๊ธฐ๋ฅผ ๋ฐ๋์ต๋๋ค.
๊ทธ๊ฒ์ ๋ง๋ ๊ฒ ๊ฐ์. ์ฌ๋๋ค์ ์๊ฐ์ ์ป๋๋ค๋ฉด ๊ทธ๋ค์๊ฒ ๋ฌด์ธ๊ฐ๋ฅผ ๋๋ ค์ฃผ์ด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์๋ค๋ฉด ์ด๋ฌํ ๋ฉ์ง ๋ง์ผํ ํ์ดํ์ ๋ง๋ค์ง ๋ง์ญ์์ค!
์ด ๋ฌธ์ ๊ฐ ์ฌ์ ํ ์ฌ๋๋ค์๊ฒ ๊ณ ํต์ ์ฃผ๋ ๊ฒ ๊ฐ์ต๋๊น? ๋ซํ ์๊ณ ๋ง์ ์๊ฒฌ์ด ์์ผ๋ฏ๋ก ์ด ๋ฌธ์ ์์ ๋ง์ ๊ตฌ์ฒด์ ์ธ ํ๋ก์ ํธ ๋ณ๊ฒฝ ์ฌํญ์ ๋ง๋ค ๊ฒ ๊ฐ์ง ์์ต๋๋ค. :((๋ด๊ฐ ๊ธฐ๋ํ๋ ๋ ๋ง์ ์ง์ ์ ์ด๋ฃจ๊ธฐ ์ํด ์๋ก์ด ํ์ผ์ ์ ์ถํด์ผ ํฉ๋๋ค.)
์ฌ๊ธฐ์ ์ํ๋ ๊ตฌ์ฒด์ ์ธ ๋ณ๊ฒฝ ์ฌํญ์ ๋ฌธ์ํํ๋ ๋ฐ ๋งค์ฐ ๊ด์ฌ์ด ์์ต๋๋ค. ๋ ๋ง์ ๋ฐฐ๊ฒฝ ์์ ๊ฐ ํ์ํ ๊ฒ ๊ฐ์ต๋๊น? (์: https://github.com/flutter/flutter/issues/23794)
์ด์จ๋ , ์ฐ๋ฆฌ๋ ๊ฐ๋ณ์ ์ธ ์ง๋ฌธ์ ๊ฐ๋ณ์ ์ธ ๋ฌธ์ ๋ฅผ ์ ๊ธฐํ๊ณ ์ถ์ต๋๋ค. ์์์ ๋ค๋ฅธ ์ฌ๋๋ค์ด ์ธ๊ธํ๋ฏ์ด Flutter๋ ํฌ๊ณ ๋ณต์กํ ํ๋ก์ ํธ์ด๋ฉฐ ์ฌ๊ธฐ Google์ ๋๊ท๋ชจ(๊ทธ๋ฆฌ๊ณ ๋น ๋ฅด๊ฒ ํ์ฅ๋๊ณ ์๋) ํ์ด ์์ง๋ง ๋ชจ๋ ๋ฌธ์ ์ ๋์์ ๋ต๋ณํ ์ ์๋๋ก Flutter์์ ํํ์์ผ๋ก ์ผํ๋ ์์ง๋์ด๊ฐ ์ถฉ๋ถํ์ง ์์ต๋๋ค. Flutter๋ 100% ์คํ ์์ค์ด๋ฉฐ ๋ชจ๋ ๋ฌธ์ ๋ GitHub์ ์์ต๋๋ค. ๋ฌผ๋ก ํจ์น๋ ์ธ์ ๋ ํ์์ ๋๋ค. :)
์ํ๋ ๋ฌธ์ /๋ณ๊ฒฝ ์ฌํญ์ด ์๋ ๊ฒฝ์ฐ ์ ๋ฌธ์ ๋ฅผ ์ ์ถํ์ฌ ๋ชจ๋ ๊ธฐ์ฌ์์๊ฒ ์ถ๊ฐ ๋์์ ์ค ์ ์๋ ๋ฐฉ๋ฒ์ ์๋ ค์ฃผ์ธ์: https://github.com/flutter/flutter/issues/new
๊ฐ์ฌ ํด์!
@eseidel ์ฑ๋ฆฐ์ง ์๋ฝ๋จ: #24278
์ฅ์น๋ณ ์ฝ๋ ์์ฑ์ ํผํ๊ณ Flutter Dart API ๊ตฌํ์ด ์ฅ์น ๋ฐ OS ์ฌ์๊ณผ ํน์ ๊ตฌํ์ ์จ๊ธธ ์ ์๋ ์ด๋ฒคํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋์ต๋๋ค.
์ฌ๊ธฐ ์์ ์ด๋ฏธ ํด๊ฒฐ
@Krunal79-flutter ์ ํํ ๊ทธ ์ ๊ทผ ๋ฐฉ์์๋ ์ฌ์ ํ ๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋ฌธ์ ๋ ์๋๋ฆฌ์ค์์ ํ๋ฌํฐ๊ฐ ์ด๋ฏธ ์ด๊ธฐํ๋์์ผ๋ฉฐ ์ ์ ํ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ก์ธ์ค๊ฐ ์๋๋ผ๋ ๊ฒ์ ๋๋ค. ๋ด๊ฐ ๊ฐ์ง๊ณ ์์๋ ๋ฌธ์ ๋ ์ฑ์ด ์ค์ ๋ก ์ฃฝ์๊ณ ์๋ ์๋ฆผ(๋๋ ์ฑ ํ์ฅ)์ด ์ฑ์ ๊นจ์ฐ๊ณ ํ๋ฌํฐ๊ฐ ์์ง ์คํ๋์ง ์๋ ๋์(์ฆ, UI๊ฐ ์์) "๋คํธ" ๋ก์ง์ ์ํํด์ผ ํ ๋์ ๋๋ค.
์ด๊ฒ์ Flutter ํ์ ๊ด๋ฆฌํ๋ ๋๊ตฌ์๊ฒ๋ ํจ์ฌ ๋ ๋์ ์ฐ์ ์์ ๋ฌธ์ ๊ฐ ๋์ด์ผ ํฉ๋๋ค. ๋ฐฑ๊ทธ๋ผ์ด๋ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๊ฒ์ ์ผ๋ฐ Flutter ๊ฐ๋ฐ์์๊ฒ ํฐ ๊ณ ํต์ด๋ฉฐ ์ข ์ข ์ฌ์ํ ๋ฐฉ์์ผ๋ก ์ค๋จ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ์ฌ ๋ง์ ์ฑ ๊ฐ๋ฐ์๋ค์ด ์ด ๋ฌธ์ ๋ก ์ด๋ ค์์ ๊ฒช๊ณ ์๋ค๊ณ ํ์ ํฉ๋๋ค.
@tomoerlemans010 https://github.com/flutter/flutter/issues/3671#issuecomment -438113161์ ๋๊ธ์ ์ฐธ์กฐํ์ธ์.
์ด ํน์ ๋ฌธ์ ๋ ์ข ๋ฃ๋์์ต๋๋ค. ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ๊ณผ ๊ด๋ จ๋ ๋ค๋ฅธ ๋ฏธํด๊ฒฐ ๋ฌธ์ ์ ์๊ฒฌ์ ์ถ๊ฐํ๊ฑฐ๋ ์ง๋ฉดํ ๋ฌธ์ ๋ก ์ ๋ฌธ์ ๋ฅผ ๋ง๋์ญ์์ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋น ๋ฅธ ์ ๋ฐ์ดํธ: iOS์ฉ ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ์ด ๊ตฌํ๋์์ผ๋ฉฐ ๊ฒํ ๋ฅผ ์ํด ์ค๋น ์ค์ ๋๋ค(PR flutter/engine#5539). ์ผ๋จ ๋์ฐฉํ๋ฉด ์ผ๊ด๋ ์ธํฐํ์ด์ค๋ฅผ ๊ฐ๋๋ก Android ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ ์ ๋ฐ์ดํธ๋ฅผ ์์ํ๊ณ ์ํ ํ๋ฌ๊ทธ์ธ์ ๊ฒ์ํฉ๋๋ค. ์ด ๋ชจ๋ ๊ฒ์ด ์๋ง์ ์๋ฃ ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค .