Flutter信息在线获取插件flutter_infonline_library的使用

Flutter信息在线获取插件flutter_infonline_library的使用

Unoffical INFOnline Flutter库

Pub Build Status License package publisher Awesome Flutter

该库用于伪名测量。

INFOnline Flutter库支持以下测量系统的并行操作:

  • IOMp/SZM(INFOnline Library iOS/Android)
  • ÖWA(INFOnline Library iOS/Android)

如果您对人口普查测量感兴趣,请查看flutter_iomb_library

  • IOMb/Census(IOMb Library iOS/Android)

要求

  • Dart SDK: >=2.17.6 <4.0.0
  • Flutter: >=2.5.0
  • Android: minSdkVersion 19
  • iOS: minSdkVersion 11
  • 需要native iOS和Android INFOnline库

您将通过电子邮件从INFOnline支持团队获得native iOS和Android库。这些库不是公开的!

配置

在您的pubspec.yaml文件中添加flutter_infonline_library作为依赖项。

iOS

现在已嵌入iOS INFOnline库v.2.7.0。

只需打开项目中的ios/Podfile,确保平台未被注释且最低版本为13。

platform :ios, '13.0'

Android

下载Android INFOnline库并将.aar文件复制到项目中的以下文件夹:

android/app/libs/infonlinelib_2.5.0.aar

现在打开android/app/build.gradle文件,并确保SDK版本大于等于19。

android {
  defaultConfig {
    minSdkVersion 26
    targetSdkVersion 33
  }
}

在应用的AndroidManifest.xml文件中添加您的Ad Manager应用ID(在Ad Manager UI中标识)。

<manifest>
    <application>
        <!-- Sample Ad Manager app ID: ca-app-pub-3940256099942544~3347511713 -->
        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
    </application>
</manifest>

使用

简单示例以在项目中测试插件。

示例

import 'package:flutter_infonline_library/flutter_infonline_library.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();

  if (Platform.isAndroid) {
    // 启用日志记录,这将在IDE控制台中显示。
    await InfonlineLibrary.instance.android.setDebugModeEnabled(true);

    // 创建一个新的Android会话
    await InfonlineLibrary.instance.session(IOLSessionType.szm).android.initIOLSession(
      offerIdentifier: '<yourIdentifier>', debug: true, type: IOLPrivacyType.ack
    );
  } else if (Platform.isIOS) {
    // 启用日志记录,这仅会在XCode控制台中显示。
    await InfonlineLibrary.instance.ios.setDebugLogLevel(IOLDebugLevel.trace);

    // 创建一个新的iOS会话
    await InfonlineLibrary.instance.session(IOLSessionType.szm).ios.startSession(
      offerIdentifier: '<yourIdentifier>', type: IOLPrivacyType.ack
    );
  }

  // 记录一个视图事件
  await InfonlineLibrary.instance.session(IOLSessionType.szm).logViewEvent(
    type: IOLViewEventType.appeared,
    category: '<yourCategory>'
  );
}

支持的功能

共享于所有平台

InfonlineLibrary.instance.session(IOLSessionType.szm).logViewEvent(
  type: IOLViewEventType.appeared,
  category: '<yourCategory>'
);

InfonlineLibrary.instance.session(IOLSessionType.szm).sendLoggedEvents();

InfonlineLibrary.instance.session(IOLSessionType.szm).terminateSession();

InfonlineLibrary.instance.session(IOLSessionType.szm).setCustomConsent('<String>');

更多详细信息请参阅官方的iOS文档Android文档

iOS特定功能

InfonlineLibrary.instance.ios.setDebugLogLevel(IOLDebugLevel.trace);

InfonlineLibrary.instance.session(IOLSessionType.szm).ios.startSession(
  offerIdentifier: '<yourIdentifier>',
  type: IOLPrivacyType.ack
);

List<String> logs = await InfonlineLibrary.instance.ios.mostRecentLogs(0);

更多详细信息请参阅官方的iOS文档

Android特定功能

InfonlineLibrary.instance.android.setDebugModeEnabled(true);

InfonlineLibrary.instance.session(IOLSessionType.szm).android.initIOLSession(
  offerIdentifier: '<yourIdentifier>',
  debug: true,
  type: IOLPrivacyType.ack
);

更多详细信息请参阅官方的Android文档


完整示例

下面是完整的示例代码,演示如何在项目中使用flutter_infonline_library插件。

