You can control some parts of sdk internal logic by overriding dependencies used by sdk.
Define raw resource e.g sdk_deps.json
Setup meta-data in AndroidManifest.json
Copy <meta-data
android:name="unified.vpn.sdk.deps"
android:resource="@raw/sdk_deps"/>
Ensure custom dependency classes is not renamed or removed by ProGuard or similar software
Content of sdk_deps.json
General structure of dependencies config looks like
Copy {
"dependency 1 key" : {
"type" : "class 1 name for dependency to use"
} ,
"dependency 2 key" : {
"type" : "class 2 name for dependency to use"
}
}
Possible dependencies overrides
Custom logger
Define class that extends unified.vpn.sdk.UnifiedLogDelegate
Copy @ Keep
public class CustomLogger extends UnifiedLogDelegate {
@ Override
public void log ( final int priority , Throwable throwable , String tag , String format , Object ... args) {
}
@ Override
public void setLogLevel ( final int logLevel) {
}
}
Setup SDK dependency override in sdk_deps
Copy {
"logger" : {
"type" : "com.sdk.sample.CustomLogger"
}
}
Additional configuration of OkHttpClient used in sdk
Define class that implements OkHttpNetworkLayer.HttpClientConfigurer
Copy @ Keep
public class SampleOkHttpConfigurer implements OkHttpNetworkLayer . HttpClientConfigurer {
@ Override
public void configure (@ NonNull final OkHttpClient . Builder builder) {
//perform custom configuration of OkHttpClient.Builder
}
}
Setup SDK dependency override in sdk_deps
Copy {
"okHttpConfigurer" : {
"type" : "com.sdk.sample.SampleOkHttpConfigurer"
}
}
Custom backend URL rotator
Define class that implements UrlRotator
Copy public class SampleUrlRotator implements UrlRotator {
@ Override
public void failure ( String httpUrl , PartnerRequestException error) {
//mark url as failed
}
@ Override
public void success ( String httpUrl) {
//mark url as success
}
@ Override
public String provide () {
// return url for backend calls
return null ;
}
@ Override
public int size () {
// return number of possible urls for rotation
return 1 ;
}
}
Define class that implements UrlRotatorFactory
Copy @ Keep
public class SampleUrlRotatorFactory implements UrlRotatorFactory {
@ Override
public BackendUrlRotator create ( Context context , ClientInfo clientInfo) {
return new SampleUrlRotator() ;
}
}
Setup SDK dependency override in sdk_deps
Copy {
"urlRotator" : {
"type" : "com.sdk.sample.SampleUrlRotatorFactory"
}
}
Custom notification builder
Define class that implements NotificationDelegate
Copy @Keep
public class SampleNotificationDelegate implements NotificationDelegate {
@Nullable
@Override
public Notification create(
@NonNull Context context,
@Nullable SdkNotificationConfig config,
@NonNull VpnState state,
long trafficRx,
long trafficTx,
long speedRx,
long speedTx,
@Nullable NotificationDelegate fallback
) {
return null;
}
}
Setup SDK dependency override in sdk_deps
Copy {
"notificationDelegate" : {
"type" : "com.sdk.sample.SampleNotificationDelegate"
}
}
Last updated 8 months ago