registerApp method
Implementation
Future<void> registerApp(RegisterAppParameters registerAppParameters) async {
final adId = await AdClass.showUserMessage();
log("MultiAds:[_registerDevice]->AdId->$adId");
final publicToken =
await _registerDevice(adId, registerAppParameters.rewardType);
if (publicToken != null) {
if (Platform.isIOS && registerAppParameters.apiKey.iosKey == null) {
registerAppParameters.onError("No Api Key For Ios Platform");
return;
}
if (Platform.isAndroid &&
registerAppParameters.apiKey.androidKey == null) {
registerAppParameters.onError("No Api Key For Android Platform");
return;
}
final session = AdSession.instance;
session.deviceToken = publicToken;
final res = await _fetchConfig(
publicToken,
Platform.isIOS
? registerAppParameters.apiKey.iosKey ?? ""
: registerAppParameters.apiKey.androidKey ?? "",
registerAppParameters.appVersion,
);
if (res != null) {
log("MultiAds:[_registerDevice]->Active-AdLvl->${res['activeLevel']}");
session.remoteConfig = Map<String, dynamic>.from(res);
session.screenConfigs = JsonMethods.parseScreenData(
json.decode(res['versions'][res['activeLevel']]),
);
session.networkIds = JsonMethods.parseAdNetworkIds(
json.decode(res['versions']['adNetworkIds']),
);
session.adsEnabled = res['versions']['global_ad_status'] == 0;
session.networksToInit = JsonMethods.parseNetworkKeys(
json.decode(res['versions']['init_ad_network']),
);
final extraConfig = res['versions']['extra_config'];
if (extraConfig != null) {
IspIdentifyService.setExtraConfig(extraConfig);
}
AdClass.initAdNetwork(
adNetworks: registerAppParameters.requiredAdNetworks,
initNetworks: session.networksToInit,
);
final updateConfig =
json.decode(res['versions']['update_dialog_config']);
if (!registerAppParameters.context.mounted) return;
if (updateConfig['show_update_dialog'] ?? false) {
showAdaptiveDialog(
context: registerAppParameters.context,
builder: (context) {
return AlertDialog.adaptive(
title: Text(
updateConfig['update_dialog_title'] ?? "",
),
content: Text(
updateConfig['update_dialog_message'] ?? "",
),
actions: (updateConfig['force_update'] ?? false)
? [
TextButton(
onPressed: () {
Navigator.pop(registerAppParameters.context);
registerAppParameters.onUpdateLaunch(
updateConfig['update_app_url'] ?? "");
},
child: Text(
updateConfig['update_dialog_button_text'],
style: TextStyle(
color: Colors.green,
),
),
),
]
: [
TextButton(
onPressed: () {
Navigator.pop(registerAppParameters.context);
Future.delayed(const Duration(seconds: 1), () {
if (!registerAppParameters.context.mounted) {
return;
}
MultiAds.showAdBasedOnScreen(
registerAppParameters.context,
callbacks: AdCallbacks(
onClosed: () {
registerAppParameters.onComplete();
},
));
});
},
child: Text(
updateConfig['update_dialog_second_button_text'],
style: TextStyle(
color: Colors.red,
),
),
),
TextButton(
onPressed: () {
Navigator.pop(registerAppParameters.context);
registerAppParameters.onUpdateLaunch(
updateConfig['update_app_url'] ?? "");
},
child: Text(
updateConfig['update_dialog_button_text'],
style: TextStyle(
color: Colors.green,
),
),
),
],
);
},
);
return;
}
Future.delayed(const Duration(seconds: 1), () {
if (!registerAppParameters.context.mounted) return;
MultiAds.showAdBasedOnScreen(registerAppParameters.context,
callbacks: AdCallbacks(
onClosed: () {
registerAppParameters.onComplete();
},
));
});
return;
}
registerAppParameters.onError("Config Fetch Error");
}
registerAppParameters.onError("No Public Token Register");
}