Flutter广告管理插件sourcepoint_unified_cmp_ios的使用

Flutter广告管理插件sourcepoint_unified_cmp_ios的使用

sourcepoint_unified_cmp_ios

sourcepoint_unified_cmp_ios workflow

style: very_good_analysis

sourcepoint_unified_cmp_iossourcepoint_unified_cmp 的 iOS 实现。

使用

此包是官方推荐使用的插件(endorsed),这意味着你可以直接像使用其他插件一样正常使用 sourcepoint_unified_cmp。当你这样做时,此包将自动包含在你的应用中。

完整示例Demo

以下是一个完整的 Flutter 应用示例,展示了如何使用 sourcepoint_unified_cmp_ios 插件来管理广告:

import 'package:flutter/material.dart';
import 'package:sourcepoint_unified_cmp/sourcepoint_unified_cmp.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  bool _isConsentGiven = false;

  // 初始化 SourcePoint CMP
  Future<void> initCMP() async {
    try {
      await SourcepointUnifiedCMP.init(
        // 您的 SourcePoint 账户 ID
        accountId: 12345,
        // 您的 SourcePoint 隐私中心 ID
        privacyCenterId: 67890,
        // 您的 SourcePoint 隐私政策 URL
        privacyPolicyUrl: "https://yourdomain.com/privacy-policy",
        // 是否启用调试模式
        debug: true,
      );

      // 获取用户同意状态
      final consentStatus = await SourcepointUnifiedCMP.getConsentStatus();
      setState(() {
        _isConsentGiven = consentStatus == ConsentStatus.granted;
      });
    } catch (e) {
      print("Failed to initialize CMP: $e");
    }
  }

  @override
  void initState() {
    super.initState();
    // 在初始化时调用 initCMP 方法
    initCMP();
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('SourcePoint CMP Demo'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              Text(_isConsentGiven ? '用户已同意' : '用户未同意'),
              ElevatedButton(
                onPressed: () {
                  // 打开隐私中心以获取用户同意
                  SourcepointUnifiedCMP.openPrivacyCenter();
                },
                child: Text('打开隐私中心'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

在这个示例中:

  1. 我们首先导入了必要的包。
  2. initCMP 方法中,我们初始化了 SourcepointUnifiedCMP 并设置了账户 ID、隐私中心 ID 和隐私政策 URL。
  3. 我们通过 getConsentStatus 方法检查用户的同意状态,并根据结果更新 UI。
  4. 最后,我们在界面上添加了一个按钮,用于打开隐私中心以获取用户的同意。

确保你已经在 pubspec.yaml 文件中添加了 sourcepoint_unified_cmp 依赖:

dependencies:
  flutter:
    sdk: flutter
  sourcepoint_unified_cmp: ^1.0.0

更多关于Flutter广告管理插件sourcepoint_unified_cmp_ios的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter广告管理插件sourcepoint_unified_cmp_ios的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何在Flutter项目中集成和使用sourcepoint_unified_cmp_ios插件的示例代码。请注意,这个示例假设你已经有一个Flutter项目,并且你的iOS开发环境已经配置好。

1. 添加依赖

首先,你需要在pubspec.yaml文件中添加sourcepoint_unified_cmp_ios插件的依赖。

dependencies:
  flutter:
    sdk: flutter
  sourcepoint_unified_cmp_ios: ^最新版本号  # 请替换为实际的最新版本号

然后运行flutter pub get来安装依赖。

2. iOS配置

在iOS项目中,你需要进行一些配置以使用Sourcepoint SDK。打开ios/Runner/Info.plist文件,并添加必要的配置,比如Sourcepoint的App ID等(这些配置信息需要根据你的Sourcepoint账户获取)。

此外,你还需要在ios/Podfile中添加对Sourcepoint SDK的Pod依赖(注意:这个步骤可能依赖于插件的具体实现,如果插件已经封装了Pod依赖,这一步可能不需要)。

platform :ios, '10.0'

# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'

project 'Runner', {
  'Debug': :debug,
  'Profile': :release,
  'Release': :release,
}

def flutter_root
  generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
  unless File.exist?(generated_xcode_build_settings_path)
    raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
  end

  File.foreach(generated_xcode_build_settings_path) do |line|
    matches = line.match(/FLUTTER_ROOT\=(.*)/)
    return File.expand_path(matches[1], __FILE__) if matches
  end
  raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
end

require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)

flutter_ios_podfile_setup

target 'Runner' do
  use_frameworks!
  use_modular_headers!

  flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))

  # Add Sourcepoint SDK Pod dependency if not already included by the plugin
  # pod 'SourcepointSDK', '~> 版本号'  # 请替换为实际的版本号
end

post_install do |installer|
  installer.pods_project.targets.each do |target|
    flutter_additional_ios_build_settings(target)
  end
end

注意:如果插件已经处理了Pod依赖,上面的pod 'SourcepointSDK', '~> 版本号'行应该被注释掉或删除。

3. Flutter代码实现

在你的Flutter代码中,你可以按照以下方式使用sourcepoint_unified_cmp_ios插件。

import 'package:flutter/material.dart';
import 'package:sourcepoint_unified_cmp_ios/sourcepoint_unified_cmp_ios.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  void initState() {
    super.initState();
    _initializeSourcepoint();
  }

  Future<void> _initializeSourcepoint() async {
    try {
      // 初始化Sourcepoint SDK(假设插件提供了这样的方法)
      // 注意:这里的API调用和参数需要根据插件的实际API文档进行调整
      await SourcepointUnifiedCmpIos.initialize(
        appId: '你的Sourcepoint App ID', // 替换为你的实际App ID
        // 其他初始化参数...
      );

      // 检查用户同意状态
      UserConsentStatus status = await SourcepointUnifiedCmpIos.getUserConsentStatus();
      print('User Consent Status: $status');

      // 其他操作,比如展示CMP界面等...
    } catch (e) {
      print('Failed to initialize Sourcepoint: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Sourcepoint CMP Example'),
        ),
        body: Center(
          child: Text('Initializing Sourcepoint...'),
        ),
      ),
    );
  }
}

注意:上面的代码是一个简化的示例,实际的API调用和参数可能有所不同。你需要参考sourcepoint_unified_cmp_ios插件的官方文档来调整代码。

由于sourcepoint_unified_cmp_ios插件的具体API和实现细节可能会随着版本的更新而变化,因此强烈建议查阅最新的官方文档和示例代码来获取最准确的信息。

回到顶部