registerApp method

Future<void> registerApp(
  1. RegisterAppParameters registerAppParameters
)

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;
    }
    GlobalAdVariables.deviceServerToken = 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']}");
      GlobalAdVariables.fullJson = res;
      GlobalAdVariables.screenAdJson = JsonMethods.parseScreenData(
        json.decode(res['versions'][res['activeLevel']]),
      );
      GlobalAdVariables.adNetworkIds = JsonMethods.parseAdNetworkIds(
        json.decode(res['versions']['adNetworkIds']),
      );
      GlobalAdVariables.globalAdFlag =
          res['versions']['global_ad_status'] == 0;

      GlobalAdVariables.initAdNetworks =
          json.decode(res['versions']['init_ad_network']);

      AdClass.initAdNetwork(
        adNetworks: registerAppParameters.requiredAdNetworks,
        initNetwork: GlobalAdVariables.initAdNetworks,
      );

      final updateConfig =
          json.decode(res['versions']['update_dialog_config']);
      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), () {
                            MultiAds.showAdBasedOnScreen(
                                registerAppParameters.context,
                                adModuleWithCallBacks: AdModuleWithCallBacks(
                              onCloseEvent: () {
                                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), () {
        MultiAds.showAdBasedOnScreen(registerAppParameters.context,
            adModuleWithCallBacks: AdModuleWithCallBacks(
          onCloseEvent: () {
            registerAppParameters.onComplete();
          },
        ));
      });
      return;
    }
    registerAppParameters.onError("Config Fetch Error");
  }
  registerAppParameters.onError("No Public Token Register");
}