๐ ์ธ์ฑ๋ฆฌ๋ทฐ(In-App Review)
์ด๋ฒ์ ํํ๋ก์ ํธ์ ๊ฐ๋ฐ์์์ด ์กฐ๊ธ์ฉ ๊ณ์ ๋ฏธ๋ค์ง๋ฉด์,
๊ฐ๋ฐํ๊ณ ์ถ์๋ฐ ํ์ง๋ชปํด์ ์ต๊ทผ์ ์กฐ๊ธ์ฉ ์ ๋ฐ์ดํธํ๊ณ ์๋ ๊ฐ์ธํ๋ก์ ํธ ์ฑ์ ์ธ์ฑ๋ฆฌ๋ทฐ๋ฅผ ๋ฃ์ด๋ณด์์ต๋๋ค.
์ธ์ฑ๋ฆฌ๋ทฐ๋ ์ฑ ๋ด์์ ์ฑ์ ์ฑ์คํ ์ด ํ์ ๊ณผ ๋ฆฌ๋ทฐ๋ฅผ ๋จ๊ธธ์ ์๋๋ก ํ๋ ๊ฒ์ ๋๋ค.
์ฌ์ค ์ ๊ฐ ์ด๊ฑธ ์ ์ฉํ๋ ค๋ ์ฑ์ด ์ฌ์ฉ์๊ฐ ๋ง์ง ์์ง๋ง ๊พธ์คํ ์ฌ์ฉํ๊ณ ์๋ ์ฌ๋์ด ์์ต๋๋ค. ๊ทผ๋ฐ ํ์ฅ์ฑ์ด ๋์ง ์์ ๋จ์ผ ๊ธฐ๋ฅ ์ฑ์ด๋ผ.. ํ์ฅ์ ํ๋ค๋ฉด ์์ฒญ ํฌ๊ฒ ํด์ผํด์ ์ฌ์ฉ์๊ฐ ์๊ฒฌ์ด๋ ํผ๋๋ฐฑ์ ์กฐ๊ธ ๋ ๋ค์ด๋ณด๊ณ ์ถ์ด์ ์ ์ฉํ๋ คํฉ๋๋ค.
์ ๊ฐ SwiftUI๋ฅผ ์ฒ์ ๊ณต๋ถํ ๋, ์ ๊ฐ ์ฌ์ฉํ๋ ค๊ณ ๊ฐ๋จํ๊ฒ ๋ง๋ค์๋ ์ฑ์ธ๋ฐ ๋ฐฉ์นํด๋๋ค๊ฐ ๋์ค์ ๋ณด๋๊น ๊ณ์ ์ฐ๊ณ ์๋ ์ฌ๋์ด ์๋๋ผ๊ตฌ์?
์ต๊ทผ์ ์ด๊ฒ์ ๊ฒ ์กฐ๊ธ์ฉ ์ ๋ฐ์ดํธ ์ค์ ๋๋ค !
StoreKit
์ธ์ฑ๋ฆฌ๋ทฐ๋ ์ด StoreKit ํ๋ ์์ํฌ์ ์กด์ฌํฉ๋๋ค.
StoreKit์ '์ฑ ๋ด ๊ตฌ๋งค ๋ฐ App Store์์ ์ํธ ์์ฉ์ ์ง์ํ๋ ํ๋ ์์ํฌ'์ ๋๋ค.
์์ธํ๊ฑด ๊ณต์ ๋ฌธ์ ํน์ ๋ ํผ๋ฐ์ค ์๋ฃ๋ค์ด ๋ง์ผ๋๊น ์ฐพ์๋ณด๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค.
https://developer.apple.com/documentation/storekit
์ฑ ๋ด์์ ์ธ์ฑ๋ฆฌ๋ทฐ๋ฅผ ์ฌ์ฉ์์๊ฒ ์ ๊ณตํ๋ ๋ฐฉ์์ 2๊ฐ์ง ์ ๋๋ค.
1. ์ฑ์์ ๋ฆฌ๋ทฐ๋ฅผ ํ์ ์ผ๋ก ๋์์, ๋ณ์ ์ ๋งค๊ธฐ๊ณ ๋ง๋ฌด๋ฆฌํ๋ ๋ฐฉ์ ( ํ์ ์์ฃผ ์ ํ๋ ๋ฐฉ์ )
2. ์ฑ์คํ ์ด ํ์ด์ง๋ก ์ด๋์์ผ์ ์์ธํ๊ฒ ์์ฑํ๊ฒ ๋๋ ๋ฐฉ์
์ฒซ๋ฒ์งธ ๋ฐฉ์ : ์ฑ ๋ด์์ ๋ณ์
import SwiftUI
import StoreKit
struct ContentView: View {
var body: some View {
VStack {
Button(action: {
if let scene = UIApplication.shared.connectedScenes
.first(where: { $0.activationState == .foregroundActive }) as? UIWindowScene {
SKStoreReviewController.requestReview(in: scene)
}
}, label: {
Text("App Reviews")
})
}
.padding()
}
}
StoreKit์ ์ํฌํธํ๊ณ ์ด๋ ๊ฒ Button์ ๋๋ ์๋, ๋ณ์ ๋ฆฌ๋ทฐ๋ฅผ ๋จ๊ธธ ์ ์๊ฒ ํ์์ต๋๋ค.
SKStoreReviewController๋ ์ฌ์ฉ์์๊ฒ ์ฑ ์คํ ์ด ํ์ ๋ฐ ๋ฆฌ๋ทฐ๋ฅผ ์์ฒญํ๋ ํ๋ก์ธ์ค๋ฅผ ์ ์ดํ๋ ๊ฐ์ฒด์ ๋๋ค.
์ ๊ทธ๋ฆฌ๊ณ .. ๋ฆฌ๋ทฐ ์์ฒญํ๋ ์ฝ๋๋ฅผ Button๋ด์ ๋ฌ๋ฉด Text Color๊ฐ Blue์์์ผ๋ก ์กํํ ๋ฐ,
ButtonStyle์์ PlainButtonStyle์ ์ ์ฉ์์ผ์ฃผ๋ฉด ๋ฉ๋๋ค.
๋๋ฒ์งธ ๋ฐฉ์ : ์ฑ์คํ ์ด ๋ฆฌ๋ทฐํ์ด์ง ์ด๋
let appID = "ํด๋นํ๋ App ID"
let urlString = "https://apps.apple.com/app/id\(appID)?action=write-review"
if let url = URL(string: urlString) {
UIApplication.shared.open(url)
}
์ด ์ฝ๋๋ค์ ์ฒซ๋ฒ์งธ ๋ฐฉ์์ฒ๋ผ Button์์ ๋ฉ์๋๋ก ๋ฃ๊ฑฐ๋ ํ๋ฉด ๋ฉ๋๋ค !
AppID๋ ๋ฐฐํฌ๋ ์ฑ์ ์ฑ์คํ ์ด๋ก ๋ค์ด๊ฐ๋ฉด ๋์ id + ์ซ์๋ก ๋์ค๊ฒ ๋์ด์์ต๋๋ค.
์ ๊ฐ์ ๊ฒฝ์ฐ๋ urlString์ id๋ฅผ ๋ฃ์ด์ ํ๋ฒ์ ํ์ต๋๋ค.
์ด ๋๋ฒ์งธ ๋ฐฉ์์ ์๋ฎฌ๋ ์ดํฐ์์ ํ๋ฉด ํด๋น ์ฑ์ ๋ฆฌ๋ทฐํ์ด์ง๋ฅผ ์ฐพ์ง๋ชปํด์ ์์์ ๋ฐ๋ก ํจ์คํ๊ฒ ์ต๋๋ค !
์ค๋ฌผ๊ธฐ๊ธฐ๋ก ํ ์คํธํ๋ฉด ์ ๋ฉ๋๋ค.
์ฌ์ฉ์๋ค์ด ์ํ๋ ๊ธฐ๋ฅ์ด๋ ํผ๋๋ฐฑ์ ๊ผญ ๋จ๊ฒจ์ฃผ์์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค :)
'๐ iOS > SwiftUI' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SwiftUI] NavigationLink, NavigationView ํ๊ธธ ๋ (2) | 2024.11.02 |
---|---|
[SwiftUI]์ฑ๋ด์์ ์ฑ ๋ฒ์ ์ ๋ณด ํ์ (0) | 2024.10.12 |
[SwiftUI] Invalid frame dimension (0) | 2024.08.19 |
[SwiftUI] Onboarding ํ๋ฉด ๋ง๋ค๊ธฐ (0) | 2024.08.10 |
[SwiftUI] Custom Alert View (0) | 2024.06.16 |