AppNotice 2.2.1

AppNotice 2.2.1

许可证 MIT
发布最后发布2017年6月

Joe SwindlerEvidon Mobile维护。



AppNotice 2.2.1

iOS 版 AppNotice SDK
安装和自定义

版本:2.2.1 2017年5月

功能

  • [x] 暗示同意跟踪
  • [x] 明确同意跟踪
  • [x] 文本自定义和本地化
  • [x] 用户跟踪切换

示例

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

要运行 Triangle 项目,请克隆该仓库,然后在 Example/Triangle 目录中运行 pod install

作者

Evidon

许可证

AppNotice 在 MIT 许可证下可用。有关更多详细信息,请参阅 LICENSE 文件。

先决条件

  • iOS 8.0+
  • Xcode 7.0+
  • 来自 Ghostery 控制面板的有效 App Notice ID。有关详细信息,请联系您的 Ghostery 客户成功经理。

安装

您可以通过 CocoaPods 获取 AppNotice。要安装

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

pod 'AppNotice'

如果您在与 Objective-C 项目一起使用 SDK,只需将以下行添加到任何使用该框架的文件中即可。如果您有一个 Swift 项目,您需要将此行添加到您的桥接头部文件中。有关如何操作的说明,请参阅下面的创建 Swift 项目的桥接头部

#import <AppNoticeSDKFramework/AppNoticeSDKFramework.h>

为 Swift 项目创建桥接头部文件

如果您的项目是用 Swift 编写的,并且您还没有桥接头部文件,则最快的方法是将一个新的 Objective-C 文件添加到您的项目中。Xcode 会让您选择是否要配置 Objective-C 桥接头部。选择“创建桥接头部”,然后您就可以删除刚刚创建的额外 Objective-C 文件了。

SDK 激活

您必须激活 SDK,才能使用 SDK 功能。您可以使用您的激活令牌进行激活。

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

Swift

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

Objective-C

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

使用方法

请求用户同意

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

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

隐含同意

隐含同意实际上是一个仅隐私披露的选项。它告知用户,通过继续使用该应用,他自动给予同意,但也允许开启或关闭单个跟踪器。因此,它不包括 接受拒绝 选项,只有 继续。它还包括 repeatEvery30Days 参数,如果为真,则每隔 30 天重新显示同意对话框。如果为假,对话框将只显示一次。

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 支持多种语言(目前仅限英文,但法语、意大利语、荷兰语、德语、西班牙语和葡萄牙语将很快可用)。如果您的应用程序支持对 supported language 的本地化,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 文件中的 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 属性可用:

  • 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,如上。所展示