flutter_umeng_plugin 1.0.1

  • Readme
  • Changelog
  • Example
  • Installing
  • 58

Flutter Umeng Plugin #

Language: | 中文简体

一个基于友盟IOS/Android 开发的一款分享 埋点插件

分享支持平台 #

微信 微信朋友圈 QQ 微博

分享配置 #

  • 友盟平台
  注册应用信息 得到 
  UMkey
  • 第三方开放平台
  登录所需的第三方开放平台,添加各自的应用信息得到
   wxAppKey 
   wxAppSecret
  • IOS配置
  在Xcode端 添加URL Types

版本更新历史 #

按时间顺序,展示重要的提交更新内容。

运行方式 #

  • 查看一下版本号是否正确
  flutter --version
  • 运行以下命令查看是否需要安装其它依赖项来完成安装
  flutter doctor
  • 运行启动您的应用
  flutter packages get 
  flutter run

Usage #

  • 分享
  平台调用支持
  iOS
  UmengPlugin.shareText(shareString: "分享测试数据");
  UmengPlugin.shareImage(shareImage: "https://mobile.umeng.com/images/pic/home/social/img-1.png");
  UmengPlugin.shareImageText(shareText: "分享文字",shareImage: "https://mobile.umeng.com/images/pic/home/social/img-1.png");
  UmengPlugin.shareWeb(shareTitle: '分享标题',descr:'分享简介',icon: 'AppIcon',webUrl: 'www.baidu.com' );
  UmengPlugin.shareMusic(shareTitle: '分享标题',descr:'分享简介',icon: 'AppIcon',musicUrl: 'http://c.y.qq.com/v8/playsong.html?songid=108782194&source=yqq#wechat_redirect');
  UmengPlugin.shareVideo(shareTitle: '分享标题',descr:'分享简介',icon: 'AppIcon',videoUrl: 'http://video.sina.com.cn/p/sports/cba/v/2013-10-22/144463050817.html');
  
  android 
  UmengPlugin.shareText(shareString: "分享测试数据");
  UmengPlugin.shareWeb(shareTitle: '分享标题',descr:'分享简介',icon: 'AppIcon',webUrl: 'www.baidu.com' );

  • 登录
   UmengPlugin.loginWechat; //返回为Map
   UmengPlugin.loginQQ;
   UmengPlugin.loginSina;
  • 埋点
UmengPlugin.beginPageView("flutterHomePage");
UmengPlugin.endPageView("flutterEndPage");
UmengPlugin.logPageView("flutterHomePage",seconds: 10);
UmengPlugin.analyticsEvent("flutterHomePage",label: 'lable');

基础环境 #

本项目环境V1.7.8+4

// 运行如下命令
flutter --version
dart --version
pub --version

// 正确环境如下
// Flutter (Channel beta, v1.7.8)
// Dart VM version: 2.4.0
// Pub 2.4.0

背景 #

Flutter 是什么?

2018年6月21日Google发布Flutter首个release预览版,作为Google 大力推出的一种全新的响应式,跨平台,高性能的移动开发框架。Flutter是一个跨平台的移动UI框架,旨在帮助开发者使用一套代码开发高性能、高保真的Android和iOS应用。

flutter优点主要包括:

  • 跨平台
  • 开源
  • Hot Reload、响应式框架、及其丰富的控件以及开发工具
  • 灵活的界面设计以及控件组合
  • 借助可以移植的GPU加速的渲染引擎以及高性能ARM代码运行时已达到高质量的用户体验

app 预览 #

Core Team #


@Eureka

版权说明 #

  • 感谢大家对 Flutter UMeng Plugin 的支持和下载。

  • 大家的互相信任,尊重与支持,才是开源社区前进的动力和来源.

Powered by Eureka

1.0.1 #

  • 切换homepage到gitee

1.0.0 #

  • 新版本 支持 iOS android 分享 埋点 移除推送 创建新plugin支持

0.0.1 #

  • 首次发布新版本 仅 支持 iOS 分享 埋点 推送

example/lib/main.dart

import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:flutter_umeng_plugin/flutter_umeng_plugin.dart';
import 'package:flutter_umeng_plugin/umeng_push_plugin.dart';


void main() => runApp(MyApp());

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

class _MyAppState extends State<MyApp> {


  @override
  void initState() {
    super.initState();
     initUMeng(); //初始化友盟控件
    //  initPushState();
     FlutterUmengPlugin.logPageView("flutterHomePage",seconds: 10);
  }

  
  //获取推送信息
  Future<void> initPushState() async {
      UmengPush().configure(
      onMessage: (String message) async {
        print("Message: $message");
        setState(() {
        });
        return true;
      },
      onLaunch: (String message) async {
        print("Launch: $message");
        setState(() {
        });
        return true;
      },
      onResume: (String message) async {
        print("Resume: $message");
        setState(() {
        });
        return true;
      },
      onToken: (String token) async {
        print("Token: $token");
        setState(() {
        
        });
        return true;
      },
    );
  }
// com.formal.flutter1r1y
// com.example.flutterUmengPluginExample
  //初始化友盟 同时初始化埋点
  Future<void> initUMeng() async {
    String umSocialSDKVersion;
    try {
      umSocialSDKVersion = await FlutterUmengPlugin.shareInit(
        umengAppkey: "", //your Umeng appkey
        umengMessageSecret: '', //your Umeng Message Secret Of Android 
        channel: "App Store", //your Umeng channel
        //以下key secret 需要在各自的开放平台申请
        wxAppKey: "",
        wxAppSecret: "",
        wxRedirectURL: "http://mobile.umeng.com/social",//默认回调
        qqAppID: "",
        qqRedirectURL: "http://mobile.umeng.com/social",
        wbAppKey: "",
        wbAppSecret: "",
        wbRedirectURL: "",//微博中设置
      );
      umSocialSDKVersion = await FlutterUmengPlugin.analyticsInit(
        umengAppkey: "", //your Umeng appkey
        channel: "App Store", //your Umeng channel
      );
    } on PlatformException {
      umSocialSDKVersion = 'fail';
    }
    if (!mounted) return;
    setState(() {
      print(umSocialSDKVersion);
    });
  }

  Future<void> shareText() async {
    String result;
    try {
      result = await FlutterUmengPlugin.shareText(shareString: "分享测试数据");
    } on PlatformException {
      result = 'fail';
    }
    if (!mounted) return;

    setState(() {
      print(result);
    });
  }

  Future<void> shareImage() async {
    String result;
    try {
      result = await FlutterUmengPlugin.shareImage(shareImage: "https://mobile.umeng.com/images/pic/home/social/img-1.png");
    } on PlatformException {
      result = 'fail';
    }
    if (!mounted) return;
    setState(() {
      print(result);
    });
  }

    Future<void> shareImageText() async {
    String result;
    try {
      result = await FlutterUmengPlugin.shareImageText(shareText: "分享文字",shareImage: "https://mobile.umeng.com/images/pic/home/social/img-1.png");
    } on PlatformException {
      result = 'fail';
    }
    if (!mounted) return;
    setState(() {
      print(result);
    });
  }

  // 其中 icon 需要配置在项目中
  Future<void> shareWebView() async {
    String result;
    try {
      result = await FlutterUmengPlugin.shareWeb(shareTitle: '分享标题',descr:'分享简介',icon: 'AppIcon',webUrl: 'https://www.baidu.com' );
    } on PlatformException {
      result = 'fail';
    }
    if (!mounted) return;
    setState(() {
      print(result);
    });
  }

    // 其中 icon 需要配置在项目中
  Future<void> shareMusicView() async {
    String result;
    try {
      result = await FlutterUmengPlugin.shareMusic(shareTitle: '分享标题',descr:'分享简介',icon: 'AppIcon',musicUrl: 'http://c.y.qq.com/v8/playsong.html?songid=108782194&source=yqq#wechat_redirect');
    } on PlatformException {
      result = 'fail';
    }
    if (!mounted) return;
    setState(() {
      print(result);
    });
  }

 // 其中 icon 需要配置在项目中
  Future<void> shareVideoView() async {
    String result;
    try {
      result = await FlutterUmengPlugin.shareVideo(shareTitle: '分享标题',descr:'分享简介',icon: 'AppIcon',videoUrl: 'http://video.sina.com.cn/p/sports/cba/v/2013-10-22/144463050817.html');
    } on PlatformException {
      result = 'fail';
    }
    if (!mounted) return;
    setState(() {
      print(result);
    });
  }

    Future<void> loginToWx() async {
    Map result;
    try {
      result = await FlutterUmengPlugin.loginWechat;
    } on PlatformException {
      result = {"status": 'fail'};
    }
    if (!mounted) return;
    setState(() {
      print(result);
    });
  }

      Future<void> loginToQQ() async {
    Map result;
    try {
      result = await FlutterUmengPlugin.loginQQ;
    } on PlatformException {
      result = {"status": 'fail'};
    }
    if (!mounted) return;
    setState(() {
      print(result);
    });
  }

      Future<void> loginToSina() async {
    Map result;
    try {
      result = await FlutterUmengPlugin.loginSina;
    } on PlatformException {
      result = {"status": 'fail'};
    }
    if (!mounted) return;
    setState(() {
      print(result);
    });
  }

  

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('FlutterUmengPlugin-share Push'),
        ),
        body: new ListView(
          padding: EdgeInsets.only(top: 10),
          children: <Widget>[
            new Center(
              child: RaisedButton(
                onPressed: () {
                  shareText();
                },
                child: Text("分享文本"),
              ),
            ),
            new Center(
              child: RaisedButton(
                onPressed: () {
                  shareImage();
                },
                child: Text("分享图片"),
              ),
            ),
            new Center(
              child: RaisedButton(
                onPressed: () {
                  shareImageText();
                },
                child: Text("分享图文"),
              ),
            ),
            new Center(
              child: RaisedButton(
                onPressed: () {
                  shareWebView();
                },
                child: Text("分享网页"),
              ),
            ),
            new Center(
              child: RaisedButton(
                onPressed: () {
                  shareMusicView();
                },
                child: Text("分享音乐"),
              ),
            ),
            new Center(
              child: RaisedButton(
                onPressed: () {
                  shareVideoView();
                },
                child: Text("分享视频"),
              ),
            ),
            // new Center(
            //   child: RaisedButton(
            //     onPressed: () {},
            //     child: Text("分享微信表情"),
            //   ),
            // ),
            // new Center(
            //   child: RaisedButton(
            //     onPressed: () {},
            //     child: Text("分享微信小程序"),
            //   ),
            // ),
            new Center(
              child: RaisedButton(
                onPressed: () {
                   loginToWx();
                },
                child: Text("微信登录"),
              ),
            ),
                        new Center(
              child: RaisedButton(
                onPressed: () {
                   loginToQQ();
                },
                child: Text("QQ登录"),
              ),
            ),
                        new Center(
              child: RaisedButton(
                onPressed: () {
                   loginToSina();
                },
                child: Text("微博登录"),
              ),
            ),
          ],
        ),
      ),
    );
  }
}

Use this package as a library

1. Depend on it

Add this to your package's pubspec.yaml file:


dependencies:
  flutter_umeng_plugin: ^1.0.1

2. Install it

You can install packages from the command line:

with Flutter:


$ flutter pub get

Alternatively, your editor might support flutter pub get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:


import 'package:flutter_umeng_plugin/flutter_umeng_plugin.dart';
  
Popularity:
Describes how popular the package is relative to other packages. [more]
33
Health:
Code health derived from static analysis. [more]
100
Maintenance:
Reflects how tidy and up-to-date the package is. [more]
60
Overall:
Weighted score of the above. [more]
58
Learn more about scoring.

We analyzed this package on Mar 31, 2020, and provided a score, details, and suggestions below. Analysis was completed with status completed using:

  • Dart: 2.7.1
  • pana: 0.13.6
  • Flutter: 1.12.13+hotfix.8

Health suggestions

Fix lib/umeng_push_plugin.dart. (-0.50 points)

Analysis of lib/umeng_push_plugin.dart reported 1 hint:

line 20 col 18: The value of the field '_platform' isn't used.

Format lib/flutter_umeng_plugin.dart.

Run flutter format to format lib/flutter_umeng_plugin.dart.

Maintenance issues and suggestions

The description contains too many non-ASCII characters. (-20 points)

The site uses English as its primary language. The value of the description field in your package's pubspec.yaml field should primarily contain characters used in English.

The package description is too short. (-20 points)

Add more detail to the description field of pubspec.yaml. Use 60 to 180 characters to describe the package, what it does, and its target use case.

Dependencies

Package Constraint Resolved Available
Direct dependencies
Dart SDK >=2.1.0 <3.0.0
flutter 0.0.0
meta ^1.0.4 1.1.8
platform ^2.0.0 2.2.1
Transitive dependencies
collection 1.14.11 1.14.12
sky_engine 0.0.99
typed_data 1.1.6
vector_math 2.0.8
Dev dependencies
flutter_test