NowAnalyticsService プロトコル:iOS
NowAnalyticsService プロトコルは、ユーザー分析データの収集を管理するための分析プロパティ、ユーザー設定、およびイベントを構成できる機能を提供します。
このプロトコルに準拠するオブジェクトが sharedAnalyticsService によって返されます。アプリケーションでこれを使用して API 呼び出しを実行します。
| 名前 | タイプ | 説明 |
|---|---|---|
| trackingConsent | ブール | ユーザーが関連付けられたデバイスの分析の追跡に同意したかどうかを示すフラグ。デフォルトでは、デバイスはオプトアウトされています。この値を明示的に false に設定すると、進行中のセッションがすぐに終了し、ローカルに記録されたデータが削除されます。有効な値:
|
NowAnalyticsService - addEvent(名前付き eventName: 文字列, with 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: 文字列)
現在の画面にカスタムアクションを追加します。これらのアクションは、セッションデータの一部としてユーザーダッシュボードに表示され、アプリケーションの画面変更を示します。
| 名前 | タイプ | 説明 |
|---|---|---|
| 名前付きアクション名 | 文字列 | 画面に追加するアクションの名前 ( MyButtonClick など)。 最大長:256 UTF-8 バイト |
| タイプ | 説明 |
|---|---|
| なし |
// Add event
NowAnalytics.sharedAnalyticsService.addEvent(named: "Successful Login")
NowAnalyticsService - appendToUserProperty(named propertyName: 文字列, listItem: 文字列)
指定されたアイテムを指定されたユーザープロパティリストに追加します。
| 名前 | タイプ | 説明 |
|---|---|---|
| 名前付きプロパティ名 | 文字列 | 追加する 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 ((_ success: Bool) -> Void) | 分析データが削除された後に実行する完了ハンドラー。 完了ハンドラーの値を返します。
|
| タイプ | 説明 |
|---|---|
| なし |
// Delete user data
NowAnalytics.sharedAnalyticsService.deleteCurrentUserData(completion: { (success) -> Void in
if success {
// deletion succeeded
} else {
// deletion failed
}
})
NowAnalyticsService - incUserProperty(名前付き propertyName: 文字列, 値別: Int)
指定された数値プロパティの値を、指定された値だけ増減します。
| 名前 | タイプ | 説明 |
|---|---|---|
| 名前付きプロパティ名 | 文字列 | インクリメントするユーザープロパティの名前。 |
| 値別 | 整数 | プロパティをインクリメントする値。値をデクリメントするには、負の値を入力します。 |
| タイプ | 説明 |
|---|---|
| なし |
// Increment the "Cases Handled" count
NowAnalytics.sharedAnalyticsService.incUserProperty(named: "Cases Handled", by: 2)
NowAnalyticsService - installJavascriptInterface(into webView: WKWebView)
JavaScript を使用して WebView 内から SNAnalytics() API のメソッドを呼び出せるようにします。
このメソッドは、JavaScript で利用可能な SNMobileAnalytics オブジェクトを返します。これにより、ネイティブメソッドが公開されます。
| 名前 | タイプ | 説明 |
|---|---|---|
| Webview | WKWebView | JavaScript インターフェイスを挿入する Web ビューオブジェクト。 |
| タイプ | 説明 |
|---|---|
| オブジェクト | 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() メソッドを使用します。
| 名前 | タイプ | 説明 |
|---|---|---|
| 名前付きプロパティ名 | 文字列 | 削除するユーザープロパティの名前。 |
| タイプ | 説明 |
|---|---|
| なし |
// 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: [文字列: 任意])
現在のユーザーの指定された値を持つ複数のプロパティを設定します。プロパティは、ユーザーのダッシュボードで追跡するものであれば何でもかまいません。
この関数を呼び出す前に、 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() 関数を呼び出す必要があります。
| 名前 | タイプ | 説明 |
|---|---|---|
| 名前付きプロパティ名 | 文字列 | 設定するユーザープロパティの名前。ドット ('.') またはドル記号 ('$') を含めることはできません。 最大長:256 文字 |
| 値あり | 任意 | ユーザープロパティに設定する値。 サポートされる値のタイプ:
最大長:1,000 文字 |
| タイプ | 説明 |
|---|---|
| なし |
// Set the "Role" property of the user to "Admin"
NowAnalytics.sharedAnalyticsService.setUserProperty(named: "Role", with: "Admin")
NowAnalyticsService - startScreen(named 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")