App-Notice 2.5.3

App-Notice 2.5.3

维护者:Will BroadheadJake ODowdJeff Wheeler



App-Notice SDK for iOS
安装和自定义

版本:2.5.3
2019年3月21日

Version License Platform

特性

  • 默认同意跟踪
  • 显式同意跟踪
  • 文本自定义和本地化
  • 用户跟踪切换
  • 按区域遵守 GDPR
  • 通过手动设置器遵守 GDPR
  • 启用 GDPR 数据访问请求
  • 离线支持

示例

此仓库包含两个示例项目,演示如何使用 SDK。名为 'Triangle' 的项目是用 Swift 编写的,而名为 Triangle-Objc 的项目是用 Objective-C 编写的。这些文件位于 Example 文件夹中。

要运行 Triangle 项目,请克隆该仓库,然后从 Example/Triangle 目录中运行 pod install。如果之前已安装,请运行 pod update App-Notice

作者

Evidon

授权

App-Notice遵循MIT授权许可。更多详细信息,请参阅LICENSE文件。

先决条件

  • 支持iOS 8.0及以上版本
  • 支持Xcode 7.0及以上版本
  • 从Evidon Privacy控制面板获取有效的App Notice ID。有关详细信息,请联系您的Evidon客户成功经理。

安装

App-Notice通过CocoaPods提供。要安装

将以下行添加到Podfile中,然后运行'pod install'并打开您的xcworkspace文件。

pod 'App-Notice'

如果您正在使用Objective-C项目与SDK,只需将以下行添加到任何使用SDK的文件中导入框架。如果您有一个Swift项目,您需要将此行添加到bridging header文件中。(有关如何创建bridging header,请参阅下方的创建bridging header。)

#import <AppNoticeSDKFramework/AppNoticeSDKFramework.h>

为Swift项目创建bridging header

如果您的项目使用Swift并且您还没有bridging header文件,最简单的方法是将新的Objective-C文件添加到您的项目中。然后Xcode会询问是否要配置Objective-C briding header。选择“创建Bridging Header”,然后您可以根据需要删除刚刚创建的额外的Objective-C文件。

SDK Activation

在您可以使用SDK功能之前,必须激活SDK。您可以使用您的激活令牌来完成此操作。

请注意,SDK 跟踪器列表仅在每次激活令牌之后下载一次并存储在设备上。这意味着如果您在应用程序发布后更改跟踪器列表,您将需要创建一个新的 App Notice 并使用不同的激活令牌。之后,您需要更新 SDK 并重新发布应用程序,更改才能显示。

Swift

AppNoticeSDK.sharedInstance().activateWithToken("bff0f04910354fb8a042650840056c9d")

Objective-C

[[AppNoticeSDK sharedInstance] activateWithToken:@"bff0f04910354fb8a042650840056c9d"];

用法

请求同意

有两种同意类型:隐含明确。隐含是被推荐(且更简单)的选项,但您可以根据调用的 showConsentFlow SDK 方法选择任何一种。为了完全遵守隐私法规,您应该在应用程序推出后尽早请求用户的同意。如果您使用的是明确的,通知必须在触发任何跟踪技术之前显示。

从您的主视图控制器的 viewDidAppear 方法中调用 showConsentFlow(或 showExplicitConsentFlow)方法。这样,SDK 可以确定是否需要显示对话框。

隐含同意

默许同意本质上是一个仅披露选项。它通知用户,他通过继续使用应用程序自动表示同意,同时也允许用户打开或关闭个别追踪器。因此,它不包括“接受”或“拒绝”选项,只包括“继续”。它还包括repeatEvery30Days参数,如果为真,则会在30天后重新显示同意对话框。如果为假,则对话框将只针对每个通知ID出现一次。

Swift
override func viewDidAppear(animated: Bool) {
  showPrivacyConsentFlow()
    
  super.viewDidAppear(animated)
}

func showPrivacyConsentFlow() {
  AppNoticeSDK.sharedInstance().showConsentFlowWithOnClose({ (result, trackers) in
    // TODO: Handle what you want to do based on whether the user accepted or declined consent.
    // You should also allow or block specific trackers/ads based on the 'trackers' array contents.
  }, presentingViewController:self, repeatEvery30Days:false)
}
Objective-C
- (void)viewDidAppear:(BOOL)animated {
  // show the privacy consent flow (if needed)
  [self showPrivacyConsentFlow];
    
  [super viewDidAppear:animated];
}

- (void)showPrivacyConsentFlow {
  [[AppNoticeSDK sharedInstance] showConsentFlowWithOnClose:^(AppNoticeConsent result, NSDictionary *trackers) {
    // TODO: Handle what you want to do based on whether the user accepted or declined consent.
    // You should also allow or block specific trackers/ads based on the 'trackers' array contents.
  } presentingViewController:self repeatEvery30Days:NO];
}

显式同意

显式同意必须由用户接受或拒绝。如果同意被接受,则您的应用程序可以像往常一样继续执行。但是,如果被拒绝,则有几种情况您需要处理

Swift
override func viewDidAppear(animated: Bool) {
  showPrivacyConsentFlow()
    
  super.viewDidAppear(animated)
}

func showPrivacyConsentFlow() {
  AppNoticeSDK.sharedInstance().showExplicitConsentFlowWithOnClose({ (result, trackers) in
    // TODO: Handle what you want to do based on whether the user accepted or declined consent.
    // You should also allow or block specific trackers/ads based on the 'trackers' array contents.
    }, presentingViewController: self)
}
Objective-C
- (void)viewDidAppear:(BOOL)animated {
  // show the privacy consent flow (if needed)
  [self showPrivacyConsentFlow];
    
  [super viewDidAppear:animated];
}

- (void)showPrivacyConsentFlow {
  [[AppNoticeSDK sharedInstance] showExplicitConsentFlowWithOnClose:^(AppNoticeConsent result, NSDictionary *trackers) {
    // TODO: Handle what you want to do based on whether the user accepted or declined consent.
    // You should also allow or block specific trackers/ads based on the 'trackers' array contents.
  } presentingViewController:self];
}

跟踪偏好

用户可以开启或关闭跟踪器。要显示跟踪偏好屏幕

Swift
AppNoticeSDK.sharedInstance().showManagePreferences { () -> Void in
    // TODO: Handle what you want to do after the preferences screen is closed.
            
    // Get the newly updated tracker preferences
    if let updatedTrackers = AppNoticeSDK.sharedInstance().getTrackerPreferences() as? Dictionary<String, NSNumber> {
        // TODO: Do something with the updated trackers
    }
}
Objective-C
[[AppNoticeSDK sharedInstance]showManagePreferences:^{
// TODO: Handle what you want to do after the preferences screen is closed.

//Get the newly updated tracker preferences
NSDictionary *updatedTrackers = [[AppNoticeSDK sharedInstance] getTrackerPreferences];

}];

本地化与文本自定义

AppNotice SDK支持多种语言(目前只支持英语,但法语、意大利语、荷兰语、德语、西班牙语和葡萄牙语将很快可用)。如果你的应用程序支持受支持的语言,则AppNotice SDK也将显示在该语言中。要本地化应用程序,你只需在每个支持的语言中在你的项目中创建一个本地化文件即可。有关如何将本地化添加到应用程序的详细信息,请参阅Apple的文档

要自定义SDK中显示的任何字符串

  1. 为所需语言将本地化文件添加到你的项目中(如果尚不存在)。
  2. 找到您要自定义的字符串的键。您可以在SDK的AppNotice.bundle中的Localizable.strings文件中找到它。
  3. 将键复制到你要自定义语言的自己的应用程序中的Localizable.strings文件中。
  4. 设置新添加的字符串值(而不是键)为你要显示的文本。

例如,要自定义英语中的ghostery_dialog_implicit_message属性,请从此处显示的SDK AppNotice bundle中的en.lproj复制键。

将代码粘贴到您的项目中Localizable.strings文件中,并输入所需文本作为值:

如果您希望将相同的更改应用于其他语言,只需为相应的Localizable.strings文件(英语为en.lproj/Localizable.strings,德语为de.lproj/Localizable.strings,西班牙语为es.lproj/Localizable.strings等)更新相同的ghostery_dialog_implicit_message属性即可。

UI 定制化

或许您想定制AppNotice视图的外观和感觉来匹配您的应用程序的主题。如果您只需从默认的浅色主题更改为深色主题,只需在AppNoticeSDK上简单地设置appTheme属性即可

AppNoticeSDK.sharedInstance().appTheme = AppNoticeThemeDark
[AppNoticeSDK sharedInstance].appTheme = AppNoticeThemeDark;

对于更详细的定制,以下可用AppNoticeSDK UIColor属性

  • mainTextColor:SDK内部文本的颜色。
  • backgroundColor:所有视图的背景颜色。
  • acceptButtonColor:接受/继续按钮的着色/背景颜色。
  • acceptButtonTextColor:接受/继续按钮的文本颜色。
  • declineButtonColor:拒绝按钮的颜色。
  • navBarBackgroundColor:导航栏的背景颜色。
  • navBarTitleColor:导航栏中心标题文本的颜色。
  • tintColor:着色颜色应用于复选框、设置按钮以及导航栏中的返回/前进按钮。
  • disabledColor:禁用复选框状态的颜色(在基本标签页中使用)。
  • separatorColor:水平和垂直分隔符的颜色以及偏好设置表视图单元格的选中颜色。

支持多个应用程序版本

要支持具有不同跟踪器集合的多个应用程序版本,请在每个应用程序版本中使用独特的App Notice配置。使用Ghostery控制面板(https://my.ghosteryenterprise.com)为具有不同跟踪器组合的应用程序版本创建App Notice配置。

创建App Notice后,确保当您初始化SDK时使用正确的App Notice ID,如上所示