安装和自定义
App-Notice SDK for iOS版本:2.5.3
2019年3月21日
特性
- 默认同意跟踪
- 显式同意跟踪
- 文本自定义和本地化
- 用户跟踪切换
- 按区域遵守 GDPR
- 通过手动设置器遵守 GDPR
- 启用 GDPR 数据访问请求
- 离线支持
示例
此仓库包含两个示例项目,演示如何使用 SDK。名为 'Triangle' 的项目是用 Swift 编写的,而名为 Triangle-Objc 的项目是用 Objective-C 编写的。这些文件位于 Example 文件夹中。
要运行 Triangle 项目,请克隆该仓库,然后从 Example/Triangle 目录中运行 pod install
。如果之前已安装,请运行 pod update App-Notice
。
作者
授权
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];
}
显式同意
显式同意必须由用户接受或拒绝。如果同意被接受,则您的应用程序可以像往常一样继续执行。但是,如果被拒绝,则有几种情况您需要处理
- 如果您的应用程序无法在没有披露的追踪器的情况下运行,应阻止客户使用应用程序。他们的唯一选择是修改他们的首选项或卸载(类似于接受服务条款或不同意)。
- 如果您的应用程序在无需依赖任何第三方追踪器的情况下功能齐全,则可以简单地禁用所有可选追踪器,并允许用户继续使用应用程序。
- 如果您的应用程序允许用户以有限功能继续使用应用程序,则应通知用户有关限制的内容。您可能说:“为了享受本应用程序的全部功能,您必须接受应用程序设置中的隐私首选项。此应用程序现在将以有限功能继续运行。”
- 如果需要,通知用户,您的应用程序在新的更改后的追踪器设置生效之前需要重启。(某些追踪器可能需要重启应用程序才能完全启用/禁用。)
- 用户有权在任何时候撤回对个别追踪器的同意,即使在已经给予同意之后。为此,应从应用程序内访问SDK的管理首选项视图。(这通常可能在某种应用程序设置或首选项视图中实现。)
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中显示的任何字符串
- 为所需语言将本地化文件添加到你的项目中(如果尚不存在)。
- 找到您要自定义的字符串的键。您可以在SDK的
AppNotice.bundle
中的Localizable.strings文件中找到它。 - 将键复制到你要自定义语言的自己的应用程序中的Localizable.strings文件中。
- 设置新添加的字符串值(而不是键)为你要显示的文本。
例如,要自定义英语中的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,如上所示。