투케이2K

157. (ios/swift) SKStoreReviewController 사용해 인앱 리뷰 팝업창 호출 수행 실시 본문

IOS

157. (ios/swift) SKStoreReviewController 사용해 인앱 리뷰 팝업창 호출 수행 실시

투케이2K 2022. 7. 13. 15:43

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT

 

[소스 코드]

        // [웹 코드] window.webkit.messageHandlers.setOpenReview.postMessage('');
        if message.name == "setOpenReview" {
            //let receiveData = message.body as! String // 전달 받은 메시지 확인
            guard let checkType = message.body as? String // 전달 받은 메시지 확인
            else {
                print("")
                print("===============================")
                print("[A_Main >> userContentController() :: 자바스크립트 >> IOS]")
                print("Bridge :: setOpenReview")
                print("error [type] :: ", type(of: message.body))
                print("로 직 :: ", "data type error >> 로직 종료")
                print("===============================")
                print("")
                
                // [에러 팝업창 알림 표시]
                self.showAlert(type: 0, tittle: S_FinalData.AL_TITLE, content: S_FinalData.JS_ERROR + " (setOpenReview) (data type error)", okBtb: S_FinalData.AL_OK, noBtn: "")
                return
            }
            print("")
            print("===============================")
            print("[A_Main >> userContentController() :: 자바스크립트 >> IOS]")
            print("Bridge :: setOpenReview")
            print("설 명 :: ", "리뷰 열기 수행 실시")
            print("===============================")
            print("")

            // -----------------------------------------
            
            // MARK: [즉시 : 앱 스토어 리뷰창 열기 : id 예시 - id362057947]
            /*
            if let appstoreURL = URL(string: "https://apps.apple.com/app/" + S_FinalData.APP_ID) {
                var components = URLComponents(url: appstoreURL, resolvingAgainstBaseURL: false)
                components?.queryItems = [
                  URLQueryItem(name: "action", value: "write-review") // [리뷰창 설정]
                ]
                guard let writeReviewURL = components?.url else {
                    return
                }
                UIApplication.shared.open(writeReviewURL, options: [:], completionHandler: nil)
            }
            // */
            
            // -----------------------------------------
            
            // MARK: [랜덤 : 인앱 리뷰 팝업창 열기]
            
            /*
             // -----------------------------------------
             [인앱 리뷰 팝업창 열기 설명]
             // -----------------------------------------
             1. 필요 import :
               
               - import StoreKit
             // -----------------------------------------
             2. 랜덤 리뷰 팝업창 호출 되지 않는 원인 종류 :
               - [디버깅] : Development 팝업이 항상 표시
               - [Testflight] : 팝업이 표시 되지 않음
               - [AppStore] : 애플의 정책에 맞게 표시됨
                              365일동안 3번 이상 뜨지 않음
                              같은 버전에서 2번 이상 뜨지 않음
             // -----------------------------------------
             3. 참고 사이트 :
               - https://developer.apple.com/app-store/ratings-and-reviews/
             // -----------------------------------------
             */
            
            //*
            if #available(iOS 14.0, *) {
              guard let scene = UIApplication
                .shared
                .connectedScenes
                .first(where: { $0.activationState == .foregroundActive }) as? UIWindowScene
              else {
                  print("")
                  print("===============================")
                  print("[A_Main >> userContentController() :: 자바스크립트 >> IOS]")
                  print("Bridge :: setOpenReview")
                  print("로 직 :: ", "인앱 리뷰 열기 수행 에러 [1]")
                  print("===============================")
                  print("")
                  return
              }
              SKStoreReviewController.requestReview(in: scene)
              print("")
              print("===============================")
              print("[A_Main >> userContentController() :: 자바스크립트 >> IOS]")
              print("Bridge :: setOpenReview")
              print("로 직 :: ", "인앱 리뷰 열기 수행 정상 [1]")
              print("===============================")
              print("")
            } else {
                if #available(iOS 10.3, *) {
                    SKStoreReviewController.requestReview()
                    print("")
                    print("===============================")
                    print("[A_Main >> userContentController() :: 자바스크립트 >> IOS]")
                    print("Bridge :: setOpenReview")
                    print("로 직 :: ", "인앱 리뷰 열기 수행 정상 [2]")
                    print("===============================")
                    print("")
                } else {
                    print("")
                    print("===============================")
                    print("[A_Main >> userContentController() :: 자바스크립트 >> IOS]")
                    print("Bridge :: setOpenReview")
                    print("로 직 :: ", "인앱 리뷰 열기 수행 에러 [1]")
                    print("===============================")
                    print("")
                }
            }
            // */
        }
 

[결과 출력]


반응형
Comments