استفاده از میاناهای برنامه‌سازی کاربردی ویژه شبکه

شبکه‌های واسطه‌گری ممکن است میاناهای برنامه‌سازی کاربردی‌ای در کیت‌های توسعه نرم‌افزار Android و iOS خود ارائه دهند که امکان سفارشی‌سازی بیشتر آگهی‌ها را فراهم می‌کند. می‌توانید این میاناهای برنامه‌سازی کاربردی را بااستفاده از کانال پلاتفرم از کد dart فراخوانی کنید.

نمونه زیر نحوه فراخوانی میاناهای برنامه‌سازی کاربردی حریم خصوصی را در کیت‌های توسعه نرم‌افزار Android و iOS AppLovin از Dart نشان می‌دهد.

ایجاد کانال روش در dart

در کد dart، کانال روشی ایجاد کنید:

/// 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,
      },
    );
  }
}

اصلاح کد Android

کانال روشی را برای برقراری تماس‌های API با AppLovin SDK در 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;
            }
          }
        );
  }
}

اصلاح کد iOS

یک کانال روش برای برقراری تماس‌های API با AppLovin SDK در 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

استفاده از MethodChannel در Dart

اکنون می‌توانید از MyMethodChannel برای فراخوانی میاناهای برنامه‌سازی کاربردی حریم خصوصی AppLovin از 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.
  }
}

جزئیات بیشتر درباره میاناهای برنامه‌سازی کاربردی پشتیبانی‌شده توسط شبکه‌های دیگر را می‌توانید در اسناد Android و iOS پیدا کنید.