NowAnalyticsService プロトコル:iOS

  • リリースバージョン: Washingtondc
  • 更新日 2024年02月01日
  • 読む14読むのに数分
  • NowAnalyticsService プロトコルは、ユーザー分析データの収集を管理するための分析プロパティ、ユーザー設定、およびイベントを構成できる機能を提供します。

    このプロトコルに準拠するオブジェクトが sharedAnalyticsService によって返されます。アプリケーションでこれを使用して API 呼び出しを実行します。

    表 : 1. 要件
    名前 タイプ 説明
    trackingConsent ブール ユーザーが関連付けられたデバイスの分析の追跡に同意したかどうかを示すフラグ。デフォルトでは、デバイスはオプトアウトされています。この値を明示的に false に設定すると、進行中のセッションがすぐに終了し、ローカルに記録されたデータが削除されます。
    有効な値:
    • true:ユーザーはこのデバイスで分析データが追跡されることに同意しました。
    • false:ユーザーはデータ追跡を拒否しました。

    NowAnalyticsService - addEvent(名前付き eventName: 文字列, with properties: [文字列: 任意]?)

    ユーザーが特定のレベルまたは画面に到達するなどのアプリケーションイベントを追加し、イベントのカスタムプロパティの設定を有効にします。これらのイベントは、発生した順にダッシュボードに表示されます。

    これらのイベントは分析ダッシュボードに表示されます。

    表 : 2. パラメーター
    名前 タイプ 説明
    名前付きイベント名 文字列 追加するイベントの名前。
    プロパティ付き アレイ オプション。イベントのカスタムプロパティのキー/値ペアです。プロパティ キーには、ドット ('.') またはドル記号 ('$') を含めることはできません。それらはトリミングされます。
    サポートされる値のタイプ:
    • 日付
    • 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(named actionName: 文字列)

    現在の画面にカスタムアクションを追加します。これらのアクションは、セッションデータの一部としてユーザーダッシュボードに表示され、アプリケーションの画面変更を示します。

    表 : 4. パラメーター
    名前 タイプ 説明
    名前付きアクション名 文字列 画面に追加するアクションの名前 ( MyButtonClick など)。

    最大長:256 UTF-8 バイト

    表 : 5. 返される内容
    タイプ 説明
    なし

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

    NowAnalyticsService - appendToUserProperty(named propertyName: 文字列, listItem: 文字列)

    指定されたアイテムを指定されたユーザープロパティリストに追加します。

    表 : 6. パラメーター
    名前 タイプ 説明
    名前付きプロパティ名 文字列 追加する listItem ユーザープロパティリストの名前。
    Listitem 文字列 プロパティに追加するリストアイテム。
    表 : 7. 返される内容
    タイプ 説明
    なし

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

    NowAnalyticsService - deleteCurrentUserData(completion: @escaping ((_ success: Bool) -> Void))

    現在のユーザーに関連付けられているすべての分析データを削除します。このメソッドはまた、現在のアクティブなユーザーの設定を解除し、今後の追跡からこのデバイスをオプトアウトします。

    現在のユーザーを設定するには、 setUserId() メソッドを使用します。

    表 : 8. パラメーター
    名前 タイプ 説明
    完了 @escaping ((_ success: Bool) -> Void) 分析データが削除された後に実行する完了ハンドラー。
    完了ハンドラーの値を返します。
    • 成功:ブール値 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. パラメーター
    名前 タイプ 説明
    名前付きプロパティ名 文字列 インクリメントするユーザープロパティの名前。
    値別 整数 プロパティをインクリメントする値。値をデクリメントするには、負の値を入力します。
    表 : 11. 返される内容
    タイプ 説明
    なし

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

    NowAnalyticsService - installJavascriptInterface(into webView: WKWebView)

    JavaScript を使用して WebView 内から SNAnalytics() API のメソッドを呼び出せるようにします。

    このメソッドは、JavaScript で利用可能な SNMobileAnalytics オブジェクトを返します。これにより、ネイティブメソッドが公開されます。

    表 : 12. パラメーター
    名前 タイプ 説明
    Webview WKWebView JavaScript インターフェイスを挿入する Web ビューオブジェクト。
    表 : 13. 返される内容
    タイプ 説明
    オブジェクト 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(named propertyName: 文字列)

    現在のユーザーの指定されたプロパティを削除します。

    現在のユーザーを設定するには、 setUserId() メソッドを使用します。

    表 : 14. パラメーター
    名前 タイプ 説明
    名前付きプロパティ名 文字列 削除するユーザープロパティの名前。
    表 : 15. 返される内容
    タイプ 説明
    なし

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

    NowAnalyticsService - setDelegate(_ delegate: 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: [文字列: 任意])

    現在のユーザーの指定された値を持つ複数のプロパティを設定します。プロパティは、ユーザーのダッシュボードで追跡するものであれば何でもかまいません。

    この関数を呼び出す前に、 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(named propertyName: String, with value: Any?)

    指定されたプロパティを現在のユーザーの指定された値で設定します。アプリケーションに適した任意のプロパティを定義できます。

    この関数を呼び出す前に、 setUserId() 関数を呼び出す必要があります。

    表 : 22. パラメーター
    名前 タイプ 説明
    名前付きプロパティ名 文字列 設定するユーザープロパティの名前。ドット ('.') またはドル記号 ('$') を含めることはできません。

    最大長: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(named screenName: 文字列)

    関連する画面が最初に 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")