NowAnalyticsService 프로토콜 - iOS

  • 릴리스 버전: Xanadu
  • 업데이트 날짜 2024년 08월 01일
  • 읽기13분
  • NowAnalyticsService 프로토콜은 사용자 분석 데이터 수집을 관리하기 위한 분석 속성, 사용자 설정 및 이벤트를 구성할 수 있는 기능을 제공합니다.

    이 프로토콜을 준수하는 개체는 sharedAnalyticsService에 의해 반환됩니다. 애플리케이션에서 API 호출을 수행하는 데 사용합니다.

    표 1. 요구 사항
    이름 유형 설명
    trackingConsent (추적 동의) 부울 사용자가 연결된 장치에 대한 분석 추적에 동의했는지 여부를 나타내는 플래그입니다. 기본적으로 장치는 옵트아웃되어 있습니다. 이 값을 명시적으로 false 로 설정하면 진행 중인 세션이 즉시 종료되고 로컬에 기록된 데이터가 삭제됩니다.
    유효한 값은 다음과 같습니다.
    • true: 사용자가 이 장치에서 추적되는 분석 데이터에 동의했습니다.
    • false: 사용자가 데이터 추적을 거부했습니다.

    NowAnalyticsService - addEvent(명명된 eventName: 문자열, 속성: [String: Any]?)

    사용자가 특정 수준이나 화면에 도달하는 경우와 같은 애플리케이션 이벤트를 추가하고, 이벤트에서 사용자 지정 속성을 설정할 수 있도록 합니다. 이러한 이벤트는 발생한 순서대로 대시보드에 나타납니다.

    이러한 이벤트는 분석 대시보드에 표시됩니다.

    표 2. 매개변수
    이름 유형 설명
    명명된 eventName 문자열 추가할 이벤트의 이름입니다.
    속성이 있는 배열 옵션입니다. 이벤트에 대한 사용자 지정 속성 키-값 쌍입니다. 속성 키에는 점('.') 또는 달러('$') 기호가 포함될 수 없습니다. 그들은 잘릴 것입니다.
    지원되는 값 유형:
    • 날짜
    • NSNull(엔스널)
    • NS넘버
    • 문자열
    • URL
    주:
    , 속성 키 및 값의 eventName총 크기는 이벤트당 300바이트를 초과할 수 없습니다. 문자열은 UTF-8로 인코딩됩니다. 이 제한을 초과하는 이벤트는 무시됩니다.
    표 3. 반환
    유형 설명
    없음

    다음 예제에서는 속성을 사용하여 "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(명명된 actionName: 문자열)

    현재 화면에 사용자 지정 작업을 추가합니다. 이러한 작업은 사용자 대시보드에 세션 데이터의 일부로 표시되며 애플리케이션의 화면 변경을 설명합니다.

    표 4. 매개변수
    이름 유형 설명
    명명된 actionName 문자열 화면에 추가할 액션의 이름입니다(예: MyButtonClick).

    최대 길이: 256 UTF-8 바이트

    표 5. 반환
    유형 설명
    없음

    // Add event
    NowAnalytics.sharedAnalyticsService.addEvent(named: "Successful Login")

    NowAnalyticsService - appendToUserProperty(명명된 propertyName: 문자열, listItem: 문자열)

    지정된 항목을 지정된 사용자 속성 목록에 추가합니다 .

    표 6. 매개변수
    이름 유형 설명
    명명된 propertyName 문자열 추가할 listItem 사용자 속성 목록의 이름입니다.
    listItem 문자열 속성에 추가할 목록 항목입니다.
    표 7. 반환
    유형 설명
    없음

    // Append handled case to list
    NowAnalytics.sharedAnalyticsService.appendToUserProperty(named: "Case Identifiers", listItem: "TASK-1")
    

    NowAnalyticsService - deleteCurrentUserData(완성: @escaping((_ 성공: Bool) -> 무효))

    현재 사용자와 연결된 모든 분석 데이터를 삭제합니다. 또한 이 메서드는 현재 활성 사용자의 설정을 해제하고 향후 추적에서 이 장치를 옵트아웃합니다.

    현재 사용자를 설정하려면 setUserId() 메서드를 사용합니다.

    표 8. 매개변수
    이름 유형 설명
    완료 @escaping ((_ success: Bool) - > 무효) 분석 데이터가 삭제된 후 실행할 완료 핸들러입니다.
    완료 처리기에 대한 반환 값:
    • 성공: 부울 값 true를 반환합니다.
    • 실패: 무효 - 연결이 없는 경우와 같이 Appsee 서버에 연결할 수 없는 경우 오류가 발생할 수 있습니다. 오류가 발생하면 메서드를 다시 시도합니다.
    표 9. 반환
    유형 설명
    없음

    // Delete user data
    NowAnalytics.sharedAnalyticsService.deleteCurrentUserData(completion: { (success) -> Void in
      if success {
        // deletion succeeded
      } else {
        // deletion failed
      }
    })

    NowAnalyticsService - incUserProperty(명명된 propertyName: 문자열, 값별: Int)

    지정된 숫자 속성의 값을 지정된 값만큼 증가시키거나 감소시킵니다.

    표 10. 매개변수
    이름 유형 설명
    명명된 propertyName 문자열 증가시킬 사용자 속성의 이름입니다.
    값 기준 정수 속성을 증가시킬 값입니다. 음수 값을 입력하여 값을 감소시킵니다.
    표 11. 반환
    유형 설명
    없음

    // Increment the "Cases Handled" count
    NowAnalytics.sharedAnalyticsService.incUserProperty(named: "Cases Handled", by: 2)

    NowAnalyticsService - installJavascriptInterface(webView로: WKWebView)

    JavaScript를 사용하여 WebView 내에서 SNAnalytics() API의 메서드를 호출할 수 있도록 합니다.

    이 메서드는 네이티브 메서드를 노출하는 JavaScript에서 사용할 수 있는 SNMobileAnalytics 개체를 반환합니다.

    표 12. 매개변수
    이름 유형 설명
    웹뷰 WKWebView JavaScript 인터페이스를 삽입할 웹 뷰 객체입니다.
    표 13. 반환
    유형 설명
    객체 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(명명된 propertyName: 문자열)

    현재 사용자에 대해 지정된 속성을 삭제합니다.

    현재 사용자를 설정하려면 setUserId() 메서드를 사용합니다.

    표 14. 매개변수
    이름 유형 설명
    명명된 propertyName 문자열 삭제할 사용자 속성의 이름입니다.
    표 15. 반환
    유형 설명
    없음

    // Remove unnecessary property
    NowAnalytics.sharedAnalyticsService.removeUserProperty(named: "Temp Cases")
    

    NowAnalyticsService - setDelegate(_ 대리자: NowAnalyticsServiceDelegate?)

    알림을 받을 대리인에 대한 약한 참조를 설정합니다.

    표 16. 매개변수
    이름 유형 설명
    위임 NowAnalyticsServiceDelegate 옵션입니다. 대리자 클래스에 대한 참조를 포함하는 개체입니다.
    // Register delegate
    private var analyticsDelegate = NowAnalyticsDelegate()  // Keep ref of delegate
    NowAnalytics.sharedAnalyticsService.setDelegate(analyticsDelegate)
    표 17. 반환
    유형 설명
    없음

    이 예제에서는 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 을 전달하여 현재 사용자를 로그아웃합니다.

    표 18. 매개변수
    이름 유형 설명
    userID 문자열 옵션입니다. 애플리케이션별 사용자 식별자입니다.

    현재 사용자를 로그 아웃하려면 nil을 전달하십시오.

    사용자 ID에는 HTML 태그 또는 이름, 이메일 또는 전화 번호와 같은 개인 데이터가 포함되어서는 안 됩니다.

    최대 길이: 256 UTF-8 바이트

    표 19. 반환
    유형 설명
    없음

    // 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() 함수를 호출해야 합니다.

    표 20. 매개변수
    이름 유형 설명
    userProperties 배열 설정할 사용자 속성의 키-값 쌍입니다.
    지원되는 값 유형:
    • NS넘버
    • 문자열
    • 날짜
    • URL
    • NSNull(엔스널)

    키에는 점(".") 또는 달러("$") 기호가 포함될 수 없습니다.

    최대 길이:
    • 키: 256자
    • 값: 1,000자
    표 21. 반환
    유형 설명
    없음

    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: 문자열, 값: Any?)

    현재 사용자에 대해 지정된 값으로 지정된 속성을 설정합니다. 응용 프로그램에 적합한 모든 속성을 정의할 수 있습니다.

    이 함수를 호출하기 전에 setUserId() 함수를 호출해야 합니다.

    표 22. 매개변수
    이름 유형 설명
    명명된 propertyName 문자열 설정할 사용자 속성의 이름입니다. 점('.') 또는 달러('$') 기호는 포함할 수 없습니다.

    최대 길이: 256자

    값 포함 모든 사용자 속성을 설정할 값입니다.
    지원되는 값 유형:
    • 날짜
    • NSNull(엔스널)
    • NS넘버
    • 문자열
    • URL

    최대 길이: 1,000자

    표 23. 반환
    유형 설명
    없음

    // Set the "Role" property of the user to "Admin"
    NowAnalytics.sharedAnalyticsService.setUserProperty(named: "Role", with: "Admin")

    NowAnalyticsService - startScreen(명명된 screenName: String)

    연결된 화면이 UI에 처음 나타나는 시간을 로그합니다.

    viewDidAppear(_:) 메서드 후에 이 메서드를 호출합니다.

    표 24. 매개변수
    이름 유형 설명
    명명된 screenName 문자열 시작 시간을 기록할 화면의 이름입니다(예: WelcomeScreen ). 화면으로 정의하고 분석 대시보드에 표시/집계하려는 모든 것이 될 수 있습니다.

    최대 길이: 256 UTF-8 바이트

    표 25. 반환
    유형 설명
    없음

    // Mark the appearance starting time of a screen
    // This method should be usually called from the viewDidAppear
    NowAnalytics.sharedAnalyticsService.startScreen(named: "WelcomeScreen")