Please note that when integrating SDK products provided by TrustDecision in the APP of your company:
1.1 According to the user's information protection regulations, before your users start the App for the first time and start collecting information, your company should fully inform the user of the purpose, method, and scope of collecting, using, and sharing the user's personal information with a third party through an interactive interface or design (such as a pop-up window of the privacy policy), and obtain the express consent of the end user.
1.2 To provide business security and risk control services to your company, the TrustDecision SDK will collect, process, and use the identification information IDFA, AndroidID, OAID, MAC address, Wireless IP address, WIFI list, wireless router identification (BSSID, SSID),device type, device model, system type, geographical location(Rough location information, precise location information), login IP address and other device information of the user's device. To ensure compliance with your use of related services, the aforementioned privacy policy should cover the authorization of TrustDecision SDK to provide services and collect, process, and use relevant information. The following terms are for your reference. The specific expression can be determined by your company according to the overall framework and content of your privacy agreement:
TrustDecision SDK: For business security and risk control, our company uses the TrustDecision SDK. The SDK needs to obtain the information of your devices, such as IDFA, AndroidID, OAID, GAID,MAC address, Wireless IP address, WIFI list, wireless router identification (BSSID, SSID),device type, device model, system type, geographical location(Rough location information, precise location information), login IP address, application list, running process, network type,device software version,sensor information(light sensor, gravity sensor, magnetic field sensor, acceleration sensor, gyroscope sensor) and other related device information, for fraud risk identification.
Privacy Policy: https://www.trustdecision.com/legal/privacy-policy
integrate sample : https://github.com/trustdecision/mobrisk-ios-sample
If installing offline, please refer to Offline Install
pod 'TrustDecisionPro', '5.3.2' to the target in the Podfilepod install --repo-update command in the folder where the Podfile is located. (M series mac computers need to execute arch -x86_64 pod install --repo-update command)File -> Add Package Dependencies...https://github.com/trustdecision/trustdevice-pro-ios.gitExact Version5.3.2Add PackageAdd -ObjC to the host app target:
TARGETS -> your app targetBuild SettingsOther Linker Flags-ObjCAccording to the latest App Store Privacy Policy announced by Apple, starting from the spring of 2024, apps listed on the App Store will need to carry an App privacy list document. Starting May 1, 2024, App Store Connect will not accept apps that do not describe their use of the required reason API in a privacy manifest file.
Please choose a solution based on your actual situation.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSPrivacyCollectedDataTypes</key>
<array>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypeDeviceID</
void (*initWithOptions)(NSDictionary *options);getBlackBox or getBlackBoxAsync after initWithOptions. /* Get blackBox asynchronously */
void (*getBlackBoxAsync)(TDGetBlackBoxAsyncBlock block);
/* Get blackBox synchronously */
NSString (*getBlackBox)(void);Obtain blackBox in actual business scenarios
Recommend using asynchronous methods to obtain without affecting the calling thread.
If the blackBox has been successfully obtained through asynchronous method before, it can be directly obtained through synchronous method.
rGPGX1678775227I9NCwcuVJCb.Please call setOnErrorCodeListener before the initWithOptions method to listen for error messages. It is recommended to use it only in debug mode.
Q1: How to solve the problem of warning "The archive did not include a dSYM for the TDCorePlugin.framework with the UUIDs" after using Archive to package and Distribute on Testflight or AppStore?
A1: It will not have any impact on the current App distribute, please ignore this warning.
Objective C
[options setValue:@(YES) forKey:@"IDFA"];
Swift
options.updateValue(true, forKey: "IDFA")
idfa |
IDFV | Whether collecting IDFV information, default allowed | Objective C | idfv |
wifiIp | Whether collecting wifiIp information, default allowed | Objective C | wifiIp |
cellIp | Whether collecting cellIp information, default allowed | Objective C | cellIp |
vpnIp | Whether collecting vpnIp information, default allowed | Objective C | vpnIp |
wifiIpv6 | Whether collecting wifiIpv6 information, default allowed | Objective C | wifiIpv6 |
deviceName | Whether collecting device name information, default allowed | Objective C | device_name |
ssid | Whether collecting ssid information, default allowed | Objective C | ssid、bssid |
collectLevel | You can set M to control the maximum length of blackBox to 2000, default around 5000 | Objective C |
customMessage | Custom messages, SDK supports transparent transmission and storage | Objective C |
#import <TDMobRisk/TDMobRisk.h>
- (void)initTrustDecisionSDK {
// Get riskManager
TDMobRiskManager_t *riskManager = [TDMobRiskManager sharedManager];
// Initialization Configuration
NSMutableDictionary *options = [NSMutableDictionary dictionary];
/*************************** Required ***************************/
// get from our customer platform
[options setValue:@"[Your partner]" forKey:@"partner"];
// get from our customer platform
[options setValue:@"[Your appKey]" forKey:@"appKey"];
// Data center, Refer to All configuration
[options setValue:@"[Your data center]" forKey:@"country"];
/*************************** Optional ***************************/
#ifdef DEBUG
// Listen for error codes
riskManager->setOnErrorCodeListener(^(int errorCode,const char* errorMsg){
NSLog(@":errorCode:%d,errorMsg:%s",errorCode,errorMsg);
});
#endif
riskManager->initWithOptions(options);
riskManager->getBlackBoxAsync(^(NSString* blackBox){
NSLog(@"blackBox:%@",blackBox);
});
}
TDMobRiskManager_t *riskManager = [TDMobRiskManager sharedManager];
riskManager->getBlackBoxAsync(^(NSString* blackBox){
NSLog(@"blackBox:%@",blackBox);
});
// May be time-consuming, be cautious when calling in the main thread
TDMobRiskManager_t *riskManager = [TDMobRiskManager sharedManager];
NSString *blackBox = riskManager->getBlackBox();
TDMobRiskManager_t *riskManager = [TDMobRiskManager sharedManager];
NSString *sdkVersion = riskManager->getSDKVersion();
TDMobRiskManager_t *riskManager = [TDMobRiskManager sharedManager];
riskManager->setOnErrorCodeListener(^(int errorCode,const char* errorMsg){
NSLog(@":errorCode:%d,errorMsg:%s",errorCode,errorMsg);
});