Additional Configuration Notes for Using the Pangle SDK
Pangle SDK removed COPPA and CCPA settings in v7.1+ and unified them under PAConsent. The TopOn SDK has added corresponding APIs in v6.4.56 and above for you to set according to your situation.
Note: When not set, the Pangle SDK defaults to Consent.
#import <AnyThinkPangleAdapter/AnyThinkPangleAdapter.h>
typedef NS_ENUM(NSInteger, ATPAGPAConsentType) {
ATPAGPAConsentTypeConsent = 0, ///< User has granted the consent
ATPAGPAConsentTypeNoConsent = 1, ///< User doesn't grant consent
};
+ (void)setPAGPAConsentType:(ATPAGPAConsentType)consentType;
Sample Code
// Fill ads
[ATPangleConfigure setPAGPAConsentType:ATPAGPAConsentTypeConsent];
// Do not fill ads
[ATPangleConfigure setPAGPAConsentType:ATPAGPAConsentTypeNoConsent];
The General Data Protection Regulation (GDPR) issued by the European Union came into effect on May 25, 2018. To support the GDPR protocol, we have updated our privacy policy. Please refer to the relevant content of the Privacy Policy on our official website. At the same time, to safeguard the security of user data privacy, the TopOn iOS SDK has added data protection features. Please refer to the following content to learn how to configure it.

- Presented using the present method; please do not present your own window at this time.
- If the ViewController parameter is not passed, it will automatically be obtained and displayed by default.
- Before using the following code, you must remove the ATT request code from other locations. Please do not use it in
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions, because Apple requires the ATT request to be called afterapplicationDidBecomeActive.
The above integration sample code is as follows:
// Import header file
#import <AnyThinkSDK/ATAPI.h>
#import <AppTrackingTransparency/AppTrackingTransparency.h>
- (void)initFlow {
[[ATAPI sharedInstance] showGDPRConsentDialogInViewController:[UIApplication sharedApplication].keyWindow.rootViewController dismissalCallback:^{
// This example requests ATT permission on a non-first launch when the user has consented or the data consent is unknown. You can adjust it based on the actual app situation.
if (([ATAPI sharedInstance].dataConsentSet == ATDataConsentSetUnknown && ([[NSUserDefaults standardUserDefaults] boolForKey:@"GDPR_First_Flag"] == YES))
|| [ATAPI sharedInstance].dataConsentSet == ATDataConsentSetPersonalized) {
if (@available(iOS 14, *)) {
[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
}];
}
}
// Initialize the SDK
[[ATAPI sharedInstance] startWithAppID:kTakuAppID appKey:kTakuAppKey error:nil];
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"GDPR_First_Flag"];
}];
//......Other code
}
After the user makes their selection, use the following method to set the GDPR level for TopOn. The consentString parameter is reserved for Flurry. We provide three levels of data protection:
typedef NS_ENUM(NSInteger, ATDataConsentSet) {
/*
This is the default value, used when the developer has not set it. In this case, if the user is in the GDPR region, SDK initialization will fail,
and subsequent ad requests will also fail. This type cannot be set using the setDataConsentSet method.
*/
ATDataConsentSetUnknown = 0,
/*
This level indicates that the user consents to the SDK collecting and using their personal data to provide more relevant and suitable ads for them.
*/
ATDataConsentSetPersonalized = 1,
/*
If the data protection level is set to this value, the SDK will not collect the user's personal data, as the ads served may not match the user's situation.
Additionally, in this case, certain data that does not involve user privacy may still be collected.
*/
ATDataConsentSetNonpersonalized = 2
};
// After the user has made their selection according to your logic, you can call the following API to set it
[[ATAPI sharedInstance] setDataConsentSet:ATDataConsentSetUnknown consentString:[NSDictionary dictionary]];
The California Consumer Privacy Act (CCPA) provides various privacy rights to California consumers. Businesses subject to CCPA will fulfill multiple obligations to these consumers, including information disclosure, consumer rights similar to the EU General Data Protection Regulation (GDPR), the right to "opt out" of specific data transfers, and the "opt-in" requirement for minors.
Please go to the TopOn Dashboard - App page, then click the "Edit" button to configure CCPA, as shown below:

The Children's Online Privacy Protection Act (COPPA) primarily targets the online collection of personal information from children under 13. According to the COPPA FAQ, developers are responsible for determining whether their app is targeted at children under 13, considering, but not limited to, the following factors: "the subject matter of the application, visual content, use of animated characters or child-oriented activities and incentives, music or other audio content, age of models, presence of child celebrities or celebrities appealing to children, language or other characteristics of the website or online service, and whether the advertising promoted or appearing on the website or online service is targeted at children."

user's age in the following way before initializing the SDK:
- ⚠️ When the user's age passed is under 13, it will comply with the relevant COPPA regulations.
- The logic for obtaining the user's age is implemented by your own application, such as through a popup.
[ATAPI sharedInstance].customData = @{kATCustomDataAgeKey:@"User's age"};