import 'dart:io';
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter_infonline_library/flutter_infonline_library.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();

  if (Platform.isAndroid) {
    await InfonlineLibrary.instance.android.setDebugModeEnabled(true);

    await InfonlineLibrary.instance.session(IOLSessionType.szm).android.initIOLSession(
      offerIdentifier: '<yourIdentifier>', debug: true, type: IOLPrivacyType.ack
    );

    // 启用发送已记录的事件
    // await InfonlineLibrary.instance.session(IOLSessionType.szm).sendLoggedEvents();
    // 终止会话
    // await InfonlineLibrary.instance.session(IOLSessionType.szm).terminateSession();

    // 延迟2秒
    await Future.delayed(const Duration(seconds: 2));
    // 设置自定义同意
    await InfonlineLibrary.instance.session(IOLSessionType.szm).setCustomConsent('FF00810000');

    // 延迟2秒
    await Future.delayed(const Duration(seconds: 2));
    // 记录视图事件
    await InfonlineLibrary.instance.session(IOLSessionType.szm).logViewEvent(
      type: IOLViewEventType.appeared,
      category: '<category>'
    );

    // 启用发送已记录的事件
    // await InfonlineLibrary.instance.session(IOLSessionType.szm).sendLoggedEvents();
  }
  if (Platform.isIOS) {
    await InfonlineLibrary.instance.ios.setDebugLogLevel(IOLDebugLevel.trace);

    // 延迟2秒
    await Future.delayed(const Duration(seconds: 2));
    // 启动iOS会话
    await InfonlineLibrary.instance.session(IOLSessionType.szm).ios.startSession(
      offerIdentifier: '<yourIdentifier>', type: IOLPrivacyType.ack
    );

    // 延迟2秒
    await Future.delayed(const Duration(seconds: 2));
    // 设置自定义同意
    await InfonlineLibrary.instance.session(IOLSessionType.szm).setCustomConsent('FF00810000');

    // 延迟2秒
    await Future.delayed(const Duration(seconds: 2));
    // 记录视图事件
    await InfonlineLibrary.instance.session(IOLSessionType.szm).logViewEvent(
      type: IOLViewEventType.appeared,
      category: '<category>'
    );

    // 获取最近的日志
    // List<String> logs = await InfonlineLibrary.instance.ios.mostRecentLogs(0);
    // print('InfonlineLibrary Logs: ${logs.join("\n\n")}');
  }

  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  [@override](/user/override)
  void initState() {
    super.initState();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Infonline Plugin'),
        ),
        body: const Center(
          child: Text('Running'),
        ),
      ),
    );
  }
}

更多关于Flutter信息在线获取插件flutter_infonline_library的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter信息在线获取插件flutter_infonline_library的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


flutter_infonline_library 是一个用于在 Flutter 应用中获取在线信息的插件。它通常用于从远程服务器获取数据、执行网络请求等操作。以下是如何使用 flutter_infonline_library 的基本步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  flutter_infonline_library: ^1.0.0  # 请使用最新版本

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

2. 导入库

在你的 Dart 文件中导入 flutter_infonline_library

import 'package:flutter_infonline_library/flutter_infonline_library.dart';

3. 初始化插件

在使用插件之前,通常需要进行初始化。初始化通常在 main.dart 文件中进行。

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  InfonlineLibrary.initialize(
    apiKey: 'YOUR_API_KEY',  // 替换为你的API Key
    baseUrl: 'https://api.example.com',  // 替换为你的API基础URL
  );
  runApp(MyApp());
}

4. 使用插件获取数据

你可以使用 InfonlineLibrary 提供的方法来获取数据。例如,使用 getData 方法从服务器获取数据。

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Infonline Library Example'),
        ),
        body: FutureBuilder<Map<String, dynamic>>(
          future: InfonlineLibrary.getData('/data-endpoint'),  // 替换为你的API端点
          builder: (context, snapshot) {
            if (snapshot.connectionState == ConnectionState.waiting) {
              return Center(child: CircularProgressIndicator());
            } else if (snapshot.hasError) {
              return Center(child: Text('Error: ${snapshot.error}'));
            } else if (!snapshot.hasData) {
              return Center(child: Text('No data available'));
            } else {
              var data = snapshot.data!;
              return ListView.builder(
                itemCount: data.length,
                itemBuilder: (context, index) {
                  return ListTile(
                    title: Text(data.keys.elementAt(index)),
                    subtitle: Text(data.values.elementAt(index).toString()),
                  );
                },
              );
            }
          },
        ),
      ),
    );
  }
}

5. 处理网络请求

flutter_infonline_library 通常提供了一些方法来处理网络请求,例如 getpostputdelete 等。你可以根据需要进行调用。

Future<void> fetchData() async {
  try {
    var response = await InfonlineLibrary.get('/data-endpoint');
    print('Response: $response');
  } catch (e) {
    print('Error: $e');
  }
}

6. 处理错误和异常

在使用网络请求时,务必处理可能出现的错误和异常。你可以使用 try-catch 块来捕获异常,并根据需要显示错误信息。

Future<void> fetchData() async {
  try {
    var response = await InfonlineLibrary.get('/data-endpoint');
    print('Response: $response');
  } catch (e) {
    print('Error: $e');
    // 显示错误信息给用户
  }
}
回到顶部