티스토리 뷰
안녕하세요 :) Zedd입니다.
너무 오랜만이져ㅛ../..
오늘은..StoreKit을 공부해보려고 합니다.
인앱구매는 아니고...
현재 제 앱에는...
이렇게 앱스토어 리뷰를 남길 수 있는 탭이 있고,
이걸 클릭하게 되면
이렇게 열리게 됩니다.
하지만 왼쪽 상단을 보시면 제 앱안에서 앱스토어가 열리는게 아니라, 진짜 앱스토어 앱이 열리게 되어서, 제 앱으로 다시 돌아가려면 저 왼쪽 상단을 누르거나 뭐 그래야겠죠?
하지만 얼마전에 StoreKit이라는 것을 알았씁니다 XD...모달로 앱스토어를 열 수 있다고 해요!
저는 처음..들어봤ㅁ는데요 ㅎㅎ...
그래서 공부할 겸!! 제 앱도 업데이트 할 겸.... StoreKit을 공부해보려고합니다.
고고
StoreKit
StoreKit 문서를 먼저 읽어볼게요!
정의가 짧아서 넘나좋은...
"인앱 구매 및 App Store와의 상호 작용을 지원합니다."
OverView
앱에서 StoreKit을 사용하면, 다음과 같은 기능과 서비스를 제공 할 수 있습니다.
● In-App Purchase : 콘텐츠 및 서비스에 대한 인앱구매를 제공하고 홍보하세요.
● Apple Music : 사용자의 Apple Music기능을 확인하고, 구독하세요.
● Recommendations and reviews : 권장사항 및 리뷰, 제 3자 콘텐츠에 대한 권장사항을 제공하고, 사용자가 앱을 평가하고 리뷰 할 수 있게 합니다.
인앱구매와 추천 및 리뷰는 수긍?..이 가지만 애플뮤직은 넘나 신선하네요.
완전 앱스토어랑 관련된 프레임워크 같은데...뮤직이라니.
아무튼 제가 해볼건 마지막! Recommendations and reviews를 StoreKit을 사용하여 해볼려고 합니다 :)
Recommendations and reviews가 아니더라도,
이렇게 토픽과 관련된 문서가 또 따로 있으니 참고하세요! 저는 Recommendations and reviews를 읽어봐야겠죠?
사용자에게 다른 앱, 음악 및 비디오 미디어를 구입, 앱 평가, 리뷰 할 수 있는 옵션을 제공하세요.
Affiliate Recommendations (제휴사 권장사항..?)
- SKStore
requestReview() 메소드를 사용하여, 앱 로직 내에서 사용자가 앱의 평점과 리뷰를 물어볼 수 있는 시점을 나타냅니다.
여기에 Requesting App Store Reviews에 대한 샘플코드와 설명이 있는데, 좀 길어서 중요한것만 요약할게요.
if let url = URL(string: "itms-apps://itunes.apple.com/app/id앱아이디?action=write-review"),
UIApplication.shared.canOpenURL(url) {
if #available(iOS 10.0, *) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
} else {
UIApplication.shared.openURL(url)
}
}
이렇게 하면 따로 앱스토어 앱이 뜨게 되는데, 이걸 앱내에서 뜨도록 바꿔보도록 합시다.
먼저 오늘의 프레임워크인 StoreKit을 import해야합니다.
import StoreKit
그리고,
위에서 말했다시피, SKStore
이러한 리뷰창이 뜨는게 아니라, 그 해당 앱의 홈으로 가게 됩니다. 한번 해봅시당.
let viewController = SKStoreProductViewController()
viewController.delegate = self
let parameters = [
SKStoreProductParameterITunesItemIdentifier: 앱 identifier
]
viewController.loadProduct(withParameters: parameters, completionBlock: nil)
self.present(viewController, animated: true, completion: nil)
위에가 메인 코드인데요,
class SettingViewController: UIViewController, SKStoreProductViewControllerDelegate
현재 ViewController가 SKStoreProductViewControllerDelegate를 준수하도록 해줘야 합니다.
그리고 파라미터로 내 앱 identifier를 넘기고, (여기서 parameter엔 여러가지가 들어갈 수 있습니다. 현재 필요한건 앱 identifier밖에 없어서..
....ㅜㅜ
그리고 위에 overview에서
"판매 할 특정 제품을 나타내려면, iTunes item identifier를 load
이렇게 왼쪽에 완료버튼이 뜨면서 제 앱 안에서 이렇게 제 앱 홈화면?을 보여주게 됩니다.
지금은 완료버튼을 눌러도;;아무 반응을 안할텐데요, delegate메소드를 작성해주어야 합니다.
func productViewControllerDidFinish(_ viewController: SKStoreProductViewController) {
viewController.dismiss(animated: true, completion: nil)
}
이렇게!! SKStoreProductViewControllerDelegate의 delegate메소드를 구현해주게 되면, 완료버튼을 눌러도 잘 사라지는 것을 볼 수 있습니다.
하지만 제 목적은..리뷰.......
위에서 언급한
SKStoreReviewController를 사용하면 되겠죠? SKStoreReviewController는 상당히 간단한데요,
if #available(iOS 10.3, *) {
SKStoreReviewController.requestReview()
} else {
// Fallback on earlier versions
}
코드 끝?;;;;
ㅇㅇ끝
class메소드라 바로 호출이 가능;
위에 주석을 꼭 읽어야 할 것 같네요. 읽어봅시다.
StoreKit에게 앱리뷰를 요청합니다. UI가 표시될 수도 있고, 표시되지 않을 수도 있습니다.
이것은 사용자에게 알림을 표시하지 않을 수도 있기 때문에, 버튼이나 다른 사용자의 action에서 사용하기에는 적합하지 않습니다. 쓰기 리뷰양식을 제시하기 위해, 쿼리 "action=write-review"를 product url에 추가하여 앱스토어에서 딥링크를 사용할 수 있습니다.
네 위에서도 아주 잠깐 언급했는데. 저는
이런 "버튼"을 누르면 리뷰를 쓸 수 있게 해놓아서..!! UI가 뜰 수도 있고, 안 뜰 수도 있기 때문에...이런상황에서는 적합하지 않다고 하네요.
위에서 "never request a review using requestReview() as the result of a user action."라고 한번 했었죠?
뭐 어쩔 수 없죠...!
위 코드를 실행하게 되면,
이런 alert창 한번쯤은..보셨겠죠? 아무튼 이 프롬프트를 띄워주는게 SKStore
이렇게 취소와 보내기버튼이 있는데, 지금은 보내기버튼이 비활성화되어있죠?
네..개발버전이라 그렇고ㅎㅎ실제 배포하고 다운받으면 보내기버튼이 활성화되어있다고 합니다..!!
보내기를 누르면
이런 창이 "모달로" 뜬다고 합니다 :)
StoreKitㅎㅎㅎ..이렇게 아주 간단하게 봤는데요.
제가 모르던 내용이 너무나 많았고 알게되어서 다행이네요 :)
아직 인앱구매는...해본적이 없지만 나중에 하게 된다면 글을 꼭 써보겠씁니당
그리고 결과적으로 기존 코드를 유지해야겠네요.
아무튼!!! 도움이 되었길 바랍니다.
참고 :
https://medium.com/@satheesh4590/get-customers-ratings-reviews-within-your-app-for-ios-c9662a4c3a2e
'iOS' 카테고리의 다른 글
iOS ) UIStatusBar (5) | 2018.07.28 |
---|---|
iOS ) windowLevel (0) | 2018.07.28 |
iOS ) hitTest (16) | 2018.06.13 |
iOS ) UIApplication (3) | 2018.05.27 |
iOS ) UIResponder (5) | 2018.05.26 |
- swift delegate
- Combine
- FLUTTER
- WWDC
- fastlane
- iOS delegate
- 회고
- swift sort
- 스위프트
- WKWebView
- Xcode
- 피아노
- ios 13
- WidgetKit
- 스위프트 문법
- np-complete
- Swift
- swift tutorial
- UIBezierPath
- swift array
- Accessibility
- IOS
- swift3
- actor
- Git
- swift 공부
- 제이슨 파싱
- github
- SwiftUI
- np-hard
- Total
- Today
- Yesterday