---
sourceDocument: 호주 API 참조
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/ko-KR/api-reference

 Release :

    - australia

ft:locale :

    - ko-KR

ft:publication_title :

    - 호주 API 참조

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# NowAnalyticsService 프로토콜 - iOS

# NowAnalyticsService 프로토콜 - iOS {#ariaid-title1}

* 릴리스 버전: Australia
* 
* 업데이트 날짜 2026년 03월 12일
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 소요 시간: 13분

NowAnalyticsService 프로토콜은 사용자 분석 데이터 수집을 관리하기 위한 분석 속성, 사용자 설정 및 이벤트를 구성할 수 있는 기능을 제공합니다.

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

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

{#NowAnalyticsServiceiOSProtocol__table_vx2_klw_5pb}

## NowAnalyticsService - addEvent(named eventName: String, with properties: \[String: Any\]?) {#ariaid-title2}

사용자가 특정 레벨이나 화면에 도달하는 것과 같은 애플리케이션 이벤트를 추가하고 이벤트에 대한 사용자 지정 속성 설정을 활성화합니다. 이러한 이벤트는 발생한 순서대로 대시보드에 표시됩니다.
이러한 이벤트는 분석 대시보드에 나타납니다.
{#NAnalyServiOs-addEvent_S_A__table_hwl_5vy_spb__entry__3}

| 이름 | 유형 | 설명 |
|-|-|-|
| 명명된 eventName | 문자열 | 추가할 이벤트의 이름입니다. |
| 속성 포함 | 배열 | 옵션입니다. 이벤트에 대한 사용자 지정 속성 키-값 쌍입니다. 속성 키에는 점(".") 또는 달러("$") 기호를 포함할 수 없습니다. 그들은 잘릴 것입니다. 지원되는 값 유형: * 날짜 * NSNull * NS번호 * 문자열 * URL {#NAnalyServiOs-addEvent_S_A__ul_g41_kxy_spb} 주: , 속성 키 및 값의 eventName총 크기는 이벤트당 300바이트를 초과할 수 없습니다. 문자열은 UTF-8로 인코딩됩니다. 이 한도를 초과하는 이벤트는 무시됩니다. |
[표 2. 매개변수]

{#NAnalyServiOs-addEvent_S_A__table_hwl_5vy_spb} {#NAnalyServiOs-addEvent_S_A__table_iwl_5vy_spb__entry__2}

| 유형 | 설명 |
|-|-|
| 없음 |   |
[표 3. 반환]

{#NAnalyServiOs-addEvent_S_A__table_iwl_5vy_spb}  
다음 예는 속성을 사용하여 "로그인 성공" 이벤트와 "케이스 열기" 이벤트를 추가하는 방법을 보여줍니다.

    // 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) {#ariaid-title3}

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

| 이름 | 유형 | 설명 |
|-|-|-|
| 명명된 actionName | 문자열 | <kbd class="ph userinput">MyButtonClick</kbd>과 같이 화면에 추가할 작업의 이름입니다. 최대 길이: 256 UTF-8바이트 |
[표 4. 매개변수]

{#NAnalyServiOS-addScreenAction_S__table_lxc_hzy_spb} {#NAnalyServiOS-addScreenAction_S__table_mxc_hzy_spb__entry__2}

| 유형 | 설명 |
|-|-|
| 안 함 |   |
[표 5. 반환]

{#NAnalyServiOS-addScreenAction_S__table_mxc_hzy_spb}  
<br />

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

## NowAnalyticsService - appendToUserProperty(named propertyName: String, listItem: String) {#ariaid-title4}

지정된 항목을 지정된 사용자 속성 목록에 추가합니다 .
{#NAnalyServiOS-appendToUserProp_S_S__table_uhf_jd1_tpb__entry__3}

| 이름 | 유형 | 설명 |
|-|-|-|
| 명명된 propertyName | 문자열 | 에 추가할 사용자 속성 목록의 이름입니다.listItem |
| 목록 항목 | 문자열 | 속성에 추가할 목록 항목입니다. |
[표 6. 매개변수]

{#NAnalyServiOS-appendToUserProp_S_S__table_uhf_jd1_tpb} {#NAnalyServiOS-appendToUserProp_S_S__table_vhf_jd1_tpb__entry__2}

| 유형 | 설명 |
|-|-|
| 안 함 |   |
[표 7. 반환]

{#NAnalyServiOS-appendToUserProp_S_S__table_vhf_jd1_tpb}  
<br />

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

## NowAnalyticsService - deleteCurrentUserData(completion: @escaping ((_ success: Bool) -\> Void)) {#ariaid-title5}

현재 사용자와 연결된 모든 분석 데이터를 삭제합니다. 또한 이 방법은 현재 활성 사용자의 설정을 해제하고 이 장치를 향후 추적에서 옵트아웃합니다.
현재 사용자를 설정하려면 [setUserId()](https://servicenow-prod.fluidtopics.net/2ZoiWsEOX6sCy8OfReUpaw#NAnalyServiOS-setUserId_S "현재 사용자에 대한 애플리케이션의 사용자 ID를 설정합니다. 현재 사용자를 로그아웃하려면 nil을 전달합니다.") 메서드를 사용합니다.
{#NAnalyServiOS-deleteCurrentUserData_O__table_akt_yry_spb__entry__3}{#NAnalyServiOS-deleteCurrentUserData_O__mobilesdkiOS-completion_data_dataerror-row}

| 이름 | 유형 | 설명 |
|-|-|-|
| 완료 | @escaping ((_ 성공: 부울) -\> 무효) | 분석 데이터가 삭제된 후 실행할 완성 핸들러입니다. 완성 핸들러에 대한 반환 값: * 성공: 부울 값 true를 반환합니다. * 실패: 무효 - 연결이 없을 때처럼 서버에 연결할 수 없는 경우 사용량 인사이트 오류가 발생할 수 있습니다. 실패하면 메서드를 다시 시도합니다. {#NAnalyServiOS-deleteCurrentUserData_O__ul_uzx_thj_ppb} |
[표 8. 매개변수]

{#NAnalyServiOS-deleteCurrentUserData_O__table_akt_yry_spb} {#NAnalyServiOS-deleteCurrentUserData_O__table_bkt_yry_spb__entry__2}

| 유형 | 설명 |
|-|-|
| 안 함 |   |
[표 9. 반환]

{#NAnalyServiOS-deleteCurrentUserData_O__table_bkt_yry_spb}  
<br />

    // 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) {#ariaid-title6}

지정된 값에 따라 지정된 숫자 속성의 값을 높이거나 낮춥니다.
{#NAnalyServiOS-incUserProperty_S_I__table_fkc_chz_spb__entry__3}

| 이름 | 유형 | 설명 |
|-|-|-|
| 명명된 propertyName | 문자열 | 증가할 사용자 속성의 이름입니다. |
| 값별 | 정수 | 속성을 증가시킬 값입니다. 음수 값을 입력하여 값을 감소시킵니다. |
[표 10. 매개변수]

{#NAnalyServiOS-incUserProperty_S_I__table_fkc_chz_spb} {#NAnalyServiOS-incUserProperty_S_I__table_gkc_chz_spb__entry__2}

| 유형 | 설명 |
|-|-|
| 안 함 |   |
[표 11. 반환]

{#NAnalyServiOS-incUserProperty_S_I__table_gkc_chz_spb}  
<br />

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

## NowAnalyticsService - installJavascriptInterface(webView로: WKWebView) {#ariaid-title7}

JavaScript를 사용하여 WebView 내에서 SNAnalytics() API의 메서드 호출을 사용하도록 설정합니다.
이 메서드는 JavaScript에서 사용할 수 있는 [SNMobileAnalytics](https://servicenow-prod.fluidtopics.net/DQs4ykCXg9ENLK9IVSeSFw#SNMobileAnalytics "SNMobileAnalytics API는 JavaScript를 사용하여 WebView 내에서 호출할 수 있는 메서드를 제공합니다. 이러한 방법을 사용하면 사용자 지정 분석 데이터(이벤트, 페이지 및 사용자 속성)를 서비스 포털용 사용량 인사이트 대시보드로 푸시할 수 있습니다.") 개체를 반환하며, 이는 네이티브 메서드를 노출합니다.
{#NAnalyServiOS-installJSInterface_O__table_pqj_dh1_tpb__entry__3}

| 이름 | 유형 | 설명 |
|-|-|-|
| 웹뷰 | WKWeb뷰 | JavaScript 인터페이스를 삽입할 웹 뷰 객체입니다. |
[표 12. 매개변수]

{#NAnalyServiOS-installJSInterface_O__table_pqj_dh1_tpb} {#NAnalyServiOS-installJSInterface_O__table_qqj_dh1_tpb__entry__2}

| 유형 | 설명 |
|-|-|
| 객체 | [SNMobileAnalytics](https://servicenow-prod.fluidtopics.net/DQs4ykCXg9ENLK9IVSeSFw#SNMobileAnalytics "SNMobileAnalytics API는 JavaScript를 사용하여 WebView 내에서 호출할 수 있는 메서드를 제공합니다. 이러한 방법을 사용하면 사용자 지정 분석 데이터(이벤트, 페이지 및 사용자 속성)를 서비스 포털용 사용량 인사이트 대시보드로 푸시할 수 있습니다.") |
[표 13. 반환]

{#NAnalyServiOS-installJSInterface_O__table_qqj_dh1_tpb}  
<br />

    // 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) {#ariaid-title8}

현재 사용자에 대해 지정된 속성을 삭제합니다.
현재 사용자를 설정하려면 [setUserId()](https://servicenow-prod.fluidtopics.net/2ZoiWsEOX6sCy8OfReUpaw#NAnalyServiOS-setUserId_S "현재 사용자에 대한 애플리케이션의 사용자 ID를 설정합니다. 현재 사용자를 로그아웃하려면 nil을 전달합니다.") 메서드를 사용합니다.
{#NAnalyServiOS-removeUserProp_S__table_jdm_lf1_tpb__entry__3}

| 이름 | 유형 | 설명 |
|-|-|-|
| 명명된 propertyName | 문자열 | 삭제할 사용자 속성의 이름입니다. |
[표 14. 매개변수]

{#NAnalyServiOS-removeUserProp_S__table_jdm_lf1_tpb} {#NAnalyServiOS-removeUserProp_S__table_kdm_lf1_tpb__entry__2}

| 유형 | 설명 |
|-|-|
| 안 함 |   |
[표 15. 반환]

{#NAnalyServiOS-removeUserProp_S__table_kdm_lf1_tpb}  
<br />

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

## NowAnalyticsService - setDelegate(_ delegate: NowAnalyticsServiceDelegate?) {#ariaid-title9}

알림을 수신할 위임자에 대한 약한 참조를 설정합니다.
{#NAnalyServiOS-setDelegate_O__table_d42_j31_tpb__entry__3}

| 이름 | 유형 | 설명 |
|-|-|-|
| 위임 | [NowAnalyticsServiceDelegate](https://servicenow-prod.fluidtopics.net/bS~zKL8jnid8wQvMMbkI3w#NowAnalyticsServiceDeliOSProtocol "NowAnalyticsServiceDelegate 프로토콜은 사용자 세션의 시작 및 종료 및 화면 변경 탐지에 대한 정보를 제공하는 콜백 함수를 제공합니다.") | 옵션입니다. 대리자 클래스에 대한 참조를 포함하는 객체입니다. // Register delegate private var analyticsDelegate = NowAnalyticsDelegate()  // Keep ref of delegate NowAnalytics.sharedAnalyticsService.setDelegate(analyticsDelegate) |
[표 16. 매개변수]

{#NAnalyServiOS-setDelegate_O__table_d42_j31_tpb} {#NAnalyServiOS-setDelegate_O__table_e42_j31_tpb__entry__2}

| 유형 | 설명 |
|-|-|
| 없음 |   |
[표 17. 반환]

{#NAnalyServiOS-setDelegate_O__table_e42_j31_tpb}  
이 예시에서는 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?) {#ariaid-title10}

현재 사용자에 대한 애플리케이션의 사용자 ID를 설정합니다. 현재 사용자를 로그아웃하려면 nil을 전달합니다.
{#NAnalyServiOS-setUserId_S__table_r2r_x1z_spb__entry__3}

| 이름 | 유형 | 설명 |
|-|-|-|
| userID | 문자열 | 옵션입니다. 애플리케이션별 사용자 식별자입니다. 현재 사용자를 로그아웃하려면 `nil`을 전달합니다. 사용자 ID에는 HTML 태그나 이름, 이메일 또는 전화 번호와 같은 개인 데이터가 포함될 수 없습니다. 최대 길이: 256 UTF-8바이트 |
[표 18. 매개변수]

{#NAnalyServiOS-setUserId_S__table_r2r_x1z_spb} {#NAnalyServiOS-setUserId_S__table_s2r_x1z_spb__entry__2}

| 유형 | 설명 |
|-|-|
| 안 함 |   |
[표 19. 반환]

{#NAnalyServiOS-setUserId_S__table_s2r_x1z_spb}  
<br />

    // 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\]) {#ariaid-title11}

현재 사용자에 대해 지정된 값으로 여러 속성을 설정합니다. 속성은 대시보드에서 사용자에 대해 추적하려는 모든 것이 될 수 있습니다.
이 함수를 호출하기 전에 [setUserId()](https://servicenow-prod.fluidtopics.net/2ZoiWsEOX6sCy8OfReUpaw#NAnalyServiOS-setUserId_S "현재 사용자에 대한 애플리케이션의 사용자 ID를 설정합니다. 현재 사용자를 로그아웃하려면 nil을 전달합니다.") 함수를 호출해야 합니다.
{#NAnalyServiOS-setUserProperties_A__table_o5w_vfz_spb__entry__3}

| 이름 | 유형 | 설명 |
|-|-|-|
| 사용자 속성 | 배열 | 설정할 사용자 속성의 키-값 쌍입니다. 지원되는 값 유형: * NS번호 * 문자열 * 날짜 * URL * NSNull 키에는 점(".") 또는 달러("$") 기호를 포함할 수 없습니다. 최대 길이: * 키: 256자 * 값: 1,000자 {#NAnalyServiOS-setUserProperties_A__ul_vqr_1rc_zpb} |
[표 20. 매개변수]

{#NAnalyServiOS-setUserProperties_A__table_o5w_vfz_spb} {#NAnalyServiOS-setUserProperties_A__table_p5w_vfz_spb__entry__2}

| 유형 | 설명 |
|-|-|
| 안 함 |   |
[표 21. 반환]

{#NAnalyServiOS-setUserProperties_A__table_p5w_vfz_spb}  
<br />

    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?) {#ariaid-title12}

현재 사용자에 대해 지정된 값으로 지정된 속성을 설정합니다. 애플리케이션에 적합한 모든 속성을 정의할 수 있습니다.
이 함수를 호출하기 전에 [setUserId()](https://servicenow-prod.fluidtopics.net/2ZoiWsEOX6sCy8OfReUpaw#NAnalyServiOS-setUserId_S "현재 사용자에 대한 애플리케이션의 사용자 ID를 설정합니다. 현재 사용자를 로그아웃하려면 nil을 전달합니다.") 함수를 호출해야 합니다.
{#NAnalyServiOS-setUserProperty_S_A__table_idn_sdz_spb__entry__3}

| 이름 | 유형 | 설명 |
|-|-|-|
| 명명된 propertyName | 문자열 | 설정할 사용자 속성의 이름입니다. 점(".") 또는 달러("$") 기호를 포함할 수 없습니다. 최대 길이: 256자 |
| 값 포함 | 모두 | 사용자 속성을 설정할 값입니다. 지원되는 값 유형: * 날짜 * NSNull * NS번호 * 문자열 * URL 최대 길이: 1,000자 |
[표 22. 매개변수]

{#NAnalyServiOS-setUserProperty_S_A__table_idn_sdz_spb} {#NAnalyServiOS-setUserProperty_S_A__table_jdn_sdz_spb__entry__2}

| 유형 | 설명 |
|-|-|
| 안 함 |   |
[표 23. 반환]

{#NAnalyServiOS-setUserProperty_S_A__table_jdn_sdz_spb}  
<br />

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

## NowAnalyticsService - startScreen(named screenName: String) {#ariaid-title13}

연결된 화면이 UI에 처음 나타난 시간을 기록합니다.
viewDidAppear(_:) 메서드 이후에 이 메서드를 호출합니다.
{#NAnalyServiOS-startScreen_S__table_vw5_fyy_spb__entry__3}

| 이름 | 유형 | 설명 |
|-|-|-|
| 명명된 screenName | 문자열 | 시작 시간을 기록할 화면의 이름입니다(예: <kbd class="ph userinput">WelcomeScreen </kbd>). 화면으로 정의하고 분석 대시보드에 표시/집계하려는 모든 것이 될 수 있습니다. 최대 길이: 256 UTF-8바이트 |
[표 24. 매개변수]

{#NAnalyServiOS-startScreen_S__table_vw5_fyy_spb} {#NAnalyServiOS-startScreen_S__table_ww5_fyy_spb__entry__2}

| 유형 | 설명 |
|-|-|
| 안 함 |   |
[표 25. 반환]

{#NAnalyServiOS-startScreen_S__table_ww5_fyy_spb}  
<br />

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


