版本:2.2.1 2017年5月
该仓库包含两个示例项目,用于说明如何使用该 SDK。 'Triangle' 项目用 Swift 编写,而 'Triangle-Objc' 用 Objective-C 编写。这些项目位于 Example 文件夹中。
要运行 Triangle 项目,请克隆该仓库,然后在 Example/Triangle 目录中运行 pod install
。
Evidon
AppNotice 在 MIT 许可证下可用。有关更多详细信息,请参阅 LICENSE 文件。
您可以通过 CocoaPods 获取 AppNotice。要安装
将以下行添加到您的 Podfile 中,然后运行 'pod install' 并打开您的 xcworkspace 文件。
pod 'AppNotice'
如果您在与 Objective-C 项目一起使用 SDK,只需将以下行添加到任何使用该框架的文件中即可。如果您有一个 Swift 项目,您需要将此行添加到您的桥接头部文件中。有关如何操作的说明,请参阅下面的创建 Swift 项目的桥接头部。
#import <AppNoticeSDKFramework/AppNoticeSDKFramework.h>
如果您的项目是用 Swift 编写的,并且您还没有桥接头部文件,则最快的方法是将一个新的 Objective-C 文件添加到您的项目中。Xcode 会让您选择是否要配置 Objective-C 桥接头部。选择“创建桥接头部”,然后您就可以删除刚刚创建的额外 Objective-C 文件了。
您必须激活 SDK,才能使用 SDK 功能。您可以使用您的激活令牌进行激活。
请注意,SDK 跟踪器列表只会下载一次,并存储在每个激活令牌的设备上。这意味着如果您在应用发布后更改跟踪器列表,您需要创建一个新的 App 通知并使用不同的激活令牌。然后您需要更新 SDK 并重新发布您的应用,这些更改才会显示。
AppNoticeSDK.sharedInstance().activateWithToken("bff0f04910354fb8a042650840056c9d")
[[AppNoticeSDK sharedInstance] activateWithToken:@"bff0f04910354fb8a042650840056c9d"];
有两种类型的同意:隐含同意和明确同意。隐含同意是推荐选项(且更简单),但您可以依据调用的 SDK 方法 showConsentFlow 选择任何一个。为了完全符合隐私法规,您应在您的应用启动后尽早请求用户的同意。如果您使用的是明确同意,通知必须首先显示,并且在触发任何跟踪技术之前出现。
从主视图控制器中的 viewDidEnter 方法调用 showConsentFlow(或 showExplicitConsentFlow)方法。这样,SDK 就可以确定是否需要显示对话框。
隐含同意实际上是一个仅隐私披露的选项。它告知用户,通过继续使用该应用,他自动给予同意,但也允许开启或关闭单个跟踪器。因此,它不包括 接受 或 拒绝 选项,只有 继续。它还包括 repeatEvery30Days 参数,如果为真,则每隔 30 天重新显示同意对话框。如果为假,对话框将只显示一次。
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)
}
- (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];
}
明确同意必须由用户接受或拒绝。如果同意被接受,您的应用可以像往常一样进行。但是,如果同意被拒绝,您需要处理以下几种情况:
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)
}
- (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];
}
用户可以切换跟踪器开启或关闭。要显示跟踪首选项屏幕
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
}
}
[[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 支持多种语言(目前仅限英文,但法语、意大利语、荷兰语、德语、西班牙语和葡萄牙语将很快可用)。如果您的应用程序支持对 supported language 的本地化,AppNotice SDK 也会显示在该语言中。要本地化应用程序,您只需为要支持的语言在您的项目中创建一个本地化文件。有关如何向应用程序添加本地化的详细信息,请参阅 Apple 的文档。
要自定义 SDK 中显示的任何字符串
AppNotice.bundle
的 Localizable.strings 文件中找到它。例如,要自定义英文中的 ghostery_dialog_implicit_message
属性,请从 SDK AppNotice bundle 中的 en.lproj 复制键
将其粘贴到您项目中的 Localizable.strings 文件中,并输入所需文本作为值:
如果您想为其他语言应用同样的更改,只需更新相同 Localizable.strings 文件中的 ghostery_dialog_implicit_message
属性(英文为 en.lproj/Localizable.strings,德语为 de.lproj/Localizable.strings,西班牙语为 es.lproj/Localizable.strings 等)。
也许您想定制 AppNotice 视觉,以匹配应用程序的主题。如果您只需要将对默认浅色主题更改为深色主题,只需在 AppNoticeSDK 上设置 appTheme 属性。
AppNoticeSDK.sharedInstance().appTheme = AppNoticeThemeDark
[AppNoticeSDK sharedInstance].appTheme = AppNoticeThemeDark;
对于更详细的定制,以下 AppNoticeSDK UIColor 属性可用:
为了支持多个具有不同跟踪器集的应用版本,请为每个版本的应用使用唯一的App Notice配置。使用Ghostery控制面板(https://my.ghosteryenterprise.com)为每个具有不同跟踪器组合的应用版本创建一个App Notice配置。
创建App Notice后,确保当初始化SDK时使用正确的App Notice ID,如上。所展示。