Flutter OAID获取插件mas_oaid的使用

Flutter OAID获取插件mas_oaid的使用

插件说明

mas_oaid 是一个用于在 Flutter 中获取 OAID 的插件。


使用步骤

1. 配置项目环境

(1) 在 Android 项目中配置证书文件

./android/app/src/main/assets 目录下创建 assets 文件夹,并将从 移动安全联盟 获取的证书和 supplierconfig.json 文件放入其中。

(2) 确保项目 ID 和证书一致

  • 证书是为当前项目申请的。
  • 项目的 applicationId 必须与证书的名称一致。

2. 调用插件获取 OAID

在 Flutter 项目中引入插件并调用方法:

final _masOaidPlugin = MasOaid();
await _masOaidPlugin.getOAID();

完整示例代码

以下是一个完整的示例代码,展示如何在 Flutter 应用中使用 mas_oaid 插件获取 OAID。

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

import 'package:flutter/services.dart'; // 引入 Flutter 原生通信工具
import 'package:mas_oaid/mas_oaid.dart'; // 引入 mas_oaid 插件

void main() {
  runApp(const MyApp()); // 启动应用
}

class MyApp extends StatefulWidget {
  const MyApp({super.key}); // 构造函数

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState(); // 初始化状态
}

class _MyAppState extends State<MyApp> {
  String _platformVersion = 'Unknown'; // 存储 OAID 的变量
  final _masOaidPlugin = MasOaid(); // 创建 mas_oaid 插件实例

  [@override](/user/override)
  void initState() {
    super.initState();
  }

  // 初始化平台状态并获取 OAID
  Future<void> initPlatformState() async {
    String? platformVersion;
    try {
      platformVersion = await _masOaidPlugin.getOAID(); // 调用插件获取 OAID
      print('-----------------------');
      print(platformVersion); // 打印 OAID
      print('-----------------------');
    } on PlatformException { // 捕获异常
      platformVersion = 'Failed to get platform version.';
    }

    // 如果界面已销毁,则不更新 UI
    if (!mounted) return;

    setState(() {
      _platformVersion = platformVersion ?? "null"; // 更新状态
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp( // 主应用结构
      home: Scaffold(
        appBar: AppBar(
          title: const Text('OAID 获取示例'), // 设置标题
        ),
        body: Center(
          child: Column( // 布局列
            children: [
              Text('Running on: $_platformVersion\n'), // 显示 OAID
              ElevatedButton( // 按钮触发 OAID 获取
                onPressed: () async {
                  await initPlatformState(); // 调用初始化方法
                },
                child: const Text('获取 OAID'), // 按钮文本
              )
            ],
          ),
        ),
      ),
    );
  }
}
1 回复

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


在Flutter中,如果你想获取设备的OAID(Open Anonymous Device Identifier,开放匿名设备标识符),可以使用 mas_oaid 插件。这个插件主要用于在Android设备上获取OAID,适用于中国市场的Android设备。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  mas_oaid: ^1.0.0  # 请检查最新版本

然后运行 flutter pub get 来获取依赖。

2. 获取OAID

在你的Flutter代码中,你可以使用 mas_oaid 插件来获取OAID。以下是一个简单的示例:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('OAID Example'),
        ),
        body: Center(
          child: OAIDWidget(),
        ),
      ),
    );
  }
}

class OAIDWidget extends StatefulWidget {
  @override
  _OAIDWidgetState createState() => _OAIDWidgetState();
}

class _OAIDWidgetState extends State<OAIDWidget> {
  String _oaid = 'Unknown';

  @override
  void initState() {
    super.initState();
    _getOAID();
  }

  Future<void> _getOAID() async {
    try {
      String oaid = await MasOaid.getOAID;
      setState(() {
        _oaid = oaid;
      });
    } catch (e) {
      setState(() {
        _oaid = 'Failed to get OAID: $e';
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Text('OAID: $_oaid');
  }
}

3. 解释代码

  • MasOaid.getOAID 是一个异步方法,用于获取设备的OAID。
  • initState 中调用 _getOAID 方法,以便在Widget初始化时获取OAID。
  • 获取到OAID后,使用 setState 更新UI,显示OAID。

4. 注意事项

  • mas_oaid 插件仅适用于Android设备,iOS设备不支持OAID。
  • 在某些设备上,可能无法获取OAID,或者返回空字符串。
  • 请确保你的应用在Android设备上运行,并且设备支持OAID。

5. 权限

在某些情况下,获取OAID可能需要特定的权限。请确保在 AndroidManifest.xml 中添加必要的权限:

<uses-permission android:name="android.permission.READ_PHONE_STATE" />
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!