Privacy and Permissions Statement¶
Permission Configuration Statement¶
| Name | Required | Reason for Use |
|---|---|---|
READ_PHONE_STATE |
No | Used to obtain the cellular network device information of the phone |
For details on how to request dynamic permissions, refer to Android Developer
Adapting to Market Privacy Audits¶
Privacy Statement¶
Method 1: SDK AndroidID Configuration¶
The SDK uses Android ID to better correlate data from the same user. If you need to publish the app on an application market, it is recommended to enable it only after the user agrees to the privacy policy.
public class DemoApplication extends Application {
@Override
public void onCreate() {
// Set setEnableAccessAndroidID to false during initial configuration
FTSDKConfig config = new FTSDKConfig.Builder(DATAKIT_URL)
.setEnableAccessAndroidID(false)
.build();
FTSdk.install(config);
// ...
}
}
// Enable after the user agrees to the privacy policy
FTSdk.setEnableAccessAndroidID(true);
class DemoApplication : Application() {
override fun onCreate() {
// Set setEnableAccessAndroidID to false during initial configuration
val config = FTSDKConfig
.builder(DATAKIT_URL)
.setEnableAccessAndroidID(false)
FTSdk.install(config)
// ...
}
}
// Enable after the user agrees to the privacy policy
FTSdk.setEnableAccessAndroidID(true)
Method 2: Delayed SDK Initialization¶
If you need to delay loading the SDK within the app, it is recommended to complete the initialization only after the user agrees to the policy.
// Application
public class DemoApplication extends Application {
@Override
public void onCreate() {
// If the policy has been agreed to, initialize in the Application
if (agreeProtocol) {
FTSdk.init(); // SDK initialization pseudo-code
}
}
}
// Privacy Statement Activity page
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// Privacy statement not read
if (notReadProtocol) {
// Show privacy statement popup
showProtocolView();
// If the privacy statement is agreed to
if (agreeProtocol) {
FTSdk.init(); // SDK initialization pseudo-code
}
}
}
}
// Application
class DemoApplication : Application() {
override fun onCreate() {
// If the policy has been agreed to, initialize in the Application
if (agreeProtocol) {
FTSdk.init() // SDK initialization pseudo-code
}
}
}
// Privacy Statement Activity page
class MainActivity : Activity() {
override fun onCreate(savedInstanceState: Bundle?) {
// Privacy statement not read
if (notReadProtocol) {
// Show privacy statement popup
showProtocolView()
// If the privacy statement is agreed to
if (agreeProtocol) {
FTSdk.init() // SDK initialization pseudo-code
}
}
}
}
Third-party Frameworks¶
flutter, react-native, uni-app, unity can adopt a delayed initialization approach similar to native Android to handle application market privacy audits.