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.4' 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.2-4Add PackageAdd -ObjC to the host app target:
TARGETS -> your app targetBuild SettingsOther Linker Flags-ObjC#import <TDMobRisk/TDMobRisk.h>
According 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</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<true/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
<string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string>
</array>
</dict>
</array>
<key>NSPrivacyAccessedAPITypes</key>
<array>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryDiskSpace</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>E174.1</string>
</array>
</dict>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>CA92.1</string>
</array>
</dict>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategorySystemBootTime</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>35F9.1</string>
</array>
</dict>
</array>
</dict>
</plist>void (*initWithOptions)(NSDictionary *options);getBlackBox or getBlackBoxAsync after initWithOptions. /* Get blackBox asynchronously */
void (*getBlackBoxAsync)(TDGetBlackBoxAsyncBlock block);
/* Get blackBox synchronously */
NSString (*getBlackBox)(void);- (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);
});
}
Obtain blackBox in actual business scenarios
Recommend using asynchronous methods to obtain without affecting the calling thread.
TDMobRiskManager_t *riskManager = [TDMobRiskManager sharedManager];
riskManager->getBlackBoxAsync(^(NSString* blackBox){
NSLog(@"blackBox:%@",blackBox);
});
If the blackBox has been successfully obtained through asynchronous method before, it can be directly obtained through synchronous method.
// May be time-consuming, be cautious when calling in the main thread
TDMobRiskManager_t *riskManager = [TDMobRiskManager sharedManager];
NSString *blackBox = riskManager->getBlackBox();
rGPGX1678775227I9NCwcuVJCb.TDMobRiskManager_t *riskManager = [TDMobRiskManager sharedManager];
NSString *sdkVersion = riskManager->getSDKVersion();
Please call setOnErrorCodeListener before the initWithOptions method to listen for error messages. It is recommended to use it only in debug mode.
TDMobRiskManager_t *riskManager = [TDMobRiskManager sharedManager];
riskManager->setOnErrorCodeListener(^(int errorCode,const char* errorMsg){
NSLog(@":errorCode:%d,errorMsg:%s",errorCode,errorMsg);
});
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.