NowAnalyticsService 프로토콜 - iOS
NowAnalyticsService 프로토콜은 사용자 분석 데이터 수집을 관리하기 위한 분석 속성, 사용자 설정 및 이벤트를 구성할 수 있는 기능을 제공합니다.
이 프로토콜을 준수하는 객체는 sharedAnalyticsService에 의해 반환됩니다. 애플리케이션에서 이를 사용하여 API 호출을 수행합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| trackingConsent | 부울 | 사용자가 연결된 장치에 대한 분석 추적에 동의했는지 여부를 나타내는 플래그입니다. 기본적으로 장치는 옵트아웃되어 있습니다. 이 값을 명시적으로 false 로 설정하면 진행 중인 세션이 즉시 종료되고 로컬로 기록된 데이터가 삭제됩니다.유효한 값은 다음과 같습니다.
|
NowAnalyticsService - addEvent(명명된 eventName: 문자열, 속성: [문자열: 임의]?)
사용자가 특정 수준이나 화면에 도달하는 것과 같은 애플리케이션 이벤트를 추가하고 이벤트에 대한 사용자 지정 속성 설정을 활성화합니다. 이러한 이벤트는 발생한 순서대로 대시보드에 나타납니다.
이러한 이벤트는 분석 대시보드에 나타납니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 명명된 eventName | 문자열 | 추가할 이벤트의 이름입니다. |
| 속성 포함 | 배열 | 옵션입니다. 이벤트에 대한 사용자 지정 속성 키-값 쌍입니다. 속성 키에는 점('.') 또는 달러('$') 기호를 사용할 수 없습니다. 그들은 잘릴 것입니다. 지원되는 값 유형:
주: , 속성 키 및 값의 총 크기는 eventName이벤트당 300바이트를 초과할 수 없습니다. 문자열은 UTF-8로 인코딩됩니다. 이 제한을 초과하는 이벤트는 무시됩니다. |
| 유형 | 설명 |
|---|---|
| 안 함 |
다음 예제에서는 속성이 있는 "Successful Login" 이벤트 및 "Open Case" 이벤트를 추가하는 방법을 보여줍니다.
// Add event with properties
NowAnalytics.sharedAnalyticsService.addEvent(
named: "Open Case", with: ["Screen Name": "Case",
"Case Number": "123",
"Case Priority": 5
])
NowAnalyticsService - addScreenAction(named actionName: String)
현재 화면에 사용자 지정 작업을 추가합니다. 이러한 작업은 세션 데이터의 일부로 사용자 대시보드에 표시되며 애플리케이션의 화면 변경을 설명합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 명명된 actionName | 문자열 | 화면에 추가할 작업의 이름(예: MyButtonClick)입니다. 최대 길이: 256 UTF-8 바이트 |
| 유형 | 설명 |
|---|---|
| 안 함 |
// Add event
NowAnalytics.sharedAnalyticsService.addEvent(named: "Successful Login")
NowAnalyticsService - appendToUserProperty(named propertyName: String, listItem: String)
지정된 항목을 지정된 사용자 속성 목록에 추가합니다 .
| 이름 | 유형 | 설명 |
|---|---|---|
| 명명된 PropertyName | 문자열 | 추가할 listItem 사용자 속성 목록의 이름입니다. |
| 목록 항목 | 문자열 | 속성에 추가할 목록 항목입니다. |
| 유형 | 설명 |
|---|---|
| 안 함 |
// Append handled case to list
NowAnalytics.sharedAnalyticsService.appendToUserProperty(named: "Case Identifiers", listItem: "TASK-1")
NowAnalyticsService - deleteCurrentUserData(completion: @escaping ((_ success: Bool) -> Void))
현재 사용자와 연결된 모든 분석 데이터를 삭제합니다. 또한 이 메서드는 현재 활성 사용자를 설정 해제하고 이 디바이스를 향후 추적에서 옵트아웃합니다.
현재 사용자를 설정하려면 setUserId() 메서드를 사용합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 완료 | @escaping ((_ 성공 : 부울) -> 무효) | 분석 데이터가 삭제된 후 실행할 완성 핸들러입니다. 완료 처리기에 대한 값 반환:
|
| 유형 | 설명 |
|---|---|
| 안 함 |
// Delete user data
NowAnalytics.sharedAnalyticsService.deleteCurrentUserData(completion: { (success) -> Void in
if success {
// deletion succeeded
} else {
// deletion failed
}
})
NowAnalyticsService - incUserProperty(named propertyName: String, by value: Int)
지정된 숫자 속성의 값을 지정된 값만큼 늘리거나 줄입니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 명명된 PropertyName | 문자열 | 증가시킬 사용자 속성의 이름입니다. |
| 값별 | 정수 | 속성을 증가시키는 값입니다. 음수 값을 입력하여 값을 감소시킵니다. |
| 유형 | 설명 |
|---|---|
| 안 함 |
// Increment the "Cases Handled" count
NowAnalytics.sharedAnalyticsService.incUserProperty(named: "Cases Handled", by: 2)
NowAnalyticsService - installJavascriptInterface(webView: WKWebView로)
JavaScript를 사용하여 WebView 내에서 SNAnalytics() API의 메서드를 호출할 수 있도록 합니다.
이 메서드는 네이티브 메서드를 노출하는 JavaScript에서 사용할 수 있는 SNMobileAnalytics 개체를 반환합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 웹뷰 | WKWebView | JavaScript 인터페이스를 삽입할 웹 뷰 객체입니다. |
| 유형 | 설명 |
|---|---|
| 객체 | SNMobileAnalytics |
// Register JS object inside the web page
// This will create an object named 'SNMobileAnalytics' on JS that will have the following methods:
// SNMobileAnalytics.setUserId(userId) example: SNMobileAnalytics.setUserId("John Doe")
// SNMobileAnalytics.startScreen(screenName) example: SNMobileAnalytics.startScreen("WelcomeScreen")
// SNMobileAnalytics.addScreenAction(actionName) example: SNMobileAnalytics.addScreenAction("MyButtonClick")
// SNMobileAnalytics.addEvent(eventName, properties) example: SNMobileAnalytics.addEvent("Successful Login")
// SNMobileAnalytics.addEvent("Successful Login", JSON.stringify({"Screen Name": "Case", "Case Number": "123", "Case Priority": 5}))
NowAnalytics.sharedAnalyticsService.installJavascriptInterface(into: webView)
NowAnalyticsService - removeUserProperty(명명된 propertyName: String)
현재 사용자에 대해 지정된 속성을 삭제합니다.
현재 사용자를 설정하려면 setUserId() 메서드를 사용합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 명명된 PropertyName | 문자열 | 삭제할 사용자 속성의 이름입니다. |
| 유형 | 설명 |
|---|---|
| 안 함 |
// Remove unnecessary property
NowAnalytics.sharedAnalyticsService.removeUserProperty(named: "Temp Cases")
NowAnalyticsService - setDelegate(_ delegate: NowAnalyticsServiceDelegate?)
알림을 받을 대리인에 대한 약한 참조를 설정합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 위임 | NowAnalyticsServiceDelegate | 옵션입니다. 대리자 클래스에 대한 참조가 포함된 개체입니다. |
| 유형 | 설명 |
|---|---|
| 안 함 |
이 예시에서는 NowAnalyticsServiceDelegate에 대한 대리자 클래스를 정의하는 방법을 보여줍니다.
// Define a delegate class for NowAnalyticsServiceDelegate
class NowAnalyticsDelegate: NowAnalytics.NowAnalyticsServiceDelegate {
func nowAnalyticsSessionShouldStart() -> Bool {
// Session is about to start, return true to allow session to start
return true
}
func nowAnalyticsSessionDidStart(_ sessionId: String) {
// Session was started
}
func nowAnalyticsSessionShouldEnd(_ sessionId: String) -> Bool {
// Session is about to end, return true to allow session to end
return true
}
func nowAnalyticsSessionDidEnd(_ sessionId: String) {
// Session was ended
}
func nowAnalyticsDidDetectScreen(_ screenName: String) -> String? {
// Example of skipping specific screen detection
if (screenName == "LoginViewController") {
return nil
}
// Example of appending a prefix for every screen detected
return "MyApp_" + screenName
}
}
// Register delegate
private var analyticsDelegate = NowAnalyticsDelegate() // Keep ref of delegate
NowAnalytics.sharedAnalyticsService.setDelegate(analyticsDelegate)
NowAnalyticsService - setUserId(_ userId: 문자열?)
현재 사용자에 대한 애플리케이션의 사용자 ID를 설정합니다. nil을 전달하여 현재 사용자를 로그아웃합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| userID | 문자열 | 옵션입니다. 애플리케이션별 사용자 식별자입니다. 현재 사용자를 로그아웃하려면 사용자 ID에는 HTML 태그나 이름, 이메일 또는 전화번호와 같은 개인 데이터가 포함되어서는 안 됩니다. 최대 길이: 256 UTF-8 바이트 |
| 유형 | 설명 |
|---|---|
| 안 함 |
// Add several properties at once
NowAnalytics.sharedAnalyticsService.setUserProperties([
"Cases Handled": 100,
"Last Login": Date(),
"Is Remote": true,
"Profile URL": URL(string: "https://www.servicenow.com")!
])
NowAnalyticsService - setUserProperties(_ userProperties: [String: Any])
현재 사용자에 대해 지정된 값으로 여러 속성을 설정합니다. 속성은 대시보드에서 사용자를 추적하려는 모든 것이 될 수 있습니다.
이 함수를 호출하기 전에 setUserId() 함수를 호출해야 합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| userProperties | 배열 | 설정할 사용자 속성의 키-값 쌍입니다. 지원되는 값 유형:
키에는 점(".") 또는 달러("$") 기호가 포함될 수 없습니다. 최대 길이:
|
| 유형 | 설명 |
|---|---|
| 안 함 |
import NowAnalytics
// Initialize the Analytics SDK
NowAnalytics.configure(for: URL(string: "https://my.instance.service-now.com")!)
// Enable tracking consent
NowAnalytics.sharedAnalyticsService.trackingConsent = true
// Set User Id for proper identification
NowAnalytics.sharedAnalyticsService.setUserId("John Doe")
// Set the "Role" property of the user to "Admin"
NowAnalytics.sharedAnalyticsService.setUserProperty(named: "Role", with: "Admin")
// Add several properties at once
NowAnalytics.sharedAnalyticsService.setUserProperties([
"Cases Handled": 100,
"Last Login": Date(),
"Is Remote": true,
"Profile URL": URL(string: "https://www.servicenow.com")!
])
NowAnalyticsService - setUserProperty(명명된 propertyName: 문자열, 값: 임의?)
현재 사용자에 대해 지정된 속성을 지정된 값으로 설정합니다. 응용 프로그램에 적합한 모든 속성을 정의할 수 있습니다.
이 함수를 호출하기 전에 setUserId() 함수를 호출해야 합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 명명된 PropertyName | 문자열 | 설정할 사용자 속성의 이름입니다. 점('.') 또는 달러('$') 기호는 포함할 수 없습니다. 최대 길이: 256자 |
| 값 포함 | 모두 | 사용자 속성을 설정할 값입니다. 지원되는 값 유형:
최대 길이: 1,000자 |
| 유형 | 설명 |
|---|---|
| 안 함 |
// Set the "Role" property of the user to "Admin"
NowAnalytics.sharedAnalyticsService.setUserProperty(named: "Role", with: "Admin")
NowAnalyticsService - startScreen(명명된 screenName: 문자열)
연결된 화면이 UI에 처음 나타나는 시간을 기록합니다.
viewDidAppear(_:) 메서드 뒤에 이 메서드를 호출합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 명명된 screenName | 문자열 | 시작 시간을 기록할 화면의 이름입니다(예: WelcomeScreen ). 이는 분석 대시보드에서 화면 및 표시/집계로 정의하려는 모든 것이 될 수 있습니다. 최대 길이: 256 UTF-8 바이트 |
| 유형 | 설명 |
|---|---|
| 안 함 |
// Mark the appearance starting time of a screen
// This method should be usually called from the viewDidAppear
NowAnalytics.sharedAnalyticsService.startScreen(named: "WelcomeScreen")