Page Summary
-
Mediation networks offer APIs for ad customization through their SDKs.
-
Platform channels can be used to call mediation network APIs from Dart code.
-
This guide demonstrates how to call AppLovin privacy APIs from Dart using method channels on Android and iOS.
-
You can create a method channel in Dart, modify your Android and iOS code to handle the calls, and then use the method channel in your Dart code to interact with the mediation network's SDK.
Mediation networks may provide APIs in their own Android and iOS SDKs that allow for further ads customization. You can call these APIs from dart code by using a platform channel .
The following sample shows you how to call privacy APIs in AppLovin's Android and iOS SDKs from Dart.
Create a method channel in dart
In your dart code, create a method channel:
/// Wraps a method channel that makes calls to AppLovin privacy APIs.
class
MyMethodChannel
{
final
MethodChannel
_methodChannel
=
MethodChannel
(
'com.example.mediationexample/mediation-channel'
);
/// Sets whether the user is age restricted in AppLovin.
Future<void>
setAppLovinIsAgeRestrictedUser
(
bool
isAgeRestricted
)
async
{
return
_methodChannel
.
invokeMethod
(
'setIsAgeRestrictedUser'
,
{
'isAgeRestricted'
:
isAgeRestricted
,
},
);
}
/// Sets whether we have user consent for the user in AppLovin.
Future<void>
setHasUserConsent
(
bool
hasUserConsent
)
async
{
return
_methodChannel
.
invokeMethod
(
'setHasUserConsent'
,
{
'hasUserConsent'
:
hasUserConsent
,
},
);
}
}
Modify your Android code
Set up a method channel to make API calls to the AppLovin SDK in Android:
public
class
MainActivity
extends
FlutterActivity
{
private
static
final
String
CHANNEL_NAME
=
"com.example.mediationexample/mediation-channel"
;
@Override
public
void
configureFlutterEngine
(
@NonNull
FlutterEngine
flutterEngine
)
{
super
.
configureFlutterEngine
(
flutterEngine
);
// Set up a method channel for calling APIs in the AppLovin SDK.
new
MethodChannel
(
flutterEngine
.
getDartExecutor
().
getBinaryMessenger
(),
CHANNEL
)
.
setMethodCallHandler
(
(
call
,
result
)
-
>
{
switch
(
call
.
method
)
{
case
"setIsAgeRestrictedUser"
:
AppLovinPrivacySettings
.
setIsAgeRestrictedUser
(
call
.
argument
(
"isAgeRestricted"
),
context
);
result
.
success
(
null
);
break
;
case
"setHasUserConsent"
:
AppLovinPrivacySettings
.
setHasUserConsent
(
call
.
argument
(
"hasUserConsent"
),
context
);
result
.
success
(
null
);
break
;
default
:
result
.
notImplemented
();
break
;
}
}
);
}
}
Modify your iOS code
Set up a method channel to make API calls to the AppLovin SDK in iOS:
@implementation
AppDelegate
-
(
BOOL
)
application:
(
UIApplication
*
)
application
didFinishLaunchingWithOptions
:(
NSDictionary
*
)
launchOptions
{
[
GeneratedPluginRegistrant
registerWithRegistry
:
self
];
// Set up a method channel for calling methods in 3P SDKs.
FlutterViewController
*
controller
=
(
FlutterViewController
*
)
self
.
window
.
rootViewController
;
FlutterMethodChannel
*
methodChannel
=
[
FlutterMethodChannel
methodChannelWithName
:
@"com.example.mediationexample/mediation-channel"
binaryMessenger
:
controller
.
binaryMessenger
];
[
methodChannel
setMethodCallHandler
:^
(
FlutterMethodCall
*
call
,
FlutterResult
result
)
{
if
([
call
.
method
isEqualToString
:
@"setIsAgeRestrictedUser"
])
{
[
ALPrivacySettings
setIsAgeRestrictedUser
:
call
.
arguments
[
@"isAgeRestricted"
]];
result
(
nil
);
}
else
if
([
call
.
method
isEqualToString
:
@"setHasUserConsent"
])
{
[
ALPrivacySettings
setHasUserConsent
:
call
.
arguments
[
@"hasUserConsent"
]];
result
(
nil
);
}
else
{
result
(
FlutterMethodNotImplemented
);
}
}];
}
@end
Use your MethodChannel in Dart
Now you can use your MyMethodChannel
to call AppLovin privacy APIs from Dart:
/// An example widget for the home page of your app.
class
HomePage
extends
StatefulWidget
{
@override
_HomePageState
createState
()
=
>
_HomePageState
();
}
class
_HomePageState
extends
State<HomePage>
{
// Keep a reference to your MyMethodChannel.
static
MyMethodChannel
platform
=
MyMethodChannel
();
@override
void
initState
()
{
super
.
initState
();
_updateAppLovinSettingsAndLoadAd
();
}
Future<void>
_updateAppLovinSettingsAndLoadAd
()
async
{
// Update the AppLovin settings before loading an ad.
await
platform
.
setAppLovinIsAgeRestrictedUser
(
true
);
await
platform
.
setHasUserConsent
(
false
);
_loadAd
();
}
void
_loadAd
()
{
// TODO: Load an ad.
};
@override
Widget
build
(
BuildContext
context
)
{
// TODO: Build your widget.
}
}
More details on the APIs supported by other networks can be found in the Android and iOS documentation.

