Accurat 2.4.1

Accurat 2.4.1

AccuratMathias Van Houtte 维护。



Accurat 2.4.1

  • Accurat

Accurat iOS SDK

以下是可以将 Accurat SDK 集成到您的 iOS 应用说明。

内容

  • 需求
  • 兼容性
  • 配置项目
  • 将 SDK 添加到项目
  • 将 SDK 集成到应用
  • 提交到 App Store
  • 联系

需求

  • iOS 14.0+
  • Xcode 12.0+

从 1.x.x 升级到 2.x.x

当从 1.x.x 升级到 2.x.x 版本时,您需要将导入语句从 import Accurat 更改为 import AccuratSDK。其他一切应该和往常一样工作。

配置项目

在您的项目设置中,转到 能力 > 背景模式 并启用 后台获取

然后,将适当的位置使用描述添加到您的应用程序的 Info.plist 中。当请求用户位置权限时会显示这些字符串。

对于 Xcode 14

<key>NSLocationAlwaysUsageDescription</key>
<string>This makes it possible to send you notifications with relevant info, even when you are not using the app.</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>That way, we can personalize the content and ads in the app based on your preferences.</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>This makes it possible to send you notifications with relevant info, even when you are not using the app.</string>

为了支持多种语言,为每个要支持的语言,在 <language>.lproj 目录中创建一个 InfoPlist.strings 文件。

示例语言

  • en.lproj
NSLocationAlwaysUsageDescription = "This makes it possible to send you notifications with relevant info, even when you are not using the app.";
NSLocationWhenInUseUsageDescription = "That way, we can personalize the content and ads in the app based on your preferences.";
NSLocationAlwaysAndWhenInUseUsageDescription = "This makes it possible to send you notifications with relevant info, even when you are not using the app.";
  • nl.lproj
NSLocationAlwaysUsageDescription = "Zo is het mogelijk om u notificaties te versturen met gepersonaliseerde inhoud, ook wanneer u de app niet gebruikt.";
NSLocationWhenInUseUsageDescription = "Zo kunnen we in de app de inhoud en advertenties personaliseren op maat van jouw voorkeuren.";
NSLocationAlwaysAndWhenInUseUsageDescription = "Zo is het mogelijk om u notificaties te versturen met gepersonaliseerde inhoud, ook wanneer u de app niet gebruikt.";
  • fr.lproj
NSLocationAlwaysUsageDescription = "Il est donc possible de vous envoyer des notifications avec un contenu personnalisé, même lorsque vous n'utilisez pas l'application.";
NSLocationWhenInUseUsageDescription = "Comme ça, nous pouvons personnaliser le contenu et les publicités dans l'app en fonction de vos préférences.";
NSLocationAlwaysAndWhenInUseUsageDescription = "Il est donc possible de vous envoyer des notifications avec un contenu personnalisé, même lorsque vous n'utilisez pas l'application.";

手动将这些文件添加到项目包中。这可以通过在 Xcode 中右键单击项目名称并选择添加文件到 X 选项来实现,然后选择文件。

将 SDK 添加到项目中

CocoaPods

CocoaPods 是 Cocoa 项目的依赖管理器。您可以使用以下命令安装它

$ gem install cocoapods

要使用 CocoaPods 将 Accurat 集成到您的 Xcode 项目中,请在您的 Podfile 中指定它

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!

target '<Your Target Name>' do
    pod 'Accurat', :git => 'https://github.com/accuratai/pod-ios'
end

然后,运行以下命令

$ pod install

Swift 包管理器

使用 Swift 包管理器集成 Accurat 到您的 Xcode 项目中,请按照以下步骤在 Xcode 中操作:

  • 转到 文件 > Swift Packages > 添加包依赖
  • 选择正确的项目
  • 输入以下 URL https://github.com/accuratai/pod-ios
  • 选择 版本 并保持默认设置
  • 点击 下一步 并将该包添加到项目

将 SDK 集成到应用程序中

导入 SDK(必需)

import AccuratSDK

初始化 SDK(必需)

在调用任何其他 Accurat 方法之前,在您的 AppDelegate 类中初始化 SDK。

application(_:didFinishLaunchingWithOptions:) 中调用

let config = AccuratConfig(username: "ACCURAT_USERNAME", password: "ACCURAT_PASSWORD", features: [.gdpr, .location])
Accurat.shared.initialize(config: config)

其中 ACCURAT_USERNAMEACCURAT_PASSWORD 是包含您的 Accurat 用户名和密码的字符串。features 是一个可选参数,表示 SDK 要求的同意(请参阅同意流程部分)。

在后台获取位置(必须)

在您的 AppDelegate 中实现以下方法

func application(_ application: UIApplication, performFetchWithCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
     Accurat.shared.performBackgroundFetchWithCompletionHandler(completionHandler)
}

开始跟踪(必须)

调用 startTracking 方法以开始跟踪。如果已配置,这将也会触发同意流程(见“同意流程”部分)。

Accurat.shared.startTracking()

您还可以传递一个闭包以在 SDK 完成同意流程时收到事件(闭包是可选的)

Accurat.shared.startTracking(_ onComplete: (() -> Void)?)

必须在每个应用程序启动时调用 startTracking 方法。

建议在 AppDelegate 中的 initialize 方法之后实现此方法。

同意流程(必须)

在 SDK 开始跟踪用户坐标之前,用户必须给出两个同意:

  1. GDPR 同意,这是一个法律上的同意,是处理个人数据的必要条件。
  2. 位置同意,这是一种技术上的同意,是收集用户位置数据的必要条件。

可以由 SDK(推荐)或应用程序开发者本身实现请求同意的过程。

由 SDK 实现

当在初始化阶段提供
.gdpr
.location功能时,调用
startTracking-方法时将自动启动询问这些同意的流程。同意流程如图所示:consentflow

首先,通过弹窗屏幕要求用户给予GDPR同意。其次,如果用户同意GDPR同意,会显示弹窗对话框询问其获取位置权限。如果用户给予了GDPR同意和位置权限,则启动跟踪。

增加了一些功能以提高转换率(用户给予GDPR和位置同意)

  • 如果用户不同意,则至少延迟48小时再次请求同意,最多请求3次。
  • 在显示iOS请求应用内位置权限的弹窗(屏幕2b)之前,我们解释为什么用户应该给予其权限(屏幕2a)。
  • 向用户解释iOS将请求其始终位置权限(屏幕2d),并解释为什么用户应该给予此权限(屏幕2c)。

弹出屏幕中的文本和延迟次数(默认为3)可以通过我们的后端进行更改。

可以通过在您的
AppDelegate中添加此代码来实现整个流程

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    let config = AccuratConfig(username: "ACCURAT_USERNAME", password: "ACCURAT_PASSWORD", features: [.gdpr, .location])
    Accurat.shared.initialize(config: config)
    // start tracking (which will also starts the consent flow)
    Accurat.shared.startTracking {
        //consent flow is finished, eg. ask permission to send push notifications
    }
}
由应用开发者实现

同意也可以由应用开发者通过应用程序现有的流程进行请求。请注意,仅当SDK收到批准的gdpr和位置同意时,跟踪才能正常工作。

可以通过调用
updateConsent()-方法,并提供同意类型和同意状态来更新GDPR同意状态

Accurat.shared.updateConsent(.gdpr, state: 0/1)

如果您想获取GDPR同意的状态,请调用
getConsentState()-方法

Accurat.shared.getConsentState(.gdpr)

不需要将位置权限传递给SDK,因为SDK通过设备的设置在应用内检索用户的位置权限。

最后调用
startTracking()以开始跟踪。请注意,即使在没有更改同意状态时,也必须在每次应用启动时调用
startTracking()

可以通过在您的
AppDelegate中添加此代码来实现整个流程

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    let config = AccuratConfig(username: "ACCURAT_USERNAME", password: "ACCURAT_PASSWORD", features: [])
    Accurat.shared.initialize(config: config)
    if (userOpensTheAppForTheFirstTime()) {
        // Own GDPR consent handling
        let gdprState = askOwnGdprConsent();
        Accurat.shared.updateConsent(.gdpr, gdprState)

        // Own location permission handling
        askOwnLocationPermission();
    }
    // start tracking
    Accurat.shared.startTracking()
}

同意流程也可以部分由SDK实现,部分由应用开发者实现。例如,通过仅将
.location传递到配置中,GDPR同意必须由应用开发者处理,但位置权限将由SDK处理。

停止跟踪(可选)

要停止定位跟踪,请调用 stopTracking 方法

Accurat.shared.stopTracking()

启用调试日志?(可选)

如果想要启用调试日志,可以通过初始化函数或配置文件传入true布尔值

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    Accurat.shared.initialize(username: "ACCURAT_USERNAME", password: "ACCURAT_PASSWORD", enableDebugLogs: true)
}
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    let config = AccuratConfig(username: "ACCURAT_USERNAME", password: "ACCURAT_PASSWORD", features: [.gdpr, .location], enableDebugLogs: true)
    Accurat.shared.initialize(config: config)

}

跟踪是否启用?(可选)

如果想知道跟踪是否启用,请调用 isTrackingEnabled 变量

Accurat.shared.isTrackingEnabled

接收位置更新(可选)

当SDK接收到新的位置时,将接收到回调。数组中将至少包含一个表示当前位置的位置对象

Accurat.shared.onLocationUpdate(callback: ([CLLocation]) -> Void)

通知(可选)

如果您要接收本地通知以及需要订阅的相关额外数据,请在您的AppDelegate中订阅它。

func application(_ application: UIApplication, didReceive notification: UILocalNotification)

notification.userInfo将包含与该通知相关的额外数据。

设置语言(可选)

如果您要更改用户的语言,可以更新语言设置。此语言将用于同意弹出窗口和地理围栏通知等。如果没有指定语言,则使用设备语言或英文(如果设备语言不受支持)。

Accurat.shared.setLanguage(.en/.nl/.fr)

交互(可选)

根据给定的品牌、活动和触点为消费者添加交互。如果不存在活动和/或触点,则将创建它们。

Accurat.shared.interact(_ group: String, campaign: String, touchpoint: String, campaignStart: Date?, campaignEnd: Date?, campaignId: String?, onComplete: ((isSuccess) -> Void)?)

获取分段(可选)

获取当前消费者所属的分段。如果消费者不存在,则返回空列表。

Accurat.shared.getSegments(onComplete: @escaping (Array<String>) -> Void)

调用权利(可选)

这可以用来通知我们用户是否调用了数据主体的GDPR权利。

Accurat.shared.invokeRight(right: String, info: String?, completion: ((Result<Void, Error>) -> Void)?)

获取元数据(可选)

检索消费者的元数据。如果消费者不存在或未允许跟踪,将返回空列表。

Accurat.shared.getMeta(completion: ([String: String]) -> Void)
Accurat.shared.startTracking {
    Accurat.shared.getMeta { metaResult in

    }
}

设置元数据(可选)

添加或更新消费者的元数据。如果消费者不存在或未允许跟踪,则元数据将不会保留更改。注意:应在调用 startTracking 后调用

Accurat.shared.setMeta(key: String, value: String?, completion: ((Result<Void, Error>) -> Void)?)

示例

Accurat.shared.startTracking {
    Accurat.shared.setMeta(key: String, value: String?) { result in

    }
}

提交至应用商店

苹果要求你证明你对后台位置的用途。在应用商店描述的底部添加以下类似内容:本应用使用后台位置来个性化用户体验。持续使用后台位置可能会降低电池寿命。

联系我们

您有任何问题吗?请通过电子邮件发送至 [email protected]