NowAnalyticsService 프로토콜 - iOS
NowAnalyticsService 프로토콜은 사용자 분석 데이터 수집을 관리하기 위한 분석 속성, 사용자 설정 및 이벤트를 구성할 수 있는 기능을 제공합니다.
이 프로토콜을 따르는 객체는 sharedAnalyticsService에 의해 반환됩니다. 애플리케이션에서 API 호출을 수행하는 데 사용합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 추적동의 | 부울 | 사용자가 연결된 장치에 대한 분석 추적에 동의했는지 여부를 나타내는 플래그입니다. 기본적으로 장치는 옵트아웃됩니다. 이 값을 명시적으로 false 로 설정하면 진행 중인 모든 세션이 즉시 종료되고 로컬에 기록된 데이터가 삭제됩니다.유효한 값은 다음과 같습니다.
|
NowAnalyticsService - addEvent(named eventName: String, with properties: [String: Any]?)
특정 레벨 또는 화면에 도달하는 사용자와 같은 애플리케이션 이벤트를 추가하고 이벤트에 대한 사용자 지정 속성 설정을 활성화합니다. 이러한 이벤트는 발생한 순서대로 대시보드에 표시됩니다.
이러한 이벤트는 분석 대시보드에 표시됩니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 명명된 eventName | 문자열 | 추가할 이벤트의 이름입니다. |
| 속성 포함 | 배열 | 옵션입니다. 이벤트에 대한 사용자 지정 속성 키-값 쌍입니다. 속성 키에는 점('.') 또는 달러('$') 기호를 사용할 수 없습니다. 그들은 다듬어 질 것입니다. 지원되는 값 유형:
주: , properties 키 및 값의 총 크기는 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 사용자 속성 목록의 이름입니다. |
| Listitem | 문자열 | 속성에 추가할 목록 항목입니다. |
| 유형 | 설명 |
|---|---|
| 없음 |
// Append handled case to list
NowAnalytics.sharedAnalyticsService.appendToUserProperty(named: "Case Identifiers", listItem: "TASK-1")
NowAnalyticsService - deleteCurrentUserData(completion: @escaping ((_ success: Bool) -> Void))
현재 사용자와 연결된 모든 분석 데이터를 삭제합니다. 또한 이 메서드는 현재 활성 사용자를 설정 해제하고 이 장치를 향후 추적에서 옵트아웃합니다.
현재 사용자를 설정하려면 setUserId() 메서드를 사용합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 완료 | @escaping ((_ 성공: Bool) -> Void) | 분석 데이터가 삭제된 후 실행할 완료 핸들러입니다. 완료 처리기의 반환 값:
|
| 유형 | 설명 |
|---|---|
| 없음 |
// 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 개체를 반환합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| Webview | WKWeb뷰 | JavaScript 인터페이스를 삽입할 웹 뷰 객체입니다. |
| 유형 | 설명 |
|---|---|
| 객체 | SNMobile분석 |
// 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(named 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: String?)
현재 사용자에 대한 애플리케이션의 사용자 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: [문자열: 모두])
현재 사용자에 대해 지정된 값으로 여러 속성을 설정합니다. 속성은 사용자에 대해 대시보드에서 추적하려는 모든 것이 될 수 있습니다.
이 함수를 호출하기 전에 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(named propertyName: String, with value: Any?)
지정된 속성을 현재 사용자에 대해 지정된 값으로 설정합니다. 응용 프로그램에 적합한 모든 속성을 정의할 수 있습니다.
이 함수를 호출하기 전에 setUserId() 함수를 호출해야 합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 명명된 propertyName | 문자열 | 설정할 사용자 속성의 이름입니다. 점('.') 또는 달러('$') 기호를 포함할 수 없습니다. 최대 길이: 256자 |
| 값 포함 | 임의 | 사용자 속성을 설정할 값입니다. 지원되는 값 유형:
최대 길이: 1,000자 |
| 유형 | 설명 |
|---|---|
| 없음 |
// Set the "Role" property of the user to "Admin"
NowAnalytics.sharedAnalyticsService.setUserProperty(named: "Role", with: "Admin")
NowAnalyticsService - startScreen(named screenName: String)
연결된 화면이 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")