6.4 KiB
6.4 KiB
GuruConsent-iOS
特性
- 支持系统ATT权限引导弹窗.
- 支持多国语言显示.
- 支持调试EEA地理设置等.
- 支持结果状态回调.
准备
将应用 ID 添加到 Info.plist 中:
<key>GADApplicationIdentifier</key>
<string>YOUR-APP-ID</string>
将ATT跟踪权限添加到 Info.plist 中:
<key>NSUserTrackingUsageDescription</key>
<string>This identifier will be used to deliver personalized ads to you.</string>
安装
GuruConsent 仅支持CocoaPods.
CocoaPods - Podfile
source 'git@github.com:castbox/GuruSpecs.git'
pod 'GuruConsent'
使用
首先导入framework:
Swift:
import GuruConsent
Objective-C:
#import <GuruConsent/GuruConsent-Swift.h>
下面是一些简单示例. 支持所有设备和模拟器:
方式一: 自动
如果满足显示条件 自动显示弹窗 具有一定的延迟效果 但具体显示时机不定, 受网络影响.
建议在应用启动后 延后一些调用开始 请务必确保首次启动后已授权网络请求权限再调用
Swift:
// 开始请求
GuruConsent.start(from: controller) { result in
switch result {
case .success(let status):
if #available(iOS 14, *) {
print("ATT 结果: \(ATTrackingManager.trackingAuthorizationStatus)")
}
print("GDPR 结果: \(status)")
case .failure(let error):
print("失败: \(error)")
}
}
Objective-C:
// 开始请求
[GuruConsent startFrom:self success:^(enum GuruConsentGDPRStatus status) {
if (@available(iOS 14, *)) {
NSLog(@"ATT 结果: %lu", (unsigned long)ATTrackingManager.trackingAuthorizationStatus);
}
switch (status) {
case GuruConsentGDPRStatusUnknown:
break;
case GuruConsentGDPRStatusRequired:
break;
case GuruConsentGDPRStatusNotRequired:
break;
case GuruConsentGDPRStatusObtained:
break;
default:
break;
}
NSLog(@"GDPR 结果: %ld", (long)status);
} failure:^(NSError * _Nonnull error) {
NSLog(@"失败: %@", error);
}];
方式二: 手动
先调用准备, 准备完成后在合适的时机手动调用弹窗显示.
建议在应用启动后 延后一些调用准备 请务必确保首次启动后已授权网络请求权限再调用
Swift:
// 准备
GuruConsent.prepare { result in
switch result {
case .success(let status):
print("GDPR 结果: \(status)")
case .failure(let error):
print("失败: \(error)")
}
}
// 显示 请确保status为.required 否则无法显示
GuruConsent.present(from: self) { result in
switch result {
case .success(let status):
if #available(iOS 14, *) {
print("ATT 结果: \(ATTrackingManager.trackingAuthorizationStatus)")
}
print("GDPR 结果: \(status)")
case .failure(let error):
print("失败: \(error)")
}
}
Objective-C:
// 准备
[GuruConsent prepareWithSuccess:^(enum GuruConsentGDPRStatus status) {
switch (status) {
case GuruConsentGDPRStatusUnknown:
break;
case GuruConsentGDPRStatusRequired:
break;
case GuruConsentGDPRStatusNotRequired:
break;
case GuruConsentGDPRStatusObtained:
break;
default:
break;
}
NSLog(@"GDPR 结果: %ld", (long)status);
} failure:^(NSError * _Nonnull error) {
NSLog(@"失败: %@", error);
}];
// 显示 请确保status为.required 否则无法显示
[GuruConsent presentFrom:self success:^(enum GuruConsentGDPRStatus status) {
if (@available(iOS 14, *)) {
NSLog(@"ATT 结果: %lu", (unsigned long)ATTrackingManager.trackingAuthorizationStatus);
}
switch (status) {
case GuruConsentGDPRStatusUnknown:
break;
case GuruConsentGDPRStatusRequired:
break;
case GuruConsentGDPRStatusNotRequired:
break;
case GuruConsentGDPRStatusObtained:
break;
default:
break;
}
NSLog(@"GDPR 结果: %ld", (long)status);
} failure:^(NSError * _Nonnull error) {
NSLog(@"%@", error);
}];
调试设置
testDeviceIdentifiers获取方式: 当传入空置, 运行调用GuruConsent.start(from:) Xcode控制台会输出如下:
<UMP SDK> To enable debug mode for this device, set: UMPDebugSettings.testDeviceIdentifiers = @[ @"8C5E8576-5090-4C41-8FC4-A5A80FF77D9E" ];
将控制台的8C5E8576-5090-4C41-8FC4-A5A80FF77D9E 复制粘贴到代码中, 再次运行即可进行调试.
Swift:
// 设置调试配置
let debug = GuruConsent.DebugSettings()
debug.testDeviceIdentifiers = ["8C5E8576-5090-4C41-8FC4-A5A80FF77D9E"]
debug.geography = .EEA
GuruConsent.debug = debug
Objective-C:
// 设置调试配置
GuruConsentDebugSettings *debug = [[GuruConsentDebugSettings alloc] init];
debug.testDeviceIdentifiers = @[@"8C5E8576-5090-4C41-8FC4-A5A80FF77D9E"];
debug.geography = GuruConsentDebugSettingsGeographyEEA;
GuruConsent.debug = debug;
重置状态
GuruConsent.reset()
运行
未授权过ATT权限 (非EEA地区):
点击Continue按钮弹出ATT授权弹窗
EEA地区:
未授权过ATT权限 点击同意等按钮弹出ATT授权弹窗
参考
协议
GuruConsent 使用 MIT 协议. 有关更多信息,请参阅 LICENSE 文件.
