From 78128ea44b2fb3eff931cf8cb90b22da2a939906 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8C=E1=85=A5=E1=86=BC=E1=84=8C=E1=85=B5=E1=84=92?= =?UTF-8?q?=E1=85=A7=E1=86=A8?= Date: Fri, 16 Feb 2024 13:01:34 +0900 Subject: [PATCH 1/2] =?UTF-8?q?[#7]=20public=20=ED=95=A8=EC=88=98=EC=97=90?= =?UTF-8?q?=20=EB=AC=B8=EC=84=9C=ED=99=94=20=EC=A3=BC=EC=84=9D=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 일부 함수 주석 테스트 - Editer/Structure/Documentation으로 간단하게 추가 가능 --- Sources/YLS-iOS/YLS_iOS.swift | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/Sources/YLS-iOS/YLS_iOS.swift b/Sources/YLS-iOS/YLS_iOS.swift index 9682c7b..aed129c 100644 --- a/Sources/YLS-iOS/YLS_iOS.swift +++ b/Sources/YLS-iOS/YLS_iOS.swift @@ -16,6 +16,8 @@ public final class YLS { private init() {} + /// YLS를 초기화하는 함수입니다. + /// - Parameter urlString: 해당하는 서비스의 로깅 시스템 URL 문자열 public func initialize(from urlString: String) { guard let url = URL(string: urlString) else { logger.error("Failure YLS init by - \(urlString)") @@ -25,6 +27,8 @@ public final class YLS { self.url = url } + /// YLS에서 사용할 UserID를 설정하는 함수입니다. + /// - Parameter userID: 로그인된 사용자일 경우에는 UserID, 아닐 경우 nil public func setUserID(of userID: String?) { if let userID { self.hashedUserID = hashUserID(userID: userID) @@ -34,6 +38,10 @@ public final class YLS { logger.info("YLS set hashUserID of \(self.hashedUserID ?? "")") } + /// <#Description#> + /// - Parameters: + /// - name: <#name description#> + /// - extra: <#extra description#> public func logEvent(name: String, extra: [String: Any] = [:]) { guard let hashedUserID else { logger.warning("YLS should init UserID") @@ -53,14 +61,24 @@ public final class YLS { } } + /// <#Description#> + /// - Parameters: + /// - name: <#name description#> + /// - extra: <#extra description#> public func logScreenEvent(screenName name: String, extra: [String: Any] = [:]) { logEvent(name: "\(name)Viewed", extra: extra) } + /// <#Description#> + /// - Parameters: + /// - name: <#name description#> + /// - extra: <#extra description#> public func logTapEvent(buttonName name: String, extra: [String: Any] = [:]) { logEvent(name: "\(name)Tapped", extra: extra) } + /// <#Description#> + /// - Parameter extra: <#extra description#> public func logLeaveEvent(extra: [String: Any] = [:]) { logEvent(name: "User Leaved", extra: extra) flush() From df130f5b9741e546ca2987c639070de3752eadc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8C=E1=85=A5=E1=86=BC=E1=84=8C=E1=85=B5=E1=84=92?= =?UTF-8?q?=E1=85=A7=E1=86=A8?= Date: Sat, 17 Feb 2024 21:35:09 +0900 Subject: [PATCH 2/2] =?UTF-8?q?[#7]=20=ED=80=B5=ED=97=AC=ED=94=84=20?= =?UTF-8?q?=EC=A3=BC=EC=84=9D=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Sources/YLS-iOS/YLS_iOS.swift | 96 ++++++++++++++++++++++++++++------- 1 file changed, 78 insertions(+), 18 deletions(-) diff --git a/Sources/YLS-iOS/YLS_iOS.swift b/Sources/YLS-iOS/YLS_iOS.swift index aed129c..00ffda0 100644 --- a/Sources/YLS-iOS/YLS_iOS.swift +++ b/Sources/YLS-iOS/YLS_iOS.swift @@ -16,8 +16,25 @@ public final class YLS { private init() {} - /// YLS를 초기화하는 함수입니다. - /// - Parameter urlString: 해당하는 서비스의 로깅 시스템 URL 문자열 + /** + YLS를 초기화하는 함수입니다. + + 앱 초기화 시에 로깅 시스템에 해당하는 URL을 설정하는 함수입니다. + SwiftUI의 경우, App 내부 init() 함수에서 + ``` + init() { + YLS.shared.initialize(from: "https://www.example.com/" + } + ``` + UIKit의 경우, AppDelegate 내부 application() 함수에서 + ``` + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: ...) -> Bool { + YLS.shared.initialize(from: "https://www.example.com/" + } + ``` + 초기화 함수를 호출해주세요 + - Parameter urlString: URL 문자열 + */ public func initialize(from urlString: String) { guard let url = URL(string: urlString) else { logger.error("Failure YLS init by - \(urlString)") @@ -27,8 +44,16 @@ public final class YLS { self.url = url } - /// YLS에서 사용할 UserID를 설정하는 함수입니다. - /// - Parameter userID: 로그인된 사용자일 경우에는 UserID, 아닐 경우 nil + /** + YLS에서 사용할 UserID를 설정하는 함수입니다. + + UserID가 확인되는 시점에 호출해주세요. + 로그인이 안된 사용자의 경우, nil을 넘겨주시면 됩니다. + ``` + YLS.shared.setUserID(of: userID) + ``` + - Parameter userID: 로그인된 사용자일 경우에는 UserID, 아닐 경우 nil + */ public func setUserID(of userID: String?) { if let userID { self.hashedUserID = hashUserID(userID: userID) @@ -38,10 +63,15 @@ public final class YLS { logger.info("YLS set hashUserID of \(self.hashedUserID ?? "")") } - /// <#Description#> - /// - Parameters: - /// - name: <#name description#> - /// - extra: <#extra description#> + /** + 기본적인 이벤트 로그를 남기는 함수입니다. + + 화면이나 버튼이 아닌 다른 이벤트의 로그를 남기고 싶을 때 사용하는 함수입니다. + name에 들어간 이벤트 이름이 그대로 서버에 저장됩니다. + - Parameters: + - name: 이벤트 이름 + - extra: 추가적인 정보 + */ public func logEvent(name: String, extra: [String: Any] = [:]) { guard let hashedUserID else { logger.warning("YLS should init UserID") @@ -61,24 +91,54 @@ public final class YLS { } } - /// <#Description#> - /// - Parameters: - /// - name: <#name description#> - /// - extra: <#extra description#> + /** + 화면 이벤트 로그를 남기는 함수입니다. + + 현재 화면을 사용자가 보았다는 로그를 남기는 함수입니다. + SwiftUI의 경우, ViewModifier의 .onAppear()에서, + ``` + .onAppear { + YLS.shared.logScreenEvent(screenName: "ContentView") + } + ``` + UIkit의 경우, viewDidAppear()에서 + ``` + ``` + 호출하는 것을 의도했습니다. + - Parameters: + - name: 화면 이름 + - extra: 추가적인 정보 + */ public func logScreenEvent(screenName name: String, extra: [String: Any] = [:]) { logEvent(name: "\(name)Viewed", extra: extra) } - /// <#Description#> - /// - Parameters: - /// - name: <#name description#> - /// - extra: <#extra description#> + /** + 버튼 터치 이벤트 로그를 남기는 함수입니다. + + 사용자가 버튼을 눌렀다는 로그를 남기는 함수입니다. + SwiftUI, UIkit 모두 버튼의 터치 이벤트 내부에서 호출하는 것을 의도했습니다. + - Parameters: + - name: 버튼 이름 + - extra: 추가적인 정보 + */ public func logTapEvent(buttonName name: String, extra: [String: Any] = [:]) { logEvent(name: "\(name)Tapped", extra: extra) } - /// <#Description#> - /// - Parameter extra: <#extra description#> + /** + 사용자 이탈 로그를 남기는 함수입니다. + + 사용자가 앱을 종료하거나 기타 의도된 이탈의 로그를 남기는 함수입니다. + 앱을 종료할 때는, AppDelegate 내부의 applicationWillTerminate()에서 호출하는 것을 의도했습니다. + ``` + func applicationWillTerminate(_ application: UIApplication) { + YLS.shared.logLeaveEvent() + sleep(2) + } + ``` + - Parameter extra: 추가적인 정보 + */ public func logLeaveEvent(extra: [String: Any] = [:]) { logEvent(name: "User Leaved", extra: extra) flush()