iOS SDK 주의사항 및 로그 유틸리티¶
WebView에서 InAppMessage 사용 시 주의사항¶
WebView에서 InAppMessage 기능을 사용할 때 ViewController의 rootView에서 WebView를 subView로 추가하면 정상 동작합니다.
반대로 override func loadView() 같은 함수로 rootView를 WebView로 설정하면 InAppMessage와 WebView 모두 보이지 않고 Black Screen 오류가 발생할 수 있습니다.
오류 예시¶
import UIKit
import WebKit
import GroobeeKit
class WebViewController: UIViewController, WKUIDelegate, WKNavigationDelegate {
@IBOutlet var webView: WKWebView!
override func loadView() {
let webConfiguration = WKWebViewConfiguration()
webView = WKWebView(frame: .zero, configuration: webConfiguration)
webView.uiDelegate = self
webView.navigationDelegate = self
view = webView
}
override func viewDidLoad() {
super.viewDidLoad()
let url = URL(string: "URL")
let request = URLRequest(url: url!)
self.webView.load(request)
self.webView.translatesAutoresizingMaskIntoConstraints = false
Groobee.getInstance().setScreenData(screenName: "SCREEN_NAME", screenId: "SCREEN_ID")
}
}
정상 예시¶
import UIKit
import WebKit
import GroobeeKit
class WebViewController: UIViewController, WKUIDelegate, WKNavigationDelegate {
private let webView = WKWebView()
override func viewDidLoad() {
super.viewDidLoad()
self.webView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(webView)
webView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
webView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
webView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
webView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
let url = URL(string: "URL")
let request = URLRequest(url: url!)
self.webView.load(request)
self.webView.uiDelegate = self
self.webView.navigationDelegate = self
Groobee.getInstance().setScreenData(screenName: "SCREEN_NAME", screenId: "SCREEN_ID")
}
}
로그 유틸리티 사용법¶
그루비 SDK는 상세 로그를 확인할 수 있도록 LoggerUtils라는 로그 클래스를 제공합니다.
| 메소드 | 설명 |
|---|---|
setLogLevel |
로그 레벨을 설정합니다. verbose, debug, info, warn, error, none가 있으며 verbose가 가장 자세한 로그를 출력합니다. |
setDetailLogEnabled |
평소에는 간략하게 표기되는 일부 로그를, 디버깅이 필요할 때 더 상세하게 출력하도록 전환하는 옵션입니다. |
setTraceEnabled |
추적 아이디를 활성화합니다. |
setLogCallback |
로그 내용을 별도로 처리할 수 있는 콜백을 등록합니다. |
setOptions |
위 옵션들을 키-값 형태로 한 번에 설정하는 대체 API입니다. 지원 옵션은 아래 표 참고. |
LoggerUtils.setOptions 지원 옵션:
| 키 | 자료형 | 설명 |
|---|---|---|
LOG_LEVEL |
GroobeeLogLevel raw value |
로그 레벨 |
DETAIL_LOG_ENABLED |
Bool |
상세 로그 활성화 |
TRACE_ENABLED |
Bool |
추적 아이디 활성화 |
LOG_CALLBACK |
GroobeeLogCallback |
로그 콜백 등록 |
Swift 예시:
import GroobeeKit
class MyLogger: NSObject, GroobeeLogCallback {
func onLog(level: Int, tag: String, message: String) {
print("Groobee Log :", message)
}
}
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
LoggerUtils.setLogLevel(GroobeeLogLevel.verbose.rawValue)
LoggerUtils.setDetailLogEnabled(true)
LoggerUtils.setTraceEnabled(true)
LoggerUtils.setLogCallback(MyLogger())
// LoggerUtils.setOptions("LOG_LEVEL", value: GroobeeLogLevel.verbose.rawValue)
// LoggerUtils.setOptions("DETAIL_LOG_ENABLED", value: true)
// LoggerUtils.setOptions("TRACE_ENABLED", value: true)
// LoggerUtils.setOptions("LOG_CALLBACK", value: logger)
return true
}
